stavo cercando di provare a usarlo, ma non sono riuscito. Uso un telecomando panasonic, e quindi la libreria Irremote dovrebbe leggere i suoi segnali. Provando e riproando non riesco come fare a collegarlo e neanche a programmarlo...
Non si capisce quale è il problema. Bisogna vedere una cosa alla volta.
Primo, come lo hai collegato?
Qui una serie di schede per i collegamenti: ABC - Arduino Basic Connections - Megatopic - Arduino Forum
Scheda numero 20. Al fondo c'e' il sito con i pdf in versione alta definizione.
ho provato a collegare il ricevitore come dice un tutorial (le schede ABC non riesco ad ingrandirle) ovvero con la terra da una parte, 5 v dall altra e in mezzo ad un pin digitale, ma mentre provavo a programmare ho sentito che il ricevitore ir era molto caldo allora ho staccato. Come posso collegarlo?
Grazie mille, sono finalmente riuscito a farlo funzionare. Ora pero non capisco una cosa: nel monitor seriale leggendo i dati arrivati schicciando il pulsante 1 dieci volte, sono tutti diversi!!
prendi il mio commento come una battuta... perché non ne so nulla.
ma ieri ho provato un circuito simile e mi pare di aver capito che premendo lo stesso pulsante si genera un codice che fa parte di un set di codici utilizzati per fare quell'azione. CIoè in sostanza ci sono N codici che indicano quell'azione.
Ripeto aspetta qualcuno che sarebbe stato in grado di risponderti anche l'altro ieri...
Strano. Alcuni telecomandi quando tieni premuto lo stesso tasto inviano sempre stesso codice, altri mandano 1 volta il codice giusto e poi un codice univoco che indica "tasto ripetuto".
ri salve a tutti,
apro di nuovo questo topic perche ho riscontrato un problema: la mia intenzione era quella di creare un robot controllato in remoto, ma provando ho scoperto che la libreria iremote interferisce con i motori e non li fa piu funzionare.
Sopratutto un comando (sotto) e quello che commentato rende i motori funzionanti, ma quando lo discommento non vanno piu avanti.
Questo e lo sketch che ho usato all'inizio:
#include <IRremote.h>
int RECV_PIN = 2;
boolean Avanti=false;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(3,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
if(results.value == 0x219EA05F) Avanti=true;
if (Avanti==true) subAvanti();
}
void subAvanti()
{
Serial.println("Avanti");
analogWrite(3,100);
analogWrite(11,100);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
e questo e quello che ho usato per capire come mai i motori non partivano:
Purtroppo ho idea che non è di facile soluzione ...
Se si guarda IRremote.cpp, si vede che la IRremore manipola Timer2 che ... guarda caso ... è il Timer che a sua volta controlla il PWM dei pin 3 e 11 ...
Non vedo altra soluzione che cambiare i pin dei motori.
Purtroppo, se la shield li ha cablati fissi, dovrai interrompere fisicamente i piedini e unirli, con un filo, a due piedini liberi di PWM che non siano sotto il controllo di Timer 2 ...
Ricorda che :
Timer 0 : controlla il PWM dei pin 5 e 6
Timer 1 : controlla il PWM dei pin 9 e 10
... scegli tu ...
Guglielmo
P.S. : Ah ... occhio, la libreria Servo, usa Timer 1 e quindi, se domani ti servisse di controllare anche dei Servo ... non potresti avere PWM sui pin 9 e 10 ... tienilo a mente ...
L'else è per Arduino Uno, puoi cambiare da TIMER2 a TIMER1 ma quelli sono i pin.
Se tu usassi la Arduino Mega allora avresti più possibilità, potendo scegliere tra più timer
scusate quindi se io cambiassi il commento da timer 1 a timer 2 i pin del timer dalla libreria sarebbero 9-10??
In questo caso il 10 sulla motor shield e completamente libero e il 9 è il brake del motore A, pero se non usassi quel pin come brake A la libreria potrebbe funzionare?
Federico99:
scusate quindi se io cambiassi il commento da timer 1 a timer 2 i pin del timer dalla libreria sarebbero 9-10??
Si, commenta IR_USE_TIMER2 e togli il commento a IR_USE_TIMER1, dopo di che ... prova (non usando i pin 9 e 10 per il PWM, per altre cose le puoi usare) e verifica se il tutto funziona ...
Ricorda solo che così non potrai mai usare la libreria Servo che usa lo stesso Timer.