Advertisement
Guest User

Untitled

a guest
Feb 26th, 2020
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.06 KB | None | 0 0
  1.  
  2. #include <Wire.h>
  3. #include <Adafruit_PWMServoDriver.h>
  4. // called this way, it uses the default address 0x40
  5. Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x42);
  6. Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);
  7. // you can also call it with a different address you want
  8. //Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41);
  9. // you can also call it with a different address and I2C interface
  10. //Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40, &Wire);
  11.  
  12. // Depending on your servo make, the pulse width min and max may vary, you
  13. // want these to be as small/large as possible without hitting the hard stop
  14. // for max range. You'll have to tweak them as necessary to match the servos you
  15. // have!
  16. #define LSTOPAMIN 290
  17. #define LSTOPAMAX 340
  18. #define LKOSTKAMIN 190
  19. #define LKOSTKAMAX 400
  20. #define LKOLANOMIN 444
  21. #define LKOLANOMAX 230
  22. #define LUDOMIN 370
  23. #define LUDOMAX 210
  24. #define LMIEDNICAMIN 240
  25. #define LMIEDNICAMAX 360
  26.  
  27.  
  28. #define RSTOPAMIN 255
  29. #define RSTOPAMAX 304
  30. #define RKOSTKAMIN 430
  31. #define RKOSTKAMAX 200
  32. #define RKOSTKAW 255
  33. #define RKOLANOMIN 425
  34. #define RKOLANOMAX 195
  35. #define RUDOMIN 290
  36. #define RUDOMAX 130
  37. #define RMIEDNICAMIN 230
  38. #define RMIEDNICAMAX 350
  39.  
  40.  
  41.  
  42.  
  43. #define LBARKWMIN 95
  44. #define LBARKWMAX 440
  45. #define LBARKZMIN 455
  46. #define LBARKZMAX 105
  47. #define LLOKIECMIN 90
  48. #define LLOKIECMAX 260
  49. #define LNADGARSTEKMIN 105
  50. #define LNADGARSTEKMAX 465
  51.  
  52.  
  53. #define RBARKWMIN 105
  54. #define RBARKWMAX 455
  55. #define RBARKZMIN 95
  56. #define RBARKZMAX 455
  57. #define RLOKIECMIN 465
  58. #define RLOKIECMAX 300
  59. #define RNADGARSTEKMIN 445
  60. #define RNADGARSTEKMAX 100
  61. int i = 180;
  62. int pozycja_reka=0;
  63. int pozycja_noga=0;
  64. int LSTOPA = 0;
  65. int LKOSTKA = 0;
  66. int LKOLANO = 0;
  67. int LUDO = 0;
  68. int LMIEDNICA = 0;
  69.  
  70. int RSTOPA = 0;
  71. int RKOSTKA = 0;
  72. int RKOLANO = 0;
  73. int RUDO = 0;
  74. int RMIEDNICA = 0;
  75.  
  76.  
  77.  
  78. int LBARKW=0;
  79. int LBARKZ=0;
  80. int LLOKIEC=0;
  81. int LNADGARSTEK=0;
  82.  
  83. int RBARKW=0;
  84. int RBARKZ=0;
  85. int RLOKIEC=0;
  86. int RNADGARSTEK=0;
  87. ///////////////kąty dla danego położenia rąk//////////////////////////////////////////////////
  88. int rece_pozycje[8][8] =
  89. {
  90. {0,0,0,90,0,0,0,90},
  91. {0,0,90,90,0,0,90,90},
  92. {180,0,0,90,180,0,0,90},
  93. };
  94. /////////////////wartości potrzebne do obliczenia opóznienia ręki///////////////////////////////////
  95. float rece_timer[3][8]
  96. {0,0,0,90,0,0,0,90};
  97. //////////////////////sterowanie opóznieniem ręki ///////////////////////////////////////////////////
  98. unsigned long rece_delay[3][8]=
  99. { //// w mikrosekundach, aby nie było problemu z np współczynnikiem 1,125
  100. {0,0,0,0,0,0,0,0},
  101. {0,0,0,0,0,0,0,0},
  102. {0,0,0,0,0,0,0,0},
  103. };
  104. unsigned long przerwa=10; /// dzielnik przerwy poszczególnego kroku
  105.  
  106. ///////////////kąty dla danego położenia nóg//////////////////////////////////////////////////
  107. int nogi_pozycje[8][10]=
  108. {{90,130,180,65,90,90,130,180,65,90}, ///// pozycja 0 - wyprostowana pozycja
  109. {90,5,0,0,90,90,5,0,0,90},
  110. };
  111.  
  112. /////////////////////////wartości potrzebne do obliczenia opóznienia nóg///////////////////////////
  113. float nogi_timer[3][10]
  114. {90,130,180,65,90,90,130,180,65,90};
  115.  
  116. ////////////////////////////////sterowanie opoźnienie nóg////////////////////////////////////////////
  117. unsigned long nogi_delay[3][10]=
  118. { //// w mikrosekundach, aby nie było problemu z np współczynnikiem 1,125
  119. {0,0,0,0,0,0,0,0,0,0},
  120. {0,0,0,0,0,0,0,0,0,0},
  121. {0,0,0,0,0,0,0,0,0,0},
  122. };
  123.  
  124. unsigned long przerwa_nogi=50;
  125.  
  126. int D = 6;
  127. void setup() {
  128. Serial.begin(9600);
  129. pwm.begin();
  130. pwm2.begin();
  131. pwm.setPWMFreq(50); // Analog servos run at ~60 Hz updates
  132. pwm2.setPWMFreq(50);
  133. }
  134. void loop() {
  135. delay(1000);
  136. // for(pozycja_reka=0;pozycja_reka<=2;pozycja_reka++)
  137. // {
  138. // rece(rece_pozycje[pozycja_reka][0],rece_pozycje[pozycja_reka][1],
  139. // rece_pozycje[pozycja_reka][2],rece_pozycje[pozycja_reka][3],
  140. // rece_pozycje[pozycja_reka][4],rece_pozycje[pozycja_reka][5],
  141. // rece_pozycje[pozycja_reka][6],rece_pozycje[pozycja_reka][7]);
  142. // delay(4000);
  143. // }
  144. for(pozycja_noga=0;pozycja_noga<=0 ;pozycja_noga++){
  145. nogi(nogi_pozycje[pozycja_noga][0],nogi_pozycje[pozycja_noga][1],nogi_pozycje[pozycja_noga][2],nogi_pozycje[pozycja_noga][3],nogi_pozycje[pozycja_noga][4],
  146. nogi_pozycje[pozycja_noga][5],nogi_pozycje[pozycja_noga][6],nogi_pozycje[pozycja_noga][7],nogi_pozycje[pozycja_noga][8],nogi_pozycje[pozycja_noga][9]);
  147. delay(6000);
  148. }
  149. }
  150. void write_data_nogi()
  151. { pwm.setPWM(0, 0, LSTOPA);
  152. pwm.setPWM(1, 0, LKOSTKA);
  153. pwm.setPWM(2, 0, LKOLANO);
  154. pwm.setPWM(3, 0, LUDO);
  155. pwm.setPWM(4, 0, LMIEDNICA);
  156. pwm.setPWM(5, 0, RSTOPA);
  157. pwm.setPWM(6, 0, RKOSTKA);
  158. pwm.setPWM(7, 0, RKOLANO);
  159. pwm.setPWM(8, 0, RUDO);
  160. pwm.setPWM(9, 0, RMIEDNICA);
  161.  
  162. }
  163.  
  164. void write_data_rece()
  165. {
  166. pwm2.setPWM(0, 0, LBARKW);
  167. pwm2.setPWM(1, 0, LBARKZ);
  168. pwm2.setPWM(2, 0, LLOKIEC);
  169. pwm2.setPWM(3, 0, LNADGARSTEK);
  170. pwm2.setPWM(4, 0, RBARKW);
  171. pwm2.setPWM(5, 0, RBARKZ);
  172. pwm2.setPWM(6, 0, RLOKIEC);
  173. pwm2.setPWM(7, 0, RNADGARSTEK);
  174. }
  175.  
  176. int nogi(int a,int b,int c,int d, int e, int f, int g, int h, int i, int j)
  177. {
  178.  
  179. /////////////////// różnica zmiany kąta nogi ///////////////////////////////
  180. nogi_timer[1][0]=fabs(a-nogi_timer[0][0]);
  181. nogi_timer[1][1]=fabs(b-nogi_timer[0][1]);
  182. nogi_timer[1][2]=fabs(c-nogi_timer[0][2]);
  183. nogi_timer[1][3]=fabs(d-nogi_timer[0][3]);
  184. nogi_timer[1][4]=fabs(e-nogi_timer[0][4]);
  185. nogi_timer[1][5]=fabs(f-nogi_timer[0][5]);
  186. nogi_timer[1][6]=fabs(g-nogi_timer[0][6]);
  187. nogi_timer[1][7]=fabs(h-nogi_timer[0][7]);
  188. nogi_timer[1][8]=fabs(i-nogi_timer[0][8]);
  189. nogi_timer[1][9]=fabs(j-nogi_timer[0][9]);
  190. //////////////////// obliczanie współczynnika opóźnienia nogi //////////////////////////////////////////
  191. if(nogi_timer[1][0]==0)
  192. {nogi_timer[2][0]=0;
  193. LSTOPA=map(a, 0,180, LSTOPAMIN, LSTOPAMAX);}
  194. else {nogi_timer[2][0]=round(180/nogi_timer[1][0]*1000);}
  195. //////////////////////////////////
  196. if(nogi_timer[1][1]==0)
  197. {nogi_timer[2][1]=0;
  198. LKOSTKA=map(b, 0,180, LKOSTKAMIN, LKOSTKAMAX);}
  199. else{nogi_timer[2][1]=round(180/nogi_timer[1][1]*1000);}
  200. ///////////////////////////////////
  201. if(nogi_timer[1][2]==0)
  202. {nogi_timer[2][2]=0;
  203. LKOLANO=map(c, 0,180, LKOLANOMIN, LKOLANOMAX);}
  204. else{nogi_timer[2][2]=round(180/nogi_timer[1][2]*1000);}
  205. ////////////////////////////////////
  206. if(nogi_timer[1][3]==0)
  207. {nogi_timer[2][3]=0;
  208. LUDO=map(d, 0,180, LUDOMIN, LUDOMAX);}
  209. else{nogi_timer[2][3]=round(180/nogi_timer[1][3]*1000);}
  210. /////////////////////////////
  211. if(nogi_timer[1][4]==0)
  212. {nogi_timer[2][4]=0;
  213. LMIEDNICA=map(e, 0,180, LMIEDNICAMIN, LMIEDNICAMAX);}
  214. else{nogi_timer[2][4]=round(180/nogi_timer[1][4]*1000);}
  215. /////////////////////////////////
  216. if(nogi_timer[1][5]==0)
  217. {nogi_timer[2][5]=0;
  218. RSTOPA=map(f, 0,180, RSTOPAMIN, RSTOPAMAX);}
  219. else{nogi_timer[2][5]=round(180/nogi_timer[1][5]*1000);}
  220. ////////////////////////////////////
  221. if(nogi_timer[1][6]==0)
  222. {nogi_timer[2][6]=0;
  223. RKOSTKA=map(g, 0,180, RKOSTKAMIN, RKOSTKAMAX);}
  224. else{nogi_timer[2][6]=round(180/nogi_timer[1][6]*1000);}
  225. ////////////////////////
  226. if(nogi_timer[1][7]==0)
  227. {nogi_timer[2][7]=0;
  228. RKOLANO=map(h, 0,180, RKOLANOMIN, RKOLANOMAX);}
  229. else{nogi_timer[2][7]=round(180/nogi_timer[1][7]*1000);}
  230. ///////////////////////////////
  231. if(nogi_timer[1][8]==0)
  232. {nogi_timer[2][8]=0;
  233. RUDO=map(i, 0,180, RUDOMIN, RUDOMAX);}
  234. else{nogi_timer[2][8]=round(180/nogi_timer[1][8]*1000);}
  235. ///////////////////////
  236. if(nogi_timer[1][9]==0)
  237. {nogi_timer[2][9]=0;
  238. RMIEDNICA=map(j, 0,180, RMIEDNICAMIN, RMIEDNICAMAX);}
  239. else{nogi_timer[2][9]=round(180/nogi_timer[1][9]*1000);}
  240. //////////////////////konwersja float'a na unsigned long////////////////////////////////////
  241. nogi_delay[0][0]=(unsigned long)nogi_timer[2][0];
  242. nogi_delay[0][1]=(unsigned long)nogi_timer[2][1];
  243. nogi_delay[0][2]=(unsigned long)nogi_timer[2][2];
  244. nogi_delay[0][3]=(unsigned long)nogi_timer[2][3];
  245. nogi_delay[0][4]=(unsigned long)nogi_timer[2][4];
  246. nogi_delay[0][5]=(unsigned long)nogi_timer[2][5];
  247. nogi_delay[0][6]=(unsigned long)nogi_timer[2][6];
  248. nogi_delay[0][7]=(unsigned long)nogi_timer[2][7];
  249. nogi_delay[0][8]=(unsigned long)nogi_timer[2][8];
  250. nogi_delay[0][9]=(unsigned long)nogi_timer[2][9];
  251. for(int x=0;x<=9;x++){
  252. nogi_delay[2][x]=micros();}
  253.  
  254. do {
  255. ///////////////////odczyt czasu zegara wewnętrznego////////////////////////////////////////////////
  256. for(int k=0;k<=9;k++){
  257. nogi_delay[1][k]=micros();
  258. }
  259. //////////////////////////////////////wysyłanie nowych wartości serw/////////////////////////////////////////
  260.  
  261. /////////////////////////////////sterowanie serwo 0///////////////////////////////////////////////
  262. if((nogi_delay[1][0]-nogi_delay[2][0]>=nogi_delay[0][0]*przerwa_nogi)&&(nogi_delay[0][0]!=0))
  263. {
  264. LSTOPA=map(nogi_timer[0][0], 0,180, LSTOPAMIN, LSTOPAMAX);
  265. write_data_nogi();
  266. nogi_delay[2][0]=nogi_delay[1][0];
  267. if(a>nogi_timer[0][0]){
  268. nogi_timer[0][0]++;}
  269. if(a<nogi_timer[0][0]){
  270. nogi_timer[0][0]--;}
  271. }
  272.  
  273. /////////////////////////////////sterowanie serwo 1///////////////////////////////////////////////
  274. if((nogi_delay[1][1]-nogi_delay[2][1]>=nogi_delay[0][1]*przerwa_nogi)&&(nogi_delay[0][1]!=0))
  275. {
  276. LKOSTKA=map(nogi_timer[0][1], 0,180, LKOSTKAMIN, LKOSTKAMAX);
  277. write_data_nogi();
  278. nogi_delay[2][1]=nogi_delay[1][1];
  279. if(b>nogi_timer[0][1]){
  280. nogi_timer[0][1]++;}
  281. if(b<nogi_timer[0][1]){
  282. nogi_timer[0][1]--;}
  283. }
  284.  
  285. /////////////////////////////////sterowanie serwo 2///////////////////////////////////////////////
  286. if((nogi_delay[1][2]-nogi_delay[2][2]>=nogi_delay[0][2]*przerwa_nogi)&&(nogi_delay[0][2]!=0))
  287. {
  288. LKOLANO=map(nogi_timer[0][2], 0,180, LKOLANOMIN, LKOLANOMAX);
  289. write_data_nogi();
  290. nogi_delay[2][2]=nogi_delay[1][2];
  291. if(c>nogi_timer[0][2]){
  292. nogi_timer[0][2]++;}
  293. if(c<nogi_timer[0][2]){
  294. nogi_timer[0][2]--;}
  295. }
  296.  
  297. /////////////////////////////////sterowanie serwo 3///////////////////////////////////////////////
  298. if((nogi_delay[1][3]-nogi_delay[2][3]>=nogi_delay[0][3]*przerwa_nogi)&&(nogi_delay[0][3]!=0))
  299. {
  300. LUDO=map(nogi_timer[0][3], 0,180, LUDOMIN, LUDOMAX);
  301. write_data_nogi();
  302. nogi_delay[2][3]=nogi_delay[1][3];
  303. if(d>nogi_timer[0][3]){
  304. nogi_timer[0][3]++;}
  305. if(d<nogi_timer[0][3]){
  306. nogi_timer[0][3]--;}
  307. }
  308.  
  309. /////////////////////////////////sterowanie serwo 4///////////////////////////////////////////////
  310. if((nogi_delay[1][4]-nogi_delay[2][4]>=nogi_delay[0][4]*przerwa_nogi)&&(nogi_delay[0][4]!=0))
  311. {
  312. LMIEDNICA=map(nogi_timer[0][4], 0,180, LMIEDNICAMIN, LMIEDNICAMAX);
  313. write_data_nogi();
  314. nogi_delay[2][4]=nogi_delay[1][4];
  315. if(e>nogi_timer[0][4]){
  316. nogi_timer[0][4]++;}
  317. if(e<nogi_timer[0][4]){
  318. nogi_timer[0][4]--;}
  319. }
  320.  
  321. /////////////////////////////////sterowanie serwo 5///////////////////////////////////////////////
  322. if((nogi_delay[1][5]-nogi_delay[2][5]>=nogi_delay[0][5]*przerwa_nogi)&&(nogi_delay[0][5]!=0))
  323. {
  324. RSTOPA=map(nogi_timer[0][5], 0,180, RSTOPAMIN, RSTOPAMAX);
  325. write_data_nogi();
  326. nogi_delay[2][5]=nogi_delay[1][5];
  327. if(f>nogi_timer[0][5]){
  328. nogi_timer[0][5]++;}
  329. if(f<nogi_timer[0][5]){
  330. nogi_timer[0][5]--;}
  331. }
  332.  
  333. /////////////////////////////////sterowanie serwo 6///////////////////////////////////////////////
  334. if((nogi_delay[1][6]-nogi_delay[2][6]>=nogi_delay[0][6]*przerwa_nogi)&&(nogi_delay[0][6]!=0))
  335. {
  336. RKOSTKA=map(nogi_timer[0][6], 0,180, RKOSTKAMIN, RKOSTKAMAX);
  337. write_data_nogi();
  338. nogi_delay[2][6]=nogi_delay[1][6];
  339. if(g>nogi_timer[0][6]){
  340. nogi_timer[0][6]++;}
  341. if(g<nogi_timer[0][6]){
  342. nogi_timer[0][6]--;}
  343. }
  344.  
  345. /////////////////////////////////sterowanie serwo 7///////////////////////////////////////////////
  346. if((nogi_delay[1][7]-nogi_delay[2][7]>=nogi_delay[0][7]*przerwa_nogi)&&(nogi_delay[0][7]!=0))
  347. {
  348. RKOLANO=map(nogi_timer[0][7], 0,180, RKOLANOMIN, RKOLANOMAX);
  349. write_data_nogi();
  350. nogi_delay[2][7]=nogi_delay[1][7];
  351. if(h>nogi_timer[0][7]){
  352. nogi_timer[0][7]++;}
  353. if(h<nogi_timer[0][7]){
  354. nogi_timer[0][7]--;}
  355. }
  356.  
  357. /////////////////////////////////sterowanie serwo 8///////////////////////////////////////////////
  358. if((nogi_delay[1][8]-nogi_delay[2][8]>=nogi_delay[0][8]*przerwa_nogi)&&(nogi_delay[0][8]!=0))
  359. {
  360. RUDO=map(nogi_timer[0][8], 0,180, RUDOMIN, RUDOMAX);
  361. write_data_nogi();
  362. nogi_delay[2][8]=nogi_delay[1][8];
  363. if(i>nogi_timer[0][8]){
  364. nogi_timer[0][8]++;}
  365. if(i<nogi_timer[0][8]){
  366. nogi_timer[0][8]--;}
  367. }
  368.  
  369. /////////////////////////////////sterowanie serwo 9///////////////////////////////////////////////
  370. if((nogi_delay[1][9]-nogi_delay[2][9]>=nogi_delay[0][9]*przerwa_nogi)&&(nogi_delay[0][9]!=0))
  371. {
  372. RMIEDNICA=map(nogi_timer[0][9], 0,180, RMIEDNICAMIN, RMIEDNICAMAX);
  373. write_data_nogi();
  374. nogi_delay[2][9]=nogi_delay[1][9];
  375. if(j>nogi_timer[0][9]){
  376. nogi_timer[0][9]++;}
  377. if(j<nogi_timer[0][9]){
  378. nogi_timer[0][9]--;}
  379. }
  380. }while((nogi_timer[0][0]!=a)||(nogi_timer[0][1]!=b)||(nogi_timer[0][2]!=c)||(nogi_timer[0][3]!=d)||
  381. (nogi_timer[0][4]!=e)||(nogi_timer[0][5]!=f)||(nogi_timer[0][6]!=g)||(nogi_timer[0][7]!=h)||(nogi_timer[0][8]!=i)||(nogi_timer[0][9]!=j));
  382. nogi_timer[0][0]=a;
  383. nogi_timer[0][1]=b;
  384. nogi_timer[0][2]=c;
  385. nogi_timer[0][3]=d;
  386. nogi_timer[0][4]=e;
  387. nogi_timer[0][5]=f;
  388. nogi_timer[0][6]=g;
  389. nogi_timer[0][7]=h;
  390. nogi_timer[0][8]=i;
  391. nogi_timer[0][9]=j;
  392.  
  393. }
  394.  
  395.  
  396. //LSTOPA=map(a, 0,180, LSTOPAMIN, LSTOPAMAX);
  397. //LKOSTKA=map(b, 0,180, LKOSTKAMIN, LKOSTKAMAX);
  398. //LKOLANO=map(c, 0,180, LKOLANOMIN, LKOLANOMAX);
  399. //LUDO=map(d, 0,180, LUDOMIN, LUDOMAX);
  400. //LMIEDNICA=map(e, 0,180, LMIEDNICAMIN, LMIEDNICAMAX);
  401. //
  402. //RSTOPA=map(f, 0,180, RSTOPAMIN, RSTOPAMAX);
  403. //RKOSTKA=map(g, 0,180, RKOSTKAMIN, RKOSTKAMAX);
  404. //RKOLANO=map(h, 0,180, RKOLANOMIN, RKOLANOMAX);
  405. //RUDO=map(i, 0,180, RUDOMIN, RUDOMAX);
  406. //RMIEDNICA=map(j, 0,180, RMIEDNICAMIN, RMIEDNICAMAX);
  407.  
  408.  
  409. int rece(int a,int b,int c,int d,int e,int f, int g, int h)
  410. {
  411. a=map(a,0,180,180,0);
  412. ////////////// różnica zmiany kąta ręki ////////////////////////////////////////////
  413. rece_timer[1][0]=fabs(a-rece_timer[0][0]);
  414. rece_timer[1][1]=fabs(b-rece_timer[0][1]);
  415. rece_timer[1][2]=fabs(c-rece_timer[0][2]);
  416. rece_timer[1][3]=fabs(d-rece_timer[0][3]);
  417. rece_timer[1][4]=fabs(e-rece_timer[0][4]);
  418. rece_timer[1][5]=fabs(f-rece_timer[0][5]);
  419. rece_timer[1][6]=fabs(g-rece_timer[0][6]);
  420. rece_timer[1][7]=fabs(h-rece_timer[0][7]);
  421. //////////////////// obliczanie współczynnika opóźnienia//////////////////////////////////////////
  422. rece_timer[2][0]=round(180/rece_timer[1][0]*1000);
  423. rece_timer[2][1]=round(180/rece_timer[1][1]*1000);
  424. rece_timer[2][2]=round(90/rece_timer[1][2]*2000);
  425. rece_timer[2][3]=round(180/rece_timer[1][3]*1000);
  426. rece_timer[2][4]=round(180/rece_timer[1][4]*1000);
  427. rece_timer[2][5]=round(180/rece_timer[1][5]*1000);
  428. rece_timer[2][6]=round(90/rece_timer[1][6]*2000);
  429. rece_timer[2][7]=round(180/rece_timer[1][7]*1000);
  430. //////////////////////konwersja float'a na unsigned long////////////////////////////////////
  431. rece_delay[0][0]=(unsigned long)rece_timer[2][0];
  432. rece_delay[0][1]=(unsigned long)rece_timer[2][1];
  433. rece_delay[0][2]=(unsigned long)rece_timer[2][2];
  434. rece_delay[0][3]=(unsigned long)rece_timer[2][3];
  435. rece_delay[0][4]=(unsigned long)rece_timer[2][4];
  436. rece_delay[0][5]=(unsigned long)rece_timer[2][5];
  437. rece_delay[0][6]=(unsigned long)rece_timer[2][6];
  438. rece_delay[0][7]=(unsigned long)rece_timer[2][7];
  439.  
  440.  
  441. do {
  442. ///////////////////odczyt czasu zegara wewnętrznego////////////////////////////////////////////////
  443. for(int p=0;p<=7;p++){
  444. rece_delay[1][p]=micros();
  445. }
  446. //////////////////////////////////////wysyłanie nowych wartości serw/////////////////////////////////////////
  447.  
  448. /////////////////////////////////sterowanie serwo 0///////////////////////////////////////////////
  449. if(rece_delay[1][0]-rece_delay[2][0]>=przerwa/rece_delay[0][0])
  450. {
  451. LBARKW=map(rece_timer[0][0], 0,180, LBARKWMIN, LBARKWMAX);
  452. write_data_rece();
  453. rece_delay[2][0]=rece_delay[1][0];
  454. if(a>rece_timer[0][0]){
  455. rece_timer[0][0]++;}
  456. if(a<rece_timer[0][0]){
  457. rece_timer[0][0]--;}
  458. }
  459.  
  460. /////////////////////////////////sterowanie serwo 1///////////////////////////////////////////////
  461. if(rece_delay[1][1]-rece_delay[2][1]>=przerwa/rece_delay[0][1])
  462. {
  463. LBARKZ=map(rece_timer[0][1], 0,180, LBARKZMIN, LBARKZMAX);
  464. write_data_rece();
  465. rece_delay[2][1]=rece_delay[1][1];
  466. if(b>rece_timer[0][1]){
  467. rece_timer[0][1]++;}
  468. if(b<rece_timer[0][1]){
  469. rece_timer[0][1]--;}
  470. }
  471. /////////////////////////////////sterowanie serwo 2///////////////////////////////////////////////
  472. if(rece_delay[1][2]-rece_delay[2][2]>=przerwa/rece_delay[0][2])
  473. {
  474. LLOKIEC=map(rece_timer[0][2], 0,90, LLOKIECMIN, LLOKIECMAX);
  475. write_data_rece();
  476. rece_delay[2][2]=rece_delay[1][2];
  477. if(c>rece_timer[0][2]){
  478. rece_timer[0][2]++;}
  479. if(c<rece_timer[0][2]){
  480. rece_timer[0][2]--;}
  481. }
  482. /////////////////////////////////sterowanie serwo 3///////////////////////////////////////////////
  483. if(rece_delay[1][3]-rece_delay[2][3]>=przerwa/rece_delay[0][3])
  484. {
  485. LNADGARSTEK=map(rece_timer[0][3], 0,180, LNADGARSTEKMIN, LNADGARSTEKMAX);
  486. write_data_rece();
  487. rece_delay[2][3]=rece_delay[1][3];
  488. if(d>rece_timer[0][3]){
  489. rece_timer[0][3]++;}
  490. if(d<rece_timer[0][3]){
  491. rece_timer[0][3]--;}
  492. }
  493. /////////////////////////////////sterowanie serwo 4///////////////////////////////////////////////
  494. if(rece_delay[1][4]-rece_delay[2][4]>=przerwa/rece_delay[0][4])
  495. {
  496. RBARKW=map(rece_timer[0][4], 0,180, RBARKWMIN, RBARKWMAX);
  497. write_data_rece();
  498. rece_delay[2][4]=rece_delay[1][4];
  499. if(e>rece_timer[0][4]){
  500. rece_timer[0][4]++;}
  501. if(e<rece_timer[0][4]){
  502. rece_timer[0][4]--;}
  503. }
  504. /////////////////////////////////sterowanie serwo 5///////////////////////////////////////////////
  505. if(rece_delay[1][5]-rece_delay[2][5]>=przerwa/rece_delay[0][5])
  506. {
  507. RBARKZ=map(rece_timer[0][5], 0,180, RBARKZMIN, RBARKZMAX);
  508. write_data_rece();
  509. rece_delay[2][5]=rece_delay[1][5];
  510. if(f>rece_timer[0][5]){
  511. rece_timer[0][5]++;}
  512. if(f<rece_timer[0][5]){
  513. rece_timer[0][5]--;}
  514. }
  515. /////////////////////////////////sterowanie serwo 6///////////////////////////////////////////////
  516. if(rece_delay[1][6]-rece_delay[2][6]>=przerwa/rece_delay[0][6])
  517. {
  518. RLOKIEC=map(rece_timer[0][6], 0,90, RLOKIECMIN, RLOKIECMAX);
  519. write_data_rece();
  520. rece_delay[2][6]=rece_delay[1][6];
  521. if(g>rece_timer[0][6]){
  522. rece_timer[0][6]++;}
  523. if(g<rece_timer[0][6]){
  524. rece_timer[0][6]--;}
  525. }
  526. /////////////////////////////////sterowanie serwo 7///////////////////////////////////////////////
  527. if(rece_delay[1][7]-rece_delay[2][7]>=przerwa/rece_delay[0][7])
  528. {
  529. RNADGARSTEK=map(rece_timer[0][7], 0,180, RNADGARSTEKMIN, RNADGARSTEKMAX);
  530. write_data_rece();
  531. rece_delay[2][7]=rece_delay[1][7];
  532. if(h>rece_timer[0][7]){
  533. rece_timer[0][7]++;}
  534. if(h<rece_timer[0][7]){
  535. rece_timer[0][7]--;}
  536. }
  537. }while((rece_timer[0][0]!=a)||(rece_timer[0][1]!=b)||(rece_timer[0][2]!=c)||(rece_timer[0][3]!=d)||
  538. (rece_timer[0][4]!=e)||(rece_timer[0][5]!=f)||(rece_timer[0][6]!=g)||(rece_timer[0][7]!=h));
  539. rece_timer[0][0]=a;
  540. rece_timer[0][1]=b;
  541. rece_timer[0][2]=c;
  542. rece_timer[0][3]=d;
  543. rece_timer[0][4]=e;
  544. rece_timer[0][5]=f;
  545. rece_timer[0][6]=g;
  546. rece_timer[0][7]=h;
  547. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement