{"id":3833,"date":"2017-11-29T11:45:37","date_gmt":"2017-11-29T08:45:37","guid":{"rendered":"http:\/\/roboromania.ro\/?p=3833"},"modified":"2018-01-26T10:41:45","modified_gmt":"2018-01-26T07:41:45","slug":"hai-sa-ne-jucam-cu-byj48-stepper-motor","status":"publish","type":"post","link":"https:\/\/roboromania.ro\/?p=3833","title":{"rendered":"Hai s\u0103 ne juc\u0103m cu BYJ48 Stepper motor + Driver Stepper ULN2003"},"content":{"rendered":"<h4><span style=\"font-size: x-large; color: #0000ff;\">BYJ48 Stepper motor + Modulul Driver Stepper ULN2003<\/span><\/h4>\n<p><a href=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2018\/01\/default_comp26.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4200\" src=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2018\/01\/default_comp26.gif\" alt=\"default_comp26\" width=\"38\" height=\"26\" \/><\/a><\/p>\n<h4 class=\"product_title entry-title\"><span style=\"color: #0000ff;\"><a href=\"http:\/\/roboromania.ro\/produs\/modulul-arduino-stepper-uln2003-cu-motor-stepper-28byj-48\/\" target=\"_blank\">Modulul Driver Stepper ULN2003 cu motor Stepper 28BYJ-48 compatibil Arduino<\/a> de la Roboromania<br \/>\n<\/span><\/h4>\n<p lang=\"zxx\"><a href=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3834\" src=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper1.jpg\" alt=\"stepper1\" width=\"276\" height=\"232\" \/><\/a><\/p>\n<p lang=\"zxx\">Speed Variation Ratio 1\/64<br \/>\nStride Angle 5.625\u00b0 \/64<br \/>\nFrequency 100Hz<br \/>\nDC resistance 50\u03a9\u00b17%(25\u2103)<br \/>\nIdle In-traction Frequency &gt; 600Hz<br \/>\nIdle Out-traction Frequency &gt; 1000Hz<br \/>\nIn-traction Torque &gt;34.3mN.m(120Hz)<br \/>\nSelf-positioning Torque &gt;34.3mN.m<br \/>\nFriction torque 600-1200 gf.cm<br \/>\nPull in torque 300 gf.cm<br \/>\nInsulation grade A<\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">ID-ul Arduino <\/span><span lang=\"ro-RO\">+<\/span><span lang=\"ro-RO\"> Library pentru un motor Stepper, foarte u\u0219or de folosit, dup\u0103 conectarea motorului cu arduino Pute\u021bi \u00eenc\u0103rca Sketch pe arduino.<\/span><\/p>\n<p>Dar &#8230;<\/p>\n<p>Trebuie s\u0103 lua\u021bi \u00een considerare:<\/p>\n<p>Acest motor are un raport de transmisie de 64 \u0219i unghi Stride 5.625 \u00b0, astfel c\u0103 acest motor are un pas de 4096.<\/p>\n<p lang=\"zxx\"><strong>\u00a0steps = Number of steps in One Revolution \u00a0* Gear ratio \u00a0 .<\/strong><\/p>\n<p>steps= (360\u00b0\/5.625\u00b0)*64&#8243;Gear ratio&#8221; = 64 * 64 =4096 . this value will substitute it on The arduino Sketch<\/p>\n<p lang=\"zxx\">For <strong><a href=\"http:\/\/www.adafruit.com\/products\/918\">adafruit Stepper Motor<\/a><\/strong> , the\u00a0Stride Angle 7.5\u00b0 and Gear ratio is 16 , So number of steps in 1 Revolution is :<\/p>\n<p lang=\"zxx\">steps in One Revolution \u00a0= 360 \/ 7.5 = 48 \u00a0 .<\/p>\n<p>steps= 48 * 16 = 768<\/p>\n<p lang=\"zxx\"><a name=\"result_box1\"><\/a><span lang=\"ro-RO\">Asta va fi diferit depinde de ce motor utiliza\u021bi, a\u0219a c\u0103 verifica\u021bi datele pentru stepper motor pentru a calibra aceste valori.<\/span><\/p>\n<p lang=\"zxx\">\u00a0<a href=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3836\" src=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper2-300x238.jpg\" alt=\"stepper2\" width=\"300\" height=\"238\" srcset=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper2-300x238.jpg 300w, https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper2.jpg 560w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p lang=\"zxx\"><a href=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3839\" src=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper4-300x114.jpg\" alt=\"stepper4\" width=\"300\" height=\"114\" srcset=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper4-300x114.jpg 300w, https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper4.jpg 620w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">Motor Driver ULN2003 Breakout conectat la Arduino de la IN1 &#8211; IN4 la D8 &#8211; D11 Respectiv<br \/>\nPentru a alimenta motorul, utiliza\u021bi sursa extern\u0103 de alimentare cu cel pu\u021bin 5V-500mA, nu-l alimenta\u021bi direct de la arduino 5V.<\/span><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">C\u00e2nd \u00eenc\u0103rca\u021bi Sketch \u00een arduino, motorul va fi rotit \u00eentr-o singur\u0103 direc\u021bie Prin tastarea comenzii:<\/span><\/p>\n<p lang=\"zxx\"><strong>step(steps);<\/strong><\/p>\n<p lang=\"zxx\"><a name=\"result_box4\"><\/a><span lang=\"ro-RO\">Deci, trebuie s\u0103 pune\u021bi num\u0103rul <\/span><span lang=\"ro-RO\">de <\/span><span lang=\"ro-RO\">pa\u0219i pentru a porni motorul.<\/span><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">Pute\u021bi pune valoarea pozitiv\u0103 pentru o direc\u021bie, negativ\u0103 pentru cealalt\u0103.<br \/>\nAcest motor trebuie s\u0103 func\u021bioneze ca <\/span><span lang=\"ro-RO\">\u00een<\/span><span lang=\"ro-RO\"> tabelul ata\u0219at.<\/span><\/p>\n<p lang=\"zxx\"><a href=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3838\" src=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper3-300x111.jpg\" alt=\"stepper3\" width=\"300\" height=\"111\" srcset=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper3-300x111.jpg 300w, https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper3.jpg 369w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">Am scris un cod care permite acestui motor s\u0103 se mi\u0219te \u00een sensul acelor de ceasornic \u0219i contra sensul<\/span><span lang=\"ro-RO\">ui<\/span><span lang=\"ro-RO\"> acelor de ceasornic<\/span><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">codul final pentru acest motor Stepper:<\/span><\/p>\n<blockquote lang=\"zxx\"><p><strong>\/*<br \/>\n<\/strong>BYJ48 Stepper motor code<br \/>\nConnect :<br \/>\nIN1 &gt;&gt; D8<br \/>\nIN2 &gt;&gt; D9<br \/>\nIN3 &gt;&gt; D10<br \/>\nIN4 &gt;&gt; D11<br \/>\nVCC &#8230; 5V Prefer to use external 5V Source<br \/>\nGnd<strong><br \/>\n*\/<\/strong><\/p>\n<p>#define IN1\u00a0 8<br \/>\n#define IN2\u00a0 9<br \/>\n#define IN3\u00a0 10<br \/>\n#define IN4\u00a0 11<br \/>\nint Steps = 0;<br \/>\nboolean Direction = true;\/\/ gre<br \/>\nunsigned long last_time;<br \/>\nunsigned long currentMillis ;<br \/>\nint steps_left=4095;<br \/>\nlong time;<br \/>\nvoid setup()<br \/>\n{<br \/>\nSerial.begin(115200);<br \/>\npinMode(IN1, OUTPUT);<br \/>\npinMode(IN2, OUTPUT);<br \/>\npinMode(IN3, OUTPUT);<br \/>\npinMode(IN4, OUTPUT);<br \/>\n\/\/ delay(1000);<\/p>\n<p>}<br \/>\nvoid loop()<br \/>\n{<br \/>\nwhile(steps_left&gt;0){<br \/>\ncurrentMillis = micros();<br \/>\nif(currentMillis-last_time&gt;=1000){<br \/>\nstepper(1);<br \/>\ntime=time+micros()-last_time;<br \/>\nlast_time=micros();<br \/>\nsteps_left&#8211;;<br \/>\n}<br \/>\n}<br \/>\nSerial.println(time);<br \/>\nSerial.println(&#8222;Wait&#8230;!&#8221;);<br \/>\ndelay(2000);<br \/>\nDirection=!Direction;<br \/>\nsteps_left=4095;<br \/>\n}<\/p>\n<p>void stepper(int xw){<br \/>\nfor (int x=0;x&lt;xw;x++){<br \/>\nswitch(Steps){<br \/>\ncase 0:<br \/>\ndigitalWrite(IN1, LOW);<br \/>\ndigitalWrite(IN2, LOW);<br \/>\ndigitalWrite(IN3, LOW);<br \/>\ndigitalWrite(IN4, HIGH);<br \/>\nbreak;<br \/>\ncase 1:<br \/>\ndigitalWrite(IN1, LOW);<br \/>\ndigitalWrite(IN2, LOW);<br \/>\ndigitalWrite(IN3, HIGH);<br \/>\ndigitalWrite(IN4, HIGH);<br \/>\nbreak;<br \/>\ncase 2:<br \/>\ndigitalWrite(IN1, LOW);<br \/>\ndigitalWrite(IN2, LOW);<br \/>\ndigitalWrite(IN3, HIGH);<br \/>\ndigitalWrite(IN4, LOW);<br \/>\nbreak;<br \/>\ncase 3:<br \/>\ndigitalWrite(IN1, LOW);<br \/>\ndigitalWrite(IN2, HIGH);<br \/>\ndigitalWrite(IN3, HIGH);<br \/>\ndigitalWrite(IN4, LOW);<br \/>\nbreak;<br \/>\ncase 4:<br \/>\ndigitalWrite(IN1, LOW);<br \/>\ndigitalWrite(IN2, HIGH);<br \/>\ndigitalWrite(IN3, LOW);<br \/>\ndigitalWrite(IN4, LOW);<br \/>\nbreak;<br \/>\ncase 5:<br \/>\ndigitalWrite(IN1, HIGH);<br \/>\ndigitalWrite(IN2, HIGH);<br \/>\ndigitalWrite(IN3, LOW);<br \/>\ndigitalWrite(IN4, LOW);<br \/>\nbreak;<br \/>\ncase 6:<br \/>\ndigitalWrite(IN1, HIGH);<br \/>\ndigitalWrite(IN2, LOW);<br \/>\ndigitalWrite(IN3, LOW);<br \/>\ndigitalWrite(IN4, LOW);<br \/>\nbreak;<br \/>\ncase 7:<br \/>\ndigitalWrite(IN1, HIGH);<br \/>\ndigitalWrite(IN2, LOW);<br \/>\ndigitalWrite(IN3, LOW);<br \/>\ndigitalWrite(IN4, HIGH);<br \/>\nbreak;<br \/>\ndefault:<br \/>\ndigitalWrite(IN1, LOW);<br \/>\ndigitalWrite(IN2, LOW);<br \/>\ndigitalWrite(IN3, LOW);<br \/>\ndigitalWrite(IN4, LOW);<br \/>\nbreak;<br \/>\n}<br \/>\nSetDirection();<br \/>\n}<br \/>\n}<br \/>\nvoid SetDirection(){<br \/>\nif(Direction==1){ Steps++;}<br \/>\nif(Direction==0){ Steps&#8211;; }<br \/>\nif(Steps&gt;7){Steps=0;}<br \/>\nif(Steps&lt;0){Steps=7; }<br \/>\n}<\/p><\/blockquote>\n<blockquote lang=\"zxx\"><p><a href=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper5.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-3840\" src=\"http:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper5-300x225.jpg\" alt=\"stepper5\" width=\"300\" height=\"225\" srcset=\"https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper5-300x225.jpg 300w, https:\/\/roboromania.ro\/wp-content\/uploads\/2017\/11\/stepper5.jpg 620w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p><\/blockquote>\n<blockquote lang=\"zxx\">\n<p lang=\"zxx\"><span lang=\"ro-RO\">Am t\u0103iat dimensiunea codului \u00een jos \u0219i l-am modificat astfel \u00eenc\u00e2t s\u0103 pute\u021bi specifica viteza \u0219i nu ave\u021bi nevoie de direc\u021bie. Doar apela\u021bi &#8222;stepper ()&#8221; \u0219i da\u021bi num\u0103rul de pa\u0219i pe care dori\u021bi s\u0103 \u00eel roti\u021bi. <\/span><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">Utiliza\u021bi numere negative pentru a inversa direc\u021bia. <\/span><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">Probabil c\u0103 va trebui s\u0103 modifica\u021bi valorile pentru IN1-IN4 pentru a se potrivi cu <\/span><span lang=\"ro-RO\">pinii folosi\u021bi<\/span><span lang=\"ro-RO\"> de pe Arduino:<\/span><\/p>\n<p lang=\"zxx\">#define IN1 5<\/p>\n<p lang=\"zxx\">#define IN2 4<\/p>\n<p lang=\"zxx\">#define IN3 3<\/p>\n<p lang=\"zxx\">#define IN4 2<\/p>\n<p lang=\"zxx\">#define FULL_ROTATION 4076<\/p>\n<p lang=\"zxx\">const int phases1[] = {0, 0, 0, 0, 0, 1, 1, 1};<\/p>\n<p lang=\"zxx\">const int phases2[] = {0, 0, 0, 1, 1, 1, 0, 0};<\/p>\n<p lang=\"zxx\">const int phases3[] = {0, 1, 1, 1, 0, 0, 0, 0};<\/p>\n<p lang=\"zxx\">const int phases4[] = {1, 1, 0, 0, 0, 0, 0, 1};<\/p>\n<p lang=\"zxx\">int Phase = 0;<\/p>\n<p lang=\"zxx\">int Speed = 100; \/\/MUST BE 1 &#8211; 100<\/p>\n<p lang=\"zxx\">void setup()<\/p>\n<p lang=\"zxx\">{<\/p>\n<p lang=\"zxx\">pinMode(IN1, OUTPUT);<\/p>\n<p lang=\"zxx\">pinMode(IN2, OUTPUT);<\/p>\n<p lang=\"zxx\">pinMode(IN3, OUTPUT);<\/p>\n<p lang=\"zxx\">pinMode(IN4, OUTPUT);<\/p>\n<p lang=\"zxx\">Serial.begin(115200);<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">void loop()<\/p>\n<p lang=\"zxx\">{<\/p>\n<p lang=\"zxx\">stepper(FULL_ROTATION);<\/p>\n<p lang=\"zxx\">stepper(-FULL_ROTATION);<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">void stepper(int count)<\/p>\n<p lang=\"zxx\">{<\/p>\n<p lang=\"zxx\">int rotationDirection = count &lt; 1 ? -1 : 1;<\/p>\n<p lang=\"zxx\">count *= rotationDirection;<\/p>\n<p lang=\"zxx\">for (int x = 0; x &lt; count; x++)<\/p>\n<p lang=\"zxx\">{<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, phases1[Phase]);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, phases2[Phase]);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, phases3[Phase]);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, phases4[Phase]);<\/p>\n<p lang=\"zxx\">IncrementPhase(rotationDirection);<\/p>\n<p lang=\"zxx\">delay(100\/Speed);<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">void IncrementPhase(int rotationDirection)<\/p>\n<p lang=\"zxx\">{<\/p>\n<p lang=\"zxx\">Phase += 8;<\/p>\n<p lang=\"zxx\">Phase += rotationDirection;<\/p>\n<p lang=\"zxx\">Phase %= 8;<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">Am schimbat codul pu\u021bin pentru a sc\u0103pa de direc\u021bie \u0219i pentru a folosi semnul minus pentru rotirea CCW \u0219i plus pentru CW rotativ. <\/span><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">De asemenea, <\/span><span lang=\"ro-RO\">vreau<\/span><span lang=\"ro-RO\"> s\u0103 dezactivez motorul dup\u0103 fiecare rotire.<\/span><\/p>\n<p lang=\"zxx\"><span lang=\"ro-RO\">S<\/span><span lang=\"ro-RO\">crie\u021bi doar c\u00e2\u021bi pa\u0219i ai nevoie \u0219i <\/span><span lang=\"ro-RO\">executa<\/span><span lang=\"ro-RO\">.<\/span><\/p>\n<p lang=\"zxx\">#define IN1 8<\/p>\n<p lang=\"zxx\">#define IN2 9<\/p>\n<p lang=\"zxx\">#define IN3 10<\/p>\n<p lang=\"zxx\">#define IN4 11<\/p>\n<p lang=\"zxx\">int Steps = 0;<\/p>\n<p lang=\"zxx\">void setup()<\/p>\n<p lang=\"zxx\">{<\/p>\n<p lang=\"zxx\">Serial.begin(115200);<\/p>\n<p lang=\"zxx\">pinMode(IN1, OUTPUT);<\/p>\n<p lang=\"zxx\">pinMode(IN2, OUTPUT);<\/p>\n<p lang=\"zxx\">pinMode(IN3, OUTPUT);<\/p>\n<p lang=\"zxx\">pinMode(IN4, OUTPUT);<\/p>\n<p lang=\"zxx\">\/\/ delay(1000);<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">void loop() {<\/p>\n<p lang=\"zxx\">while (Serial.available()&gt;0){<\/p>\n<p lang=\"zxx\">int st = Serial.parseInt();<\/p>\n<p lang=\"zxx\">if(Serial.read()==&#8217;\\n&#8217;){<\/p>\n<p lang=\"zxx\">String message = &#8222;STEPS &#8222;;<\/p>\n<p lang=\"zxx\">message+=st;<\/p>\n<p lang=\"zxx\">Serial.println(message);<\/p>\n<p lang=\"zxx\">stepper(st);<\/p>\n<p lang=\"zxx\">delay(500);<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, LOW);<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">void stepper(int doSteps){<\/p>\n<p lang=\"zxx\">int xw =abs(doSteps);<\/p>\n<p lang=\"zxx\">for (int x=0;x&lt;xw;x++){<\/p>\n<p lang=\"zxx\">switch(Steps){<\/p>\n<p lang=\"zxx\">case 0:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, HIGH);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">case 1:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, HIGH);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">case 2:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, LOW);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">case 3:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, LOW);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">case 4:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, LOW);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">case 5:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, LOW);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">case 6:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, LOW);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">case 7:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, HIGH);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, HIGH);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">default:<\/p>\n<p lang=\"zxx\">digitalWrite(IN1, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN2, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN3, LOW);<\/p>\n<p lang=\"zxx\">digitalWrite(IN4, LOW);<\/p>\n<p lang=\"zxx\">break;<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">delay(1);<\/p>\n<p lang=\"zxx\">if(doSteps&gt;=0){ Steps++;}<\/p>\n<p lang=\"zxx\">if(doSteps&lt;0){ Steps&#8211;; }<\/p>\n<p lang=\"zxx\">if(Steps&gt;7){Steps=0;}<\/p>\n<p lang=\"zxx\">if(Steps&lt;0){Steps=7; }<\/p>\n<p lang=\"zxx\">}<\/p>\n<p lang=\"zxx\">}<\/p>\n<\/blockquote>\n<p lang=\"zxx\"><span lang=\"ro-RO\">Codul ar putea<br \/>\ns\u0103 fie simplificat.<\/span><\/p>\n<p>Folosind matrice, redenumirea variabilelor \u0219i simplificarea controlului<\/p>\n<p lang=\"zxx\">\/*<br \/>\nBYJ48 Stepper motor code<br \/>\nConecta\u021bi :<br \/>\nIN1 &gt;&gt; D8<br \/>\nIN2 &gt;&gt; D9<br \/>\nIN3 &gt;&gt; D10<br \/>\nIN4 &gt;&gt; D11<br \/>\nVCC &#8230; 5V folosi\u021bi external 5V Source<br \/>\nGnd<br \/>\n*\/<\/p>\n<p>#define IN1 8<br \/>\n#define IN2 9<br \/>\n#define IN3 10<br \/>\n#define IN4 11<br \/>\nconst int NBSTEPS = 4096;<br \/>\nconst int STEPTIME = 900;<br \/>\nint Step = 0;<br \/>\nboolean Clockwise = true;<\/p>\n<p>int arrayDefault[4] = {LOW, LOW, LOW, LOW};<\/p>\n<p>int stepsMatrix[8][4] = {<br \/>\n{LOW, LOW, LOW, HIGH},<br \/>\n{LOW, LOW, HIGH, HIGH},<br \/>\n{LOW, LOW, HIGH, LOW},<br \/>\n{LOW, HIGH, HIGH, LOW},<br \/>\n{LOW, HIGH, LOW, LOW},<br \/>\n{HIGH, HIGH, LOW, LOW},<br \/>\n{HIGH, LOW, LOW, LOW},<br \/>\n{HIGH, LOW, LOW, HIGH},<br \/>\n};<\/p>\n<p>unsigned long lastTime;<br \/>\nunsigned long time;<\/p>\n<p>void setup(){<br \/>\nSerial.begin(9600);<br \/>\nSerial.println(&#8222;Starting&#8230;&#8221;);<br \/>\npinMode(IN1, OUTPUT);<br \/>\npinMode(IN2, OUTPUT);<br \/>\npinMode(IN3, OUTPUT);<br \/>\npinMode(IN4, OUTPUT);<br \/>\n}<\/p>\n<p>void loop(){<br \/>\nunsigned long currentMicros;<br \/>\nint stepsLeft = NBSTEPS;<br \/>\ntime = 0;<br \/>\nwhile(stepsLeft &gt; 0){<br \/>\ncurrentMicros = micros();<br \/>\nif(currentMicros &#8211; lastTime &gt;= STEPTIME){<br \/>\nstepper();<br \/>\ntime += micros() &#8211; lastTime;<br \/>\nlastTime = micros();<br \/>\nstepsLeft&#8211;;<br \/>\n}<br \/>\n}<br \/>\nSerial.println(time);<br \/>\nSerial.println(&#8222;Wait&#8230;!&#8221;);<br \/>\ndelay(2000);<br \/>\nClockwise = !Clockwise;<br \/>\nstepsLeft = NBSTEPS;<br \/>\n}<\/p>\n<p>void writeStep(int outArray[4]){<br \/>\nfor (int i=0;i &lt; 4; i++){<br \/>\ndigitalWrite(IN1 + i, outArray[i]);<br \/>\n}<br \/>\n}<\/p>\n<p>void stepper(){<br \/>\nif ((Step &gt;= 0) &amp;&amp; (Step &lt; 8)){<br \/>\nwriteStep(stepsMatrix[Step]);<br \/>\n}else{<br \/>\nwriteStep(arrayDefault);<br \/>\n}<br \/>\nsetDirection();<br \/>\n}<\/p>\n<p>void setDirection(){<br \/>\n(Clockwise) ? (Step++) : (Step&#8211;);<\/p>\n<p>if(Step&gt;7){<br \/>\nStep=0;<br \/>\n}else if(Step&lt;0){<br \/>\nStep=7;<br \/>\n}<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>Succes !<\/p>\n<p>Colectivul Roboromania<\/p>\n","protected":false},"excerpt":{"rendered":"<p>BYJ48 Stepper motor + Modulul Driver Stepper ULN2003 Modulul Driver Stepper ULN2003 cu motor Stepper 28BYJ-48 compatibil Arduino de la Roboromania Speed Variation Ratio 1\/64 Stride Angle 5.625\u00b0 \/64 Frequency 100Hz DC resistance 50\u03a9\u00b17%(25\u2103) Idle In-traction Frequency &gt; 600Hz Idle Out-traction Frequency &gt; 1000Hz In-traction Torque &gt;34.3mN.m(120Hz) Self-positioning Torque &gt;34.3mN.m Friction torque 600-1200 gf.cm Pull [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[176],"tags":[],"class_list":["post-3833","post","type-post","status-publish","format-standard","hentry","category-tutoriale-arduino"],"_links":{"self":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts\/3833","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3833"}],"version-history":[{"count":9,"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts\/3833\/revisions"}],"predecessor-version":[{"id":4203,"href":"https:\/\/roboromania.ro\/index.php?rest_route=\/wp\/v2\/posts\/3833\/revisions\/4203"}],"wp:attachment":[{"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3833"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3833"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/roboromania.ro\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3833"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}