Как правильно вставить в Ардуино файл?

Нашёл тему под свой макет плоттера.

Но решил делать по другому - картинку онлайн конвертером перевожу в формат plt, потом блокнотом делаю из записи вида: PD100,200; запись вида PD(100,200); Далее пишу файл прямо в скетч и отрисовываю плоттером. Т.е. картинка для плоттера хранится в самом скетче (ПК не нужен). Хочется как то избавится от редактирования в блокноте. Как с помощью дефайна это сделать?


А куда Вы макрос пихать собрались? Тем же блокнотом вставлять?

Не проще ли сделать скрипт (хоть на том же JavaScript) в две строчки, который один текстовый файл в другой преобразует?

P.S. Я ведь правильно понял, что нужно один текстовый файл в другой переделать? Лучше бы примеры этих файлов - “из чего во что”.

Для того, чтобы от чего-то избавиться, дефайн не нужен.
Напишите лучше, что Вы хотите сделать.

PD759,5958;PD707,5887;PD645,5791;PD588,5692;PD536,5590;PD489,5486;PD447,5380;PD410,5272;PD377,5161;PD350,5048;PD335,4960;PD325,4856;PD318,4741;PD316,4621;PD318,4502;PD325,4387;
PD335,4283;PD350,4195;PD383,4060;PD423,3929;PD470,3801;PD523,3678;PD583,3558;PD650,3443;PD723,3332;PD801,3226;PD886,3125;PD977,3028;PD1073,2937;PD1175,2851;PD1283,2770;PD1396,2695;
PD1514,2626;PD1637,2563;PD1747,2513;PD1856,2469;PD1965,2432;PD2075,2400;PD2188,2374;PD2304,2354;PD2426,2338;PD2554,2327;PD2696,2320;PD2835,2320;PD2971,2326;PD3105,2340;PD3235,2359;
PD3362,2386;PD3487,2419;PD3609,2458;PD3728,2505;PD3845,2558;PD3958,2618;PD4070,2684;PD4179,2758;PD4285,2838;PD4389,2925;PD4490,3018;PD4644,3175;PD4792,3344;PD4932,3524;PD5066,3714;
PD5153,3841;PD5193,3893;PD5223,3856;PD5285,3765;PD5372,3636;PD5469,3505;PD5571,3375;PD5677,3249;PD5783,3131;PD5886,3023;PD5984,2929;PD6073,2852;PD6169,2780;PD6267,2713;PD6366,2651;
PD6467,2594;PD6571,2543;PD6676,2497;PD6783,2457;PD6892,2421;PD7003,2391;PD7116,2366;PD7231,2346;PD7348,2332;PD7467,2323;PD7589,2319;PD7712,2320;PD7837,2327;PD7967,2339;PD8088,2355;```

Вот это текст файла с расширением plt, т.е. векторная картинка. В "нотепаде" есть опция заменить везде один набор символов на другой. Ей я пользуюсь и преобразую к

PD(335,4283);PD(350,4195);PD(383,4060);PD(423,3929);PD(470,3801);PD(523,3678);PD(583,3558);PD(650,3443);PD(723,3332);PD(801,3226);PD(886,3125);PD(977,3028);PD(1073,2937);PD(1175,2851);PD(1283,2770);PD(1396,2695);
PD(1514,2626);PD(1637,2563);PD(1747,2513);PD(1856,2469);PD(1965,2432);PD(2075,2400);PD(2188,2374);PD(2304,2354);PD(2426,2338);PD(2554,2327);PD(2696,2320);PD(2835,2320);PD(2971,2326);PD(3105,2340);PD(3235,2359);
PD(3362,2386);PD(3487,2419);PD(3609,2458);PD(3728,2505);PD(3845,2558);PD(3958,2618);PD(4070,2684);PD(4179,2758);PD(4285,2838);PD(4389,2925);PD(4490,3018);PD(4644,3175);PD(4792,3344);PD(4932,3524);PD(5066,3714);
PD(5153,3841);PD(5193,3893);PD(5223,3856);PD(5285,3765);PD(5372,3636);PD(5469,3505);PD(5571,3375);PD(5677,3249);PD(5783,3131);PD(5886,3023);PD(5984,2929);PD(6073,2852);PD(6169,2780);PD(6267,2713);PD(6366,2651);
PD(6467,2594);PD(6571,2543);PD(6676,2497);PD(6783,2457);PD(6892,2421);PD(7003,2391);PD(7116,2366);PD(7231,2346);PD(7348,2332);PD(7467,2323);PD(7589,2319);PD(7712,2320);PD(7837,2327);PD(7967,2339);PD(8088,2355);
PD(8204,2376);PD(8315,2401);PD(8424,2432);PD(8531,2469);PD(8639,2513);PD(8749,2563);PD(8872,2626);PD(8990,2695);PD(9103,2771);PD(9210,2851);PD(9312,2938);PD(9409,3029);PD(9500,3126);PD(9584,3228);PD(9663,3334);

Т.е. вопрос в скобках. Как в скетче обойтись без скобок? При попытке дефайном написать PD100,200     PD(100,200) ругается и не компилирует. Получается скобки имеют какое то особое положение :)
Просто хотелось лишней редактуры избежать.

Зачем дефайны, чем прогмем не угодил?

“D” заменяешь на “D(”, а “;” - на “);”.

Я так и делаю, а хотелось так не делать.

1 лайк

С прогмем не понял.
В скетче написана функция void ris_1(){}
А в ней текстом файл, только со скобками.

Если речь о замене в строке на лету, то дефайны тем более не помогут. Нужно просто сделать в строке замену сначала всех вхождений PD на PD(, затем всех вхождений ; на );

Нет. Просто хотелось оставить исходный текст файла картинки. Затык в том, что С++ в моей вселенной не может разобрать PD100,200; как PD(100,200); -т.е. обращение к функции только в таком виде, а не в виде PD100,200;… магия скобок.

Так и оставляйте исходный текст нетронутым. Я говорю об обработке строки после ее считывания перед использованием. Или я опять не понял, что вам нужно ))

:slight_smile:
Вот тест-скетч целиком (в самом конце текст файла, сделанного со скобками). Изначально в нём нет скобок, именно так хотел его видеть в работающем варианте скетча.


[details="Спойлер"]
//тест моторов плоттера, управление с пульта
//36,8 шага на 1 миллиметр сдвига. Поле рисования 120мм*120мм, картинки 120*120 пикселей, изменение координат на 1 пиксель 14,11 единиц.
// Так получаем переводной коэффициент 2.608 шага на 1 изменения координаты.
#include <Servo.h>
#include <IRremote.h>
//
#define plus A2 //
#define minus A1 //
// выводы для подключения модуля ULN2003 к Arduino (мотор X координаты)
#define in1 8 //
#define in2 9 //
#define in3 10 //
#define in4 11 //
// выводы для подключения модуля ULN2003 к Arduino (мотор Y координаты)
#define in11 3 //
#define in22 4 //
#define in33 5 //
#define in44 6 //

int RECV_PIN = A0;               // Pin, an den der Empf�nger angeschlossen ist
IRrecv irrecv(RECV_PIN);         // Instanz der Receiver-Klasse
decode_results results;          // Zur Aufnahme des ermittelsten Codes

int dl=3;//длительность (мс) подачи тока в фазу мотора
bool f1=1;//переменные хранения состояния фаз радиального мотора (ток включен,ток отключен)
bool f2=1;//
bool f3=0;//
bool f4=0;//
bool f11=1;//переменные хранения состояния фаз углового мотора (ток включен,ток отключен)
bool f22=1;//
bool f33=0;//
bool f44=0;//
float M=1.0;//коэффициент масштабирования

// setup servo
int servoPin = 7;
int PEN_DOWN = 150; // angle of servo when pen is down
int PEN_UP = 60;   // angle of servo when pen is up
Servo penServo;
long Y=0;//переменная хранения моментов времени
byte FLAG=2;//
int X1=0;int Y1=0;//
 
void setup() {
    pinMode(in1, OUTPUT);
    pinMode(in2, OUTPUT);
    pinMode(in3, OUTPUT);
    pinMode(in4, OUTPUT);
    pinMode(in11, OUTPUT);
    pinMode(in22, OUTPUT);
    pinMode(in33, OUTPUT);
    pinMode(in44, OUTPUT);
  //
pinMode(plus,OUTPUT);//
digitalWrite(plus,HIGH);// плюс питания ик приёмника
pinMode(minus,OUTPUT);//
digitalWrite(minus,LOW);// минус питания ик приёмника
irrecv.enableIRIn(); // Startet den Receiver
  penServo.attach(servoPin);
   penServo.write(PEN_UP);  
}

void loop() {
 ///////////////////////////////////
  if (irrecv.decode(&results))   //Если произошло событие/кнопка была нажата
  {
    switch ( results.value )
    {
   //////////////////////////
    case 0x8A857://исполнить команду вперёд-по часовой (Y)
  FLAG=3;Y=millis();
        break;
     case 0x88877://исполнить команду назад-против часовой  (Y)
  FLAG=4;Y=millis();
        break;  
      case  0x848B7://исполнить команду вправо (X)
  FLAG=2;Y=millis();  
        break; 
   case  0x828D7://исполнить команду влево  (X)
  FLAG=1;Y=millis();    
        break;             
     case 0xFFFFFFFF:// если кнопку удерживают, то не отключать команду ещё 200 мс
      Y=millis();
        break;
   //////////////     
   case 0x8C837://кнопка OK - управление маркером
      if( penServo.read()==PEN_DOWN){ penup();}//вверх маркер
      else{
      if(penServo.read()==PEN_UP){ pendown();}//вниз маркер
      }
        break;
  /////////////////////
    case 0x8C03F://кнопка 1
        ris_1();
        break;
      case 0x820DF://кнопка 2
        ris_2();
        break;
     case 0x8A05F://кнопка 3
     
        break;                           
  }
    irrecv.resume();//Считываем следующую значение/кнопку
   }
   if(millis()-Y>200){ FLAG=0;}//если кнопка не удерживается, то через 200 мс отключить команду         
 /////////////////////////////////////////////////////
if( FLAG==2){schag_1(); delay(dl);} 
if( FLAG==1){schag_2(); delay(dl);}
if( FLAG==3){schag_11(); delay(dl);} 
if( FLAG==4){schag_22(); delay(dl);}
if( FLAG==0){stoptok();}
}
///////////////////////////////////////
void schag_1(){//шаг по часовой стрелке
 bool c=f4;f4=f3;f3=f2;f2=f1;f1=c; 
 digitalWrite(in1, f1); digitalWrite(in2, f2); digitalWrite(in3, f3); digitalWrite(in4, f4);
 
}
//////////////////////////////////////
void schag_2(){//шаг против часовой стрелки
 bool c=f1;f1=f2;f2=f3;f3=f4;f4=c; 
 digitalWrite(in1, f1); digitalWrite(in2, f2); digitalWrite(in3, f3); digitalWrite(in4, f4);
 
}
//////////////////////////////////////
void stoptok(){
 digitalWrite(in1, 0); digitalWrite(in2, 0); digitalWrite(in3, 0); digitalWrite(in4, 0);
 digitalWrite(in11, 0); digitalWrite(in22, 0); digitalWrite(in33, 0); digitalWrite(in44, 0);
 }
//////////////////////////////////////
void schag_11(){//шаг по часовой стрелке
 bool cc=f44;f44=f33;f33=f22;f22=f11;f11=cc; 
 digitalWrite(in11, f11); digitalWrite(in22, f22); digitalWrite(in33, f33); digitalWrite(in44, f44);

}
//////////////////////////////////////
void schag_22(){//шаг против часовой стрелки
 bool cc=f11;f11=f22;f22=f33;f33=f44;f44=cc; 
 digitalWrite(in11, f11); digitalWrite(in22, f22); digitalWrite(in33, f33); digitalWrite(in44, f44);
 
}
/////////////////////////////////////
void PD(int X2,int Y2){
X2=X2*M;Y2=Y2*M;   
int Nx=abs(X1-X2)*2.608;//число шагов соответствующего мотора на заданные изменение координат
int Ny=abs(Y1-Y2)*2.608;
if(Nx==0){Nx=1;}if(Ny==0){Ny=1;}
int Kx=0;int Ky=0;//счётчики шагов
long Ym1;long Ym2; Ym1=Ym2=micros();
long DL_1=0;long DL_2=0;
if(Nx>Ny){DL_1=3000;DL_2=(DL_1*Nx)/Ny;}else{DL_2=3000;DL_1=(DL_2*Ny)/Nx;}
while(Kx<Nx&&Ky<Ny){
if(micros()-Ym1>DL_1&&Kx<Nx){Ym1=micros();Kx++;if(X1-X2>0){schag_1();}else{schag_2();}}
if(micros()-Ym2>DL_2&&Ky<Ny){Ym2=micros();Ky++;if(Y1-Y2>0){schag_11();}else{schag_22();}}  
}
X1=X2;Y1=Y2;    
}
//////////////////////////////////////
void PU(int X2,int Y2){
penup();PD(X2,Y2);pendown();  
}
//////////////////////////////////////
void penup(){//вверх маркер
  penServo.attach(servoPin);
  for(int i=PEN_DOWN;i>=PEN_UP;i--){
  penServo.write(i);
  delay(2*dl/1);
  }
 penServo.detach(); 
}
///////////////////
void pendown(){//вниз маркер
  penServo.attach(servoPin);
for(int i=PEN_UP;i<=PEN_DOWN;i++){
  penServo.write(i);
  delay(2*dl/1);
  } 
 penServo.detach(); 
}
///////////////////////////////////////
////РИСУНКИ
void ris_1(){//собака-морда
 M=2.0;// 
PD(437,761);pendown();
PD(434,716);PD(424,685);PD(405,666);PD(377,655);PD(354,652);PD(337,654);PD(322,662);PD(308,677);PD(290,708);PD(282,738);PD(282,755);PD(279,761);PD(271,756);PD(255,741);PD(243,723);PD(231,696);PD(221,662);
PD(213,622);PD(198,555);PD(182,521);PD(173,507);PD(174,488);PD(176,472);PD(169,466);PD(159,462);PD(155,452);PD(162,442);PD(176,437);PD(195,446);PD(211,465);PD(221,489);PD(219,509);PD(218,525);PD(226,543);
PD(240,558);PD(255,564);PD(265,556);PD(268,537);PD(265,517);PD(255,505);PD(244,493);PD(234,470);PD(231,455);PD(231,445);PD(236,439);PD(244,437);PD(263,454);PD(281,495);PD(298,537);PD(317,557);PD(329,560);
PD(341,557);PD(355,550);PD(370,538);PD(407,512);PD(453,491);PD(495,471);PD(524,443);PD(539,419);PD(553,409);PD(561,399);PD(564,374);PD(560,349);PD(549,339);PD(541,330);PD(543,310);PD(546,291);PD(538,282);
PD(527,276);PD(522,261);PD(515,229);PD(497,192);PD(469,153);PD(436,116);PD(398,81);PD(360,54);PD(324,35);PD(292,28);PD(255,33);PD(229,45);PD(216,66);PD(212,89);PD(219,110);PD(234,123);PD(253,123);PD(269,111);
PD(277,91);PD(277,66);PD(275,56);PD(276,50);PD(280,46);PD(286,47);PD(295,54);PD(300,68);PD(302,87);PD(301,109);PD(292,151);PD(274,179);PD(261,190);PD(256,198);PD(258,204);PD(268,212);PD(292,225);PD(322,234);
PD(344,244);PD(353,257);PD(344,265);PD(322,262);PD(272,250);PD(232,244);PD(205,245);PD(192,253);PD(190,259);PD(196,264);PD(209,267);PD(230,268);PD(276,272);PD(321,283);PD(354,298);PD(367,313);PD(360,321);
PD(343,318);PD(304,308);PD(246,301);PD(193,300);PD(162,309);PD(157,317);PD(157,327);PD(165,338);PD(181,350);PD(203,370);PD(210,390);PD(202,408);PD(178,423);PD(142,431);PD(112,427);PD(101,420);PD(92,412);
PD(87,400);PD(85,387);PD(89,363);PD(100,353);PD(108,344);PD(106,325);PD(110,297);PD(129,265);PD(156,237);PD(183,226);PD(194,217);PD(197,198);PD(194,177);PD(183,162);PD(175,152);PD(176,140);PD(178,131);PD(171,127);
PD(160,122);PD(155,111);PD(148,95);PD(131,78);PD(120,68);PD(120,60);PD(133,52);PD(159,41);PD(196,25);PD(212,11);PD(243,4);PD(318,0);PD(392,4);PD(423,13);PD(438,27);PD(473,42);PD(519,68);PD(564,107);PD(588,133);
PD(603,144);PD(609,140);PD(608,123);PD(611,116);PD(619,113);PD(631,104);PD(642,82);PD(648,68);PD(653,68);PD(659,83);PD(666,116);PD(680,164);PD(693,183);PD(702,220);PD(706,310);PD(702,400);PD(693,437);PD(680,457);
PD(663,502);PD(653,532);PD(641,554);PD(628,570);PD(611,580);PD(598,587);PD(588,597);PD(581,608);PD(579,621);PD(575,641);PD(564,649);PD(555,652);PD(553,660);PD(546,685);PD(528,724);PD(507,760);PD(492,776);PD(479,779);
PD(460,785);PD(449,787);PD(442,784);PD(439,775);PD(437,761);
PU(508,676);
PD(517,635);PD(517,604);PD(509,585);PD(494,579);PD(486,583);PD(487,593);PD(487,603);PD(476,607);PD(459,612);PD(448,627);PD(442,647);PD(445,670);
PD(448,680);PD(452,691);PD(455,703);PD(459,713);PD(463,724);PD(469,731);PD(475,733);PD(482,731);PD(495,712);PD(508,676);
PU(264,621);
PD(252,604);PD(241,594);PD(234,593);PD(229,598);PD(228,626);PD(241,673);PD(250,695);
PD(256,704);PD(262,698);PD(270,680);PD(274,664);PD(274,649);PD(271,634);PD(264,621);
PU(315,494);
PD(295,482);PD(284,466);PD(282,449);PD(291,433);PD(304,431);PD(323,436);PD(351,450);PD(385,467);PD(405,477);PD(414,484);
PD(412,490);PD(399,495);PD(377,503);PD(359,506);PD(339,503);PD(315,494);
penup();
X1=0;Y1=0;M=1.0;
}
///////////////////////////////////////
void ris_2(){//логотип Ардуино
 M=0.16;// 
PD(2327,6893);pendown();
PD(2191,6868);PD(2057,6836);PD(1927,6796);PD(1798,6749);PD(1672,6694);PD(1548,6633);PD(1426,6564);PD(1305,6487);PD(1235,6435);PD(1156,6369);PD(1072,6292);PD(986,6209);PD(903,6123);PD(826,6038);
PD(759,5958);PD(707,5887);PD(645,5791);PD(588,5692);PD(536,5590);PD(489,5486);PD(447,5380);PD(410,5272);PD(377,5161);PD(350,5048);PD(335,4960);PD(325,4856);PD(318,4741);PD(316,4621);PD(318,4502);PD(325,4387);
PD(335,4283);PD(350,4195);PD(383,4060);PD(423,3929);PD(470,3801);PD(523,3678);PD(583,3558);PD(650,3443);PD(723,3332);PD(801,3226);PD(886,3125);PD(977,3028);PD(1073,2937);PD(1175,2851);PD(1283,2770);PD(1396,2695);
PD(1514,2626);PD(1637,2563);PD(1747,2513);PD(1856,2469);PD(1965,2432);PD(2075,2400);PD(2188,2374);PD(2304,2354);PD(2426,2338);PD(2554,2327);PD(2696,2320);PD(2835,2320);PD(2971,2326);PD(3105,2340);PD(3235,2359);
PD(3362,2386);PD(3487,2419);PD(3609,2458);PD(3728,2505);PD(3845,2558);PD(3958,2618);PD(4070,2684);PD(4179,2758);PD(4285,2838);PD(4389,2925);PD(4490,3018);PD(4644,3175);PD(4792,3344);PD(4932,3524);PD(5066,3714);
PD(5153,3841);PD(5193,3893);PD(5223,3856);PD(5285,3765);PD(5372,3636);PD(5469,3505);PD(5571,3375);PD(5677,3249);PD(5783,3131);PD(5886,3023);PD(5984,2929);PD(6073,2852);PD(6169,2780);PD(6267,2713);PD(6366,2651);
PD(6467,2594);PD(6571,2543);PD(6676,2497);PD(6783,2457);PD(6892,2421);PD(7003,2391);PD(7116,2366);PD(7231,2346);PD(7348,2332);PD(7467,2323);PD(7589,2319);PD(7712,2320);PD(7837,2327);PD(7967,2339);PD(8088,2355);
PD(8204,2376);PD(8315,2401);PD(8424,2432);PD(8531,2469);PD(8639,2513);PD(8749,2563);PD(8872,2626);PD(8990,2695);PD(9103,2771);PD(9210,2851);PD(9312,2938);PD(9409,3029);PD(9500,3126);PD(9584,3228);PD(9663,3334);
PD(9736,3445);PD(9803,3560);PD(9863,3679);PD(9916,3803);PD(9963,3930);PD(10003,4061);PD(10036,4195);PD(10051,4278);PD(10061,4362);PD(10066,4464);PD(10067,4600);PD(10065,4745);PD(10056,4879);PD(10041,5005);
PD(10018,5125);PD(9987,5243);PD(9947,5361);PD(9899,5482);PD(9840,5609);PD(9797,5692);PD(9753,5770);PD(9706,5845);PD(9656,5917);PD(9600,5989);PD(9540,6061);PD(9473,6134);PD(9399,6210);PD(9266,6335);PD(9129,6447);
PD(8987,6546);PD(8839,6634);PD(8685,6710);PD(8523,6775);PD(8351,6830);PD(8170,6875);PD(8082,6891);PD(7992,6901);PD(7873,6905);PD(7698,6907);PD(7532,6906);PD(7410,6902);PD(7316,6894);PD(7232,6881);PD(7087,6850);
PD(6947,6814);PD(6810,6770);PD(6677,6720);PD(6548,6662);PD(6422,6598);PD(6298,6526);PD(6178,6447);PD(6060,6360);PD(5944,6265);PD(5831,6162);PD(5719,6051);PD(5608,5931);PD(5499,5803);PD(5392,5667);PD(5285,5522);
PD(5223,5439);PD(5191,5405);PD(5157,5443);PD(5088,5536);PD(5005,5650);PD(4918,5762);PD(4828,5870);PD(4737,5974);PD(4645,6072);PD(4554,6163);PD(4466,6245);PD(4382,6318);PD(4233,6430);PD(4080,6531);PD(3922,6620);
PD(3759,6698);PD(3592,6764);PD(3420,6819);PD(3244,6862);PD(3062,6893);PD(2894,6908);PD(2689,6912);PD(2486,6908);PD(2327,6893);PU(3058,6088);PD(3144,6070);PD(3230,6048);PD(3313,6022);PD(3396,5991);PD(3477,5956);
PD(3557,5916);PD(3636,5872);PD(3714,5823);PD(3791,5769);PD(3866,5710);PD(3941,5647);PD(4015,5579);PD(4087,5506);PD(4159,5429);PD(4231,5346);PD(4301,5259);PD(4424,5093);PD(4559,4899);PD(4668,4733);PD(4713,4651);
PD(4679,4586);PD(4595,4448);PD(4485,4277);PD(4374,4113);PD(4251,3944);PD(4130,3792);PD(4011,3658);PD(3891,3541);PD(3771,3439);PD(3650,3353);PD(3527,3280);PD(3401,3222);PD(3331,3194);PD(3267,3173);PD(3204,3156);
PD(3138,3143);PD(2983,3129);PD(2773,3126);PD(2625,3127);PD(2515,3131);PD(2431,3139);PD(2362,3151);PD(2251,3178);PD(2145,3211);PD(2042,3250);PD(1944,3294);PD(1851,3344);PD(1763,3399);PD(1679,3460);PD(1600,3526);
PD(1526,3597);PD(1458,3673);PD(1395,3754);PD(1337,3839);PD(1285,3930);PD(1238,4025);PD(1198,4124);PD(1163,4228);PD(1145,4300);PD(1131,4382);PD(1121,4470);PD(1116,4562);PD(1115,4655);PD(1119,4746);PD(1127,4832);
PD(1140,4911);PD(1164,5011);PD(1194,5108);PD(1231,5201);PD(1273,5290);PD(1321,5376);PD(1376,5459);PD(1437,5538);PD(1504,5615);PD(1611,5719);PD(1722,5811);PD(1840,5890);PD(1965,5957);PD(2098,6013);PD(2240,6058);
PD(2392,6092);PD(2554,6116);PD(2651,6118);PD(2792,6113);PD(2940,6102);PD(3058,6088);PU(7874,6110);PD(8018,6088);PD(8160,6054);PD(8297,6007);PD(8431,5948);PD(8506,5909);PD(8577,5867);PD(8645,5822);PD(8710,5774);
PD(8772,5723);PD(8831,5669);PD(8886,5613);PD(8939,5553);PD(8987,5491);PD(9033,5426);PD(9075,5359);PD(9113,5289);PD(9149,5216);PD(9180,5141);PD(9208,5064);PD(9233,4984);PD(9248,4919);PD(9257,4848);PD(9261,4754);
PD(9263,4614);PD(9262,4468);PD(9257,4374);PD(9245,4304);PD(9224,4229);PD(9194,4140);PD(9160,4053);PD(9121,3970);PD(9078,3890);PD(9030,3813);PD(8979,3740);PD(8923,3670);PD(8864,3603);PD(8801,3541);PD(8734,3482);
PD(8664,3428);PD(8591,3377);PD(8514,3331);PD(8435,3289);PD(8352,3252);PD(8266,3219);PD(8186,3192);PD(8114,3171);PD(8045,3155);PD(7976,3143);PD(7818,3129);PD(7606,3126);PD(7442,3127);PD(7333,3131);PD(7254,3141);
PD(7178,3158);PD(7087,3184);PD(6998,3216);PD(6911,3253);PD(6826,3297);PD(6742,3347);PD(6659,3404);PD(6577,3469);PD(6494,3541);PD(6412,3621);PD(6329,3709);PD(6246,3806);PD(6161,3911);PD(6074,4026);PD(5985,4151);
PD(5895,4285);PD(5801,4429);PD(5710,4578);PD(5673,4651);PD(5710,4720);PD(5801,4862);PD(5915,5030);PD(6020,5177);PD(6104,5286);PD(6189,5387);PD(6273,5480);PD(6358,5567);PD(6444,5647);PD(6530,5720);PD(6617,5786);
PD(6705,5846);PD(6795,5900);PD(6886,5947);PD(6980,5989);PD(7075,6024);PD(7173,6053);PD(7273,6077);PD(7376,6096);PD(7482,6109);PD(7593,6118);PD(7685,6122);PD(7773,6119);PD(7874,6110);PU(2032,4685);PD(2032,4459);
PD(2752,4459);PD(3471,4459);PD(3471,4685);PD(3471,4911);PD(2752,4911);PD(2032,4911);PD(2032,4685);PU(7338,5158);PD(7338,4940);PD(7116,4936);PD(6893,4932);PD(6889,4689);PD(6886,4446);PD(7108,4442);PD(7331,4438);
PD(7335,4215);PD(7339,3993);PD(7582,3996);PD(7825,4001);PD(7829,4223);PD(7833,4445);PD(8050,4445);PD(8269,4445);PD(8269,4692);PD(8269,4939);PD(8050,4939);PD(7833,4939);PD(7829,5155);PD(7825,5369);PD(7582,5374);
PD(7338,5376);PD(7338,5158);PU(9250,1873);PD(9170,1840);PD(9098,1799);PD(9033,1749);PD(8975,1691);PD(8925,1623);PD(8882,1547);PD(8846,1462);PD(8818,1369);PD(8808,1315);PD(8802,1244);PD(8799,1161);PD(8798,1073);
PD(8801,985);PD(8806,902);PD(8814,831);PD(8825,778);PD(8848,705);PD(8877,637);PD(8910,576);PD(8949,520);PD(8992,470);PD(9041,426);PD(9094,388);PD(9151,357);PD(9202,335);PD(9250,323);PD(9313,319);PD(9412,317);
PD(9506,319);PD(9571,324);PD(9621,334);PD(9670,350);PD(9728,378);PD(9782,415);PD(9834,459);PD(9882,510);PD(9925,567);PD(9964,630);PD(9997,697);PD(10025,769);PD(10042,838);PD(10054,918);PD(10062,1007);PD(10065,1100);
PD(10063,1195);PD(10056,1288);PD(10044,1375);PD(10027,1452);PD(10006,1519);PD(9978,1581);PD(9946,1638);PD(9908,1691);PD(9866,1738);PD(9819,1780);PD(9767,1816);PD(9711,1846);PD(9664,1865);PD(9616,1876);PD(9556,1883);
PD(9469,1887);PD(9333,1885);PD(9250,1873);PU(9579,1617);PD(9603,1602);PD(9626,1584);PD(9647,1563);PD(9666,1538);PD(9700,1479);PD(9727,1408);PD(9746,1326);PD(9759,1233);PD(9764,1130);PD(9761,1017);PD(9750,904);
PD(9731,808);PD(9718,766);PD(9704,729);PD(9687,695);PD(9668,666);PD(9647,640);PD(9623,618);PD(9597,600);PD(9568,585);PD(9537,574);PD(9503,566);PD(9466,562);PD(9426,560);PD(9355,565);PD(9298,581);PD(9250,610);
PD(9203,656);PD(9178,688);PD(9157,723);PD(9140,763);PD(9128,810);PD(9113,930);PD(9109,1101);PD(9110,1219);PD(9114,1303);PD(9122,1365);PD(9134,1415);PD(9148,1452);PD(9165,1486);PD(9185,1519);PD(9209,1549);
PD(9234,1575);PD(9262,1598);PD(9291,1617);PD(9320,1631);PD(9380,1644);PD(9452,1645);PD(9523,1636);PD(9579,1617);PU(910,1860);PD(673,1088);PD(452,351);PD(492,342);PD(590,339);PD(728,339);PD(770,484);PD(813,628);
PD(1102,632);PD(1393,635);PD(1434,487);PD(1473,339);PD(1634,339);PD(1711,340);PD(1759,343);PD(1783,348);PD(1788,357);PD(1768,421);PD(1719,582);PD(1646,817);PD(1559,1101);PD(1399,1621);PD(1325,1853);PD(1311,1865);
PD(1280,1873);PD(1218,1876);PD(1113,1877);PD(1021,1876);PD(959,1873);PD(923,1868);PD(910,1860);PU(1219,1229);PD(1290,977);PD(1315,868);PD(1246,862);PD(1105,861);PD(965,864);PD(897,872);PD(921,980);PD(989,1222);
PD(1055,1446);PD(1088,1557);PD(1097,1582);PD(1102,1592);PD(1106,1593);PD(1109,1590);PD(1145,1481);PD(1219,1229);PU(1985,1867);PD(1978,1637);PD(1976,1098);PD(1976,339);PD(2124,339);PD(2272,339);PD(2272,656);
PD(2272,974);PD(2331,974);PD(2392,965);PD(2451,943);PD(2478,927);PD(2502,910);PD(2522,891);PD(2537,871);PD(2589,767);PD(2674,581);PD(2784,339);PD(2951,339);PD(3117,339);PD(3004,574);PD(2911,766);PD(2846,887);
PD(2795,962);PD(2743,1015);PD(2680,1071);PD(2733,1085);PD(2785,1103);PD(2832,1126);PD(2875,1155);PD(2912,1189);PD(2945,1226);PD(2971,1268);PD(2992,1313);PD(3006,1362);PD(3014,1414);PD(3016,1465);PD(3011,1515);
PD(3001,1563);PD(2985,1609);PD(2963,1653);PD(2936,1694);PD(2903,1733);PD(2875,1759);PD(2844,1781);PD(2810,1801);PD(2772,1818);PD(2682,1844);PD(2571,1863);PD(2423,1872);PD(2232,1876);PD(2063,1875);PD(1985,1867);
PU(2570,1621);PD(2600,1610);PD(2627,1596);PD(2649,1578);PD(2668,1558);PD(2683,1534);PD(2694,1507);PD(2701,1477);PD(2705,1444);PD(2705,1386);PD(2694,1336);PD(2674,1294);PD(2642,1260);PD(2600,1233);PD(2546,1212);
PD(2480,1198);PD(2402,1190);PD(2272,1181);PD(2272,1410);PD(2272,1637);PD(2393,1637);PD(2496,1632);PD(2570,1621);PU(3316,1108);PD(3316,339);PD(3596,339);PD(3742,340);PD(3844,344);PD(3919,352);PD(3985,367);
PD(4081,397);PD(4167,437);PD(4244,486);PD(4311,544);PD(4368,612);PD(4416,689);PD(4454,775);PD(4482,871);PD(4496,976);PD(4503,1109);PD(4500,1243);PD(4489,1349);PD(4474,1413);PD(4453,1475);PD(4429,1532);PD(4400,1586);
PD(4368,1635);PD(4332,1678);PD(4293,1717);PD(4252,1748);PD(4195,1782);PD(4134,1810);PD(4068,1832);PD(3993,1850);PD(3907,1862);PD(3806,1871);PD(3689,1875);PD(3553,1877);PD(3316,1877);PD(3316,1108);PU(3934,1616);
PD(3998,1590);PD(4052,1556);PD(4097,1510);PD(4133,1454);PD(4160,1385);PD(4179,1304);PD(4190,1210);PD(4194,1102);PD(4191,1009);PD(4181,927);PD(4165,854);PD(4142,790);PD(4111,735);PD(4074,687);PD(4028,648);
PD(3975,615);PD(3928,594);PD(3882,580);PD(3826,572);PD(3746,567);PD(3598,560);PD(3598,1099);PD(3598,1637);PD(3730,1637);PD(3845,1631);PD(3934,1616);PU(4702,1274);PD(4707,879);PD(4720,664);PD(4733,601);PD(4753,554);
PD(4779,515);PD(4815,473);PD(4854,433);PD(4896,400);PD(4943,372);PD(4995,349);PD(5052,332);PD(5114,320);PD(5182,313);PD(5256,310);PD(5318,312);PD(5376,318);PD(5432,327);PD(5484,340);PD(5532,356);PD(5578,376);
PD(5620,400);PD(5658,427);PD(5693,458);PD(5725,492);PD(5753,530);PD(5778,571);PD(5800,616);PD(5817,664);PD(5831,716);PD(5842,770);PD(5851,979);PD(5853,1369);PD(5849,1870);PD(5708,1870);PD(5567,1870);PD(5560,1291);
PD(5555,962);PD(5549,783);PD(5545,732);PD(5539,699);PD(5532,675);PD(5522,655);PD(5504,627);PD(5483,602);PD(5458,582);PD(5429,565);PD(5397,553);PD(5360,543);PD(5320,538);PD(5276,536);PD(5230,538);PD(5188,544);
PD(5151,554);PD(5119,568);PD(5090,587);PD(5064,610);PD(5042,638);PD(5024,670);PD(4988,741);PD(4984,1310);PD(4980,1877);PD(4839,1877);PD(4698,1877);PD(4702,1274);PU(6167,1764);PD(6167,1652);PD(6340,1648);
PD(6512,1644);PD(6517,1105);PD(6519,564);PD(6343,564);PD(6167,564);PD(6167,452);PD(6167,339);PD(6660,339);PD(7154,339);PD(7154,452);PD(7154,564);PD(6978,564);PD(6802,564);PD(6804,1105);PD(6809,1644);PD(6982,1648);
PD(7154,1652);PD(7154,1764);PD(7154,1877);PD(6660,1877);PD(6167,1877);PD(6167,1764);PU(7479,1108);PD(7479,339);PD(7606,339);PD(7733,339);PD(7733,881);PD(7736,1266);PD(7744,1431);PD(7827,1276);PD(8009,892);
PD(8263,346);PD(8443,341);PD(8622,337);PD(8622,1108);PD(8622,1877);PD(8495,1877);PD(8368,1877);PD(8368,1335);PD(8366,1014);PD(8360,837);PD(8354,794);PD(8346,778);PD(8337,786);PD(8324,816);PD(8245,993);
PD(8073,1363);PD(7836,1870);PD(7658,1874);PD(7479,1878);PD(7479,1108);
penup();
X1=0;Y1=0;M=1.0;
}
///////////////////////////////////////
[/details]

Так, PD - это вызов функции?

Не понимаю проблем вставить скобки (сделать по уму), но , если уж сильно хотите выпендриться, оставьте свою портянку без скобок в виде “сырой строки”, парсите её и вызывайте PD - делов-то. Показать?

нада написать конвертер,который глотает plt файл и выплевывает функцию вида

void ris_2() {

  int plt[2][2] = {{2191, 6668}, {2057, 6836}};

  M = 0.16;
  PD(plt[0][0], plt[0][1]);
  pendown();

  for (int i = 1; i < 2; i++) {
    PD(plt[i][0], plt[i][1]);
  }
  
  penup();

}

Не сообразил.
Покажите.

Так я это в самом первом ответе написал - в пару строк на JScript, но ТС это не нравится :frowning:

Хорошо, сегодня попозжей.

тады можно так

/*  так делать НИЗЯ!!!
String plt = "\
  PD759,5958;PD707,5887;PD645,5791;PD588,5692;PD536,5590;PD489,5486;PD447,5380;PD410,5272;PD377,5161;PD350,5048;PD335,4960;PD325,4856;PD318,4741;PD316,4621;PD318,4502;PD325,4387;\
  PD335,4283;PD350,4195;PD383,4060;PD423,3929;PD470,3801;PD523,3678;PD583,3558;PD650,3443;PD723,3332;PD801,3226;PD886,3125;PD977,3028;PD1073,2937;PD1175,2851;PD1283,2770;PD1396,2695;\
  PD1514,2626;PD1637,2563;PD1747,2513;PD1856,2469;PD1965,2432;PD2075,2400;PD2188,2374;PD2304,2354;PD2426,2338;PD2554,2327;PD2696,2320;PD2835,2320;PD2971,2326;PD3105,2340;PD3235,2359;\
  ";
*/
// а так можно, ЕвгенийП  поправил.
String plt = R"(
  PD759,5958;PD707,5887;PD645,5791;PD588,5692;PD536,5590;PD489,5486;PD447,5380;PD410,5272;PD377,5161;PD350,5048;PD335,4960;PD325,4856;PD318,4741;PD316,4621;PD318,4502;PD325,4387;
  PD335,4283;PD350,4195;PD383,4060;PD423,3929;PD470,3801;PD523,3678;PD583,3558;PD650,3443;PD723,3332;PD801,3226;PD886,3125;PD977,3028;PD1073,2937;PD1175,2851;PD1283,2770;PD1396,2695;
  PD1514,2626;PD1637,2563;PD1747,2513;PD1856,2469;PD1965,2432;PD2075,2400;PD2188,2374;PD2304,2354;PD2426,2338;PD2554,2327;PD2696,2320;PD2835,2320;PD2971,2326;PD3105,2340;PD3235,2359;
  )";

void setup() {

  Serial.begin(115200);
  bool endstr = false;
  String s;

  while (!endstr)
  {
    int idx = plt.indexOf(";");
    if (idx > 0)
    {
      s = plt.substring(0, idx);
    } else {
      s = plt;
      endstr = true;
    }
    s.trim();
    if (s.length() > 1) {
      s = s.substring(2);
      plt.remove(0, idx + 1);
      int sep = s.indexOf(",");

      int X = (s.substring(0, sep)).toInt();
      int Y = (s.substring(sep + 1)).toInt();
      // тут можно звать  PD(X,Y);

      Serial.print(X);
      Serial.print(" ");
      Serial.println(Y);
    }
  }
}

void loop() {
}

Не, так низзя! У Вас там в строках 2-4 в концах \ стоят, а чем это отличается от вставки скобок? ТС хочет, чтобы файл вставлялся как есть, безо всяких добавок.

Это вот так надо было делать.

String plt = R"(
  PD759,5958;PD707,5887;PD645,5791;PD588,5692;PD536,5590;PD489,5486;PD447,5380;PD410,5272;PD377,5161;PD350,5048;PD335,4960;PD325,4856;PD318,4741;PD316,4621;PD318,4502;PD325,4387;
  PD335,4283;PD350,4195;PD383,4060;PD423,3929;PD470,3801;PD523,3678;PD583,3558;PD650,3443;PD723,3332;PD801,3226;PD886,3125;PD977,3028;PD1073,2937;PD1175,2851;PD1283,2770;PD1396,2695;
  PD1514,2626;PD1637,2563;PD1747,2513;PD1856,2469;PD1965,2432;PD2075,2400;PD2188,2374;PD2304,2354;PD2426,2338;PD2554,2327;PD2696,2320;PD2835,2320;PD2971,2326;PD3105,2340;PD3235,2359;
  )";

1 лайк

пасиба, не знал, да так правильней.