Eu am testat doar un motoras de curent continuu, asa ca tot pentru asta voi face testele...
In prima faza am conectat la o placa Arduino Nano (asta era la indemana, dar se pot folosi majoritatea placilor de dezvoltare) la receptor, conectand cele 4 iesiri ale receptorului la placa Arduino (D2, D3, D4, D5) si testand modul de functionare, iesirile A sa aprinda un led la intensitatea reglata, respectiv B pentru a aprinde alt led la intensitatea reglata, iesirea C comanda scaderea intensitatii, iar D cresterea acesteaia, dupa cum se vede in filmuletele;
- Sistem de comanda radio pentru directie si turatie motor de curent continuu
Programul folosit se numeste slider_0.ino si poate fi testat fara probleme... din el reies si conexiunile dintre placa Arduino si receptor; curand voi posta si schema de conexiuni...
Am achizitionat un sistem de telecomanda prin infrarosu (ca orice telecomanda clasica) de pe ebay, care arata cam asa:
Am cautat pe net si am datexista articolul numit Infrared (IR) Remote, unde gasim destule date sa facem un prim test, mai ales ca ne prezinta receptorul de infrarosu.
In interiorul articolului esteera un capitolas chiar despre acest model de telecomanda "car mp3", incluzand si un sketch:
/* YourDuino.com Example Software Sketch IR Remote Kit Test Uses YourDuino.com IR Infrared Remote Control Kit 2http://arduino-direct.com/sunshop/index.php?l=product_detail&p=153 based on code by Ken Shirriff - http://arcfn.com Get Library at: https://github.com/shirriff/Arduino-IRremote Unzip folder into Libraries. RENAME folder IRremote terry@yourduino.com *//*-----( Import needed libraries )-----*/
#include "IRremote.h"/*-----( Declare Constants )-----*/int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11/*-----( Declare objects )-----*/IRrecv irrecv(receiver); // create instance of 'irrecv'decode_results results; // create instance of 'decode_results'/*-----( Declare Variables )-----*/voidsetup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600);
Serial.println("IR Receiver Raw Data + Button Decode Test");
irrecv.enableIRIn(); // Start the receiver
}/*--(end setup )---*/voidloop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
// Serial.println(results.value, HEX); UN Comment to see raw values
translateIR();
irrecv.resume(); // receive the next value
}
}/* --(end main loop )-- *//*-----( Declare User-written Functions )-----*/void translateIR() // takes action based on IR code received// describing Car MP3 IR codes
{
switch(results.value)
{
case 0xFFA25D:
Serial.println(" CH- ");
break;
case 0xFF629D:
Serial.println(" CH ");
break;
case 0xFFE21D:
Serial.println(" CH+ ");
break;
case 0xFF22DD:
Serial.println(" PREV ");
break;
case 0xFF02FD:
Serial.println(" NEXT ");
break;
case 0xFFC23D:
Serial.println(" PLAY/PAUSE ");
break;
case 0xFFE01F:
Serial.println(" VOL- ");
break;
case 0xFFA857:
Serial.println(" VOL+ ");
break;
case 0xFF906F:
Serial.println(" EQ ");
break;
case 0xFF6897:
Serial.println(" 0 ");
break;
case 0xFF9867:
Serial.println(" 100+ ");
break;
case 0xFFB04F:
Serial.println(" 200+ ");
break;
case 0xFF30CF:
Serial.println(" 1 ");
break;
case 0xFF18E7:
Serial.println(" 2 ");
break;
case 0xFF7A85:
Serial.println(" 3 ");
break;
case 0xFF10EF:
Serial.println(" 4 ");
break;
case 0xFF38C7:
Serial.println(" 5 ");
break;
case 0xFF5AA5:
Serial.println(" 6 ");
break;
case 0xFF42BD:
Serial.println(" 7 ");
break;
case 0xFF4AB5:
Serial.println(" 8 ");
break;
case 0xFF52AD:
Serial.println(" 9 ");
break;
default:
Serial.println(" other button ");
}
delay(500);
} //END translateIR/* ( THE END ) */
Pe ecran am obtinut:
Am apelat si la alt articol, numit IRremote Library de pe http://www.pjrc.com/, unde ma gasit un alt sketch simplu, care identifica tipul de codare.
Se observa ca apare tipul ca fiind NEC si, pe langa codurile receptionate corect, apar si erori "FFFFFFFF", mai ales daca tin apasat un buton mai mult, deci sunt sanse mari sa fie de vina bateria, pe care am achizitionat-o separat:
Montajul arata asa:
Am modificat sketch-ul, cu senzorul de infrarosu la pinul 11, iar la pinii 6, 9 si 5 sunt conectate LED-urile rosu, verde si albastru dintr-un LED multicolor (RGB) cu catod comun prin rezistente de 180, 100, respectiv 100 ohmi. Schema este:
Starile LED-ului vor fi asa: - apas 0, se sting toate LED-urile indiferent de starea anterioara; - apas 1, se aprinde LER-ul albastru la maxim; - apas 2, se aprinde LED-ul verde la maxim; - apas 3, se aprinde LED-ul rosu la maxim; - apas 4, se aprinde LED-ul albastru la jumatate; - apas 5, se aprinde LED-ul verde la jumatate; - apas 6, se aprinde LED-ul rosu la jumatate; - apas 7, se stinge LED-ul albastru; - apas 8, se stinge LED-ul verde; - apas 9, se stinge LED-ul rosu. Sketch-ul este:
/* YourDuino.com Example Software Sketch IR Remote Kit Test Uses YourDuino.com IR Infrared Remote Control Kit 2http://arduino-direct.com/sunshop/index.php?l=product_detail&p=153 based on code by Ken Shirriff - http://arcfn.com Get Library at: https://github.com/shirriff/Arduino-IRremote Unzip folder into Libraries. RENAME folder IRremote terry@yourduino.com *//*-----( Import needed libraries )-----*/
#include "IRremote.h"/*-----( Declare Constants )-----*/int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11/*-----( Declare objects )-----*/IRrecv irrecv(receiver); // create instance of 'irrecv'decode_results results; // create instance of 'decode_results'/*-----( Declare Variables )-----*/// other int ledr = 6; //pin for red LEDint leda = 5; //pin for blue LEDint ledv = 9; //pin for green LEDvoidsetup() /*----( SETUP: RUNS ONCE )----*/
{
Serial.begin(9600);
Serial.println("IR Receiver Raw Data + Button Decode Test");
Serial.println("0 = all off");
Serial.println("1 = blue LED is 100%");
Serial.println("2 = green LED is 100%");
Serial.println("3 = red LED is 100%");
Serial.println("4 = blue LED is 50%");
Serial.println("5 = green LED is 50%");
Serial.println("6 = red LED is 50%");
Serial.println("7 = blue LED is off");
Serial.println("8 = green LED is off");
Serial.println("9 = red LED is off");
Serial.println("---------------------------------------------");
irrecv.enableIRIn(); // Start the receiver// initial state for LEdsanalogWrite(ledr, 0);
analogWrite(leda, 0);
analogWrite(ledv, 0);
}/*--(end setup )---*/voidloop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
// Serial.println(results.value, HEX); UN Comment to see raw values
translateIR();
irrecv.resume(); // receive the next value
}
}/* --(end main loop )-- *//*-----( Declare User-written Functions )-----*/void translateIR() // takes action based on IR code received// describing Car MP3 IR codes
{
switch(results.value)
{
case 0xFFA25D:
Serial.println(" CH- ");
break;
case 0xFF629D:
Serial.println(" CH ");
break;
case 0xFFE21D:
Serial.println(" CH+ ");
break;
case 0xFF22DD:
Serial.println(" PREV ");
break;
case 0xFF02FD:
Serial.println(" NEXT ");
break;
case 0xFFC23D:
Serial.println(" PLAY/PAUSE ");
break;
case 0xFFE01F:
Serial.println(" VOL- ");
break;
case 0xFFA857:
Serial.println(" VOL+ ");
break;
case 0xFF906F:
Serial.println(" EQ ");
break;
case 0xFF6897:
{
Serial.println(" 0 ");
analogWrite(ledr, 0);
analogWrite(leda, 0);
analogWrite(ledv, 0);
}
break;
case 0xFF9867:
Serial.println(" 100+ ");
break;
case 0xFFB04F:
Serial.println(" 200+ ");
break;
case 0xFF30CF:
{
Serial.println(" 1 ");
analogWrite(leda, 255);
}
break;
case 0xFF18E7:
{
Serial.println(" 2 ");
analogWrite(ledv, 255);
}
break;
case 0xFF7A85:
{
Serial.println(" 3 ");
analogWrite(ledr, 255);
}
break;
case 0xFF10EF:
{
Serial.println(" 4 ");
analogWrite(leda, 122);
}
break;
case 0xFF38C7:
{
Serial.println(" 5 ");
analogWrite(ledv, 122);
}
break;
case 0xFF5AA5:
{
Serial.println(" 6 ");
analogWrite(ledr, 122);
}
break;
case 0xFF42BD:
{
Serial.println(" 7 ");
analogWrite(leda, 0);
}
break;
case 0xFF4AB5:
{
Serial.println(" 8 ");
analogWrite(ledv, 0);
}
break;
case 0xFF52AD:
{
Serial.println(" 9 ");
analogWrite(ledr, 0);
}
break;
default:
Serial.println(" other button ");
}
delay(500);
} //END translateIR/* ( THE END ) */
Din pacate, bateria achizionata a fost consumata/veche, asa ca si-a dat duhul: