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