#include #include #define rxPin 9 // definire pin digital 2 pe Rx pentru a nu fi nevoit sa scot pinul cand upload-ez codlu #define txPin 10 int RECV_PIN = 12; IRrecv irrecv(RECV_PIN); decode_results results; SoftwareSerial serial = SoftwareSerial(rxPin, txPin); const int motor1a = 2; //H-bridge (pin2,1A), pinul digital 2 de la arduino se conecteaza cu // pinul 2(1A) de la L293D const int motor2a = 4; //H-bridge (pin4,2A), pinul digital 4 de la arduino se conecteaza cu // pinul 7(2A) de la L293D const int motor1b = 5; //H-bridge (pin5,4A), pinul digital 5 de la arduino se conecteaza cu // pinul 15(4A) de la L293D const int motor2b = 7; //H-bridge (pin7,3A), pinul digital 7 de la arduino se conecteaza cu // pinul 10(3A) de la L293D const int enable1 = 3; //H-bridge (pin3,1.2EN), pinul digital 3 de la arduino se conecteaza // cu pinul 1(1.2EN) de la L293D const int ledPin = 13; // LED boolean val = HIGH; //setam val ca fiind boolean pentru a putea opera cu HIGH si LOW int led = 8; void setup() {pinMode(rxPin, INPUT); // stabileste pin-ul 2 ca intrare (nu este folosit, poate sa lipseasca din program si din aplicatie) pinMode(txPin, OUTPUT); // setam toti pinii pe care ii folosim ca fiind OUTPUT: pinMode(motor1a, OUTPUT); pinMode(motor2a, OUTPUT); pinMode(motor1b, OUTPUT); pinMode(motor2b, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(led, OUTPUT); // setam pini de enable HIGH pentru a putea porni motoarele: digitalWrite(enable1, HIGH); serial.begin(9600); irrecv.enableIRIn(); // clipeste ledPin de 3 ori. Asta trebuie sa se intample doar 1 data. // daca vezi ca ledul clipeste de mai multe ori inseamna ca s-a // resetat; probabil din cauza ca motorasele sunt arse // sau este un scurt circuit. blink(ledPin, 3, 100); } void Forward() { // motoarele merg inainte digitalWrite(enable1, HIGH); digitalWrite(motor1a, HIGH); digitalWrite(motor2a, LOW); digitalWrite(motor1b, HIGH); digitalWrite(motor2b, LOW); } void Reverse() { // motoarele merg inapoi digitalWrite(enable1, HIGH); digitalWrite(motor1a, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor1b, LOW); digitalWrite(motor2b, HIGH); } void Left() { // intoarce la stanga(motorul drept merge inainte, iar cel stang inapoi): digitalWrite(enable1, HIGH); digitalWrite(motor1a, LOW); digitalWrite(motor2a, HIGH); digitalWrite(motor1b, HIGH); digitalWrite(motor2b, LOW); } void Right() { //intoarce la dreapta(motorul drept merge inapoi iar cel stang inainte): digitalWrite(enable1, HIGH); digitalWrite(motor1a, HIGH); digitalWrite(motor2a, LOW); digitalWrite(motor1b, LOW); digitalWrite(motor2b, HIGH); } void Stop() { //motoarele sunt oprite(1,2EN si 3,4EN sunt trecuti pe LOW ; in acest caz nu se tine cont de valoarea pinilor de control, deoarece motoarele sunt oprite. vezi desenu sa intelegi mai bine) digitalWrite(enable1, LOW); digitalWrite(motor1a, LOW); digitalWrite(motor2a, LOW); digitalWrite(motor1b, LOW); digitalWrite(motor2b, LOW); } /* blinks a LED */ void blink(int whatPin, int howManyTimes, int milliSecs) { int i = 0; for(i=0; i<=3; i++) { digitalWrite(ledPin, HIGH); delay(100/2); digitalWrite(ledPin, LOW); delay(100/2); } serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Strat asteapta \n\r"); serial.print("\n\r"); } void rectsop() { if (irrecv.decode(&results)) irrecv.resume(); // Receive the next value } void loop() { rectsop(); if(results.value==16730805) { Forward(); serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Inainte (2) \n\r"); serial.print("\n\r"); } if(results.value==16726215) {Stop(); serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Stop (5) \n\r"); serial.print("\n\r"); } if(results.value==16734885) { Right(); serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Dreapta (6) \n\r"); serial.print("\n\r"); } if(results.value==16716015) { Left(); serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Stanga (4) \n\r"); serial.print("\n\r"); } if(results.value==16718055) { Reverse(); serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Inapoi (8) \n\r"); serial.print("\n\r"); } if(results.value==16750695) {digitalWrite(led, HIGH); serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Aprinde LED \n\r"); serial.print("\n\r"); } if(results.value==16754775) {digitalWrite(led, LOW); serial.print("$CLEAR\n\r"); serial.print("$GO 1 1\n\r"); serial.print("$PRINT Stinge LED \n\r"); serial.print("\n\r"); }}