Alimentarea poate fi separata sau se poate folosi tensiunea de 3,3V de pe placa asa cum am folosit eu in filmuletul postat, depinde de motorul folosit.
Cod:
//comanda motor pas cu pas de la tastatura *Adi Ivan*
//apasa  „+„ pentru rotire
dreapta LED pin 13 aprins,apasa „ –„ pentru rotire stanga LED pin 13 stins, apasa
„0„ pentru STOP si LED pin 13 va clipi intermitent
int incomingByte = 0;                                    //pentru
intrare serial data
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 64;
void setup() {
                Serial.begin(9600);                     //
deschidere port serial si setare rata de transfer a datelor la 9600 bps
//seteaza iesirea
  pinMode(13,
OUTPUT);
 
pinMode(motorPin1, OUTPUT);
 
pinMode(motorPin2, OUTPUT);
 
pinMode(motorPin3, OUTPUT);
 
pinMode(motorPin4, OUTPUT);
}
void loop() {
                // trimite date
doar cand primeste date de la tastatura:
                if
(Serial.available() > 0) {
                // citeste numarul
introdus de la tastatura:
                incomingByte =
Serial.read();
                // afiseaza in
Serial Monitor numarul introdus:
                Serial.print("S-a
tastat: ");
                Serial.println(incomingByte
- 48, DEC); //S-a scazut 48 pentru a afisa in Serial Monitor exact numarul
tastat (a se vedea codul ASCII)
                }
if(incomingByte==45)                                   //stinge LED-ul
conectat la pinul 13. (- este 45 in cod ASCII) si roteste motorul spre stanga
{
  digitalWrite(13,
LOW);                             
// stinge LED-ul conectat la pinul 13
  digitalWrite(motorPin1,
HIGH);
 
digitalWrite(motorPin2, LOW);
 
digitalWrite(motorPin3, LOW);
 
digitalWrite(motorPin4, LOW);
 
delay(delayTime);
 
digitalWrite(motorPin1, LOW);
 
digitalWrite(motorPin2, HIGH);
 
digitalWrite(motorPin3, LOW);
 
digitalWrite(motorPin4, LOW);
 
delay(delayTime);
 
digitalWrite(motorPin1, LOW);
 
digitalWrite(motorPin2, LOW);
 
digitalWrite(motorPin3, HIGH);
 
digitalWrite(motorPin4, LOW);
 
delay(delayTime);
 
digitalWrite(motorPin1, LOW);
 
digitalWrite(motorPin2, LOW);
 
digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4,
HIGH);
 
delay(delayTime);
 }
if(incomingByte==43)                                   //aprinde
LED-ul conectat la pinul 13. (+ este 43 in cod ASCII) si roteste motorul spre dreapta
{
  digitalWrite(13,
HIGH);                               //
aprinde LED-ul conectat la pinul 13
  digitalWrite(motorPin1,
LOW);
 
digitalWrite(motorPin2, LOW);
 
digitalWrite(motorPin3, LOW);
 
digitalWrite(motorPin4, HIGH);
 
delay(delayTime);
 
digitalWrite(motorPin1, LOW);
 
digitalWrite(motorPin2, LOW);
 
digitalWrite(motorPin3, HIGH);
 
digitalWrite(motorPin4, LOW);
 
delay(delayTime);
 
digitalWrite(motorPin1, LOW);
 
digitalWrite(motorPin2, HIGH);
 
digitalWrite(motorPin3, LOW);
 
digitalWrite(motorPin4, LOW);
 
delay(delayTime);
 
digitalWrite(motorPin1, HIGH);
 
digitalWrite(motorPin2, LOW);
 
digitalWrite(motorPin3, LOW);
 
digitalWrite(motorPin4, LOW);
 
delay(delayTime);
 }
if(incomingByte==48)                                   //aprinde intermitent
LED-ul conectat la pinul 13. (0 este 48 in cod ASCII) si opreste motorul
{
  digitalWrite(13,
HIGH);                               //
aprinde LED-ul conectat la pinul 13
 
delay(500);                                                  // asteapta 0,5 secunde
 
digitalWrite(13, LOW);                               //
stingeLED-ul conectat la pinul 13
 
delay(500);                                                  //
asteapta 0,5 secunde
  digitalWrite(motorPin1,
LOW);
 
digitalWrite(motorPin2, LOW);
 
digitalWrite(motorPin3, LOW);
 
digitalWrite(motorPin4, LOW);
 
delay(delayTime);
 }
}
Rosu - instructiuni pentru motor
Verde - instructiuni pentru LED-ul conectat la pin 13 Arduino Uno
Alb - instructiuni preluare comenzi de la serial monitor si restul codului incarcat