#include <IRremote.h>
int pwm_a = 3; //PWM control for motor outputs 1 and 2 is on digital pin 3
int pwm_b = 11; //PWM control for motor outputs 3 and 4 is on digital pin 11
int dir_a = 12; //direction control for motor outputs 1 and 2 is on digital pin 12
int dir_b = 13;
int RECV_PIN = 6;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
analogWrite(pwm_a, 100);
analogWrite(pwm_b, 100);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
delay (100);
irrecv.resume(); // Receive the next value
}
int val = results.value;
if(val == 2011275392) {
digitalWrite(dir_a, HIGH);
digitalWrite(dir_b, LOW);
}
else{
if(val == 2011271296){
digitalWrite(dir_a, LOW);
digitalWrite(dir_b, HIGH);
}
}
}
// 2011271296 e 2011275392 sono due tasti dell'Apple Remote
IR Receiver Diode - TSOP38238 - SEN-10266 - SparkFun Electronics ecco il diodo.
LED infrarossi lon ce ne sono c'è solo il diodo, il led è nel telecomando,
e per il diodo:
ho collegato la massa del diodo a GND poi l'ingresso ai 5v e l'out alla porta 6.
Poi l'arduino lo alimento a 9v con una batteria, e per l'ardumoto ho piegato il pin vin e ci ho attaccato 4 pile AA.
E il led come detto prima non c'è.
Ciao djtandrea
Il Tuo problema é che solo un motore gira mentre l'altro no?
Incominciamo a chiamare il TSOP382 ricevitore infarrossi.
Poi l'arduino lo alimento a 9v con una batteria,
dove hai collegato la batteria
l'ardumoto ho piegato il pin vin e ci ho attaccato 4 pile AA.
vuol dire che Vin di ardumotor non é collegato con Vin del Arduino, ma ai 6V delle batterie stilo? il polo delle Batterie Stilo é colegato a gnd?
Per i collegamenti del TSOP382xx avrai segiuto lo datasheet.
Il TSOP382xx é un fotodiodo con un amplificatore, filtro e demodulatore. La frequenza che lascia passare il filto é decodificato nel numero del componente dopo il numero 382. Quella frequenza dovrebbe corrispondere con quella del telecomando. Non é molto chiaro, ma mi sembra che quello che vende la sparkfun sia per 38Khz. È una frequenza molto usata e maggior parte dei telecomandi dovrebbero usare questa frequenza.
Vedo nel codice: int pwm_a = 3; //PWM control for motor outputs 1 and 2 is on digital pin 3 l' ardumotor usa i pin 10 a 13 percui pwm_a deve essere 10.
lo schema del Ardumoto lo trovi http://www.sparkfun.com/datasheets/Robotics/Ardumoto_v12.pdf
no, non ne gira nemmeno uno.
l'arduino è alimentato tramite l'entrata classica e l'ardumoto tramite uno Screw Terminals 3.5mm Pitch (2-Pin) - PRT-08084 - SparkFun Electronics collegato ai due fori accanto che si vedono accanto ai terminali per i motori.
per il codice è giusto il pin 3 secondo i commenti e secondo le prove effettuate.
Ciao djtandrea.
Scusami, noto solo adesso che ci sono 2 versoni diverse del ardumoto: la versione 12 usa i pin 10 al 13, la versione 13 i pin 3, 11-13.
Se hai controllato sará giusto il pin 3.
Domanda cretina; l'alimentazione della scheda é polarizzata giusta?
Ciao Uwe
secondo me il problema è che nel loop usa il digitalWrite() al posto dell'analogWrite()... il ponte H c'è scritto di governarlo col PWM!
altro problema che può nascereè che la libreria dell'infrarosso vada a giocare con i timer, spu++anando il PWM
djtandrea
per prova metti "pinMode(pwm_a, OUTPUT); digitalWrite(pwm_a, HIGH);" al posto di "analogWrite(pwm_a, 100);"
e la stessa cosa con pwm_b
Se li gira il motore é un problema di libreria.
ciao Uwe
al momento sto avendo un problema col porta-batterie per le stilo, perchè mi si è staccato il filo e non ho il saldatore ( lo comprerò a breve),
ma non penso sia quello il problema perchè i motori girano anche se l'output è analogico e penso che il problema non sia lì perchè cambierebbe poco.
cambia tanto. per il PWM vengono usati i timer intern del ATmega; la libreria IR anche lei visto che lavora con tempi potrebbe usare uno o piú timer e percui le 2 cose vanno in conflitto
Ciao Uwe