Ciao a tutti, ho realizzato questo codice che mi permette di far muovere un motore passo-passo con due codici IR. L'unico problema è che durante la verifica del codice, mi dice "FF18E7 was not declared in this scope". Il codice mi sembra giusto... Qualcuno che mi possa aiutare??
Grazie
#define comandoAvanti FF18E7 // Tasto 1
#define cmdIndietro FF4AB5 // Tasto 2
#include <IRremote.h>
#include <Bounce2.h>
include <AccelStepper.h>
//definizione dei pin
const int motoreDir = 2;
const int motoreStep = 3;
const int pinBtnAvanti = 4;
const int pinBtnDietro = 6;
const int pinEnable = 7;
//uso il led onboard di Arduino, per avere un riscontro visivo dello stato di marcia o di stop
const int pinLedStato = 13;
/*
Velocità del motore in numero di step per secondo
Come riportato nella descrizione di AccelStepper, massimo 4000 per un Arduino UNO.
4000 steps per second at a clock frequency of 16 MHz on Arduino such as Uno
*/
const float velocita = 1000;
//Millisecondi per il debounce dei pulsanti
const int debounceMs = 10;
//Stato e direzione
boolean abilitato, direzione;
//Creazione istanza del motore
AccelStepper motore(AccelStepper::DRIVER, motoreStep, motoreDir);
//Creazione istanze dei pulsanti
Bounce btnAvanti = Bounce();
Bounce btnDietro = Bounce();
// definizione del ricevitore IR
int RECV_PIN = 8; //Pin a cui collegrae il LED IR
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Inizializza il ricevitore IR
//imposto stato e direzione iniziali (motore fermo)
abilitato = direzione = false;
//definizione della modalità dei pin
pinMode(pinBtnAvanti, INPUT);
pinMode(pinBtnDietro, INPUT);
pinMode(pinEnable, OUTPUT);
pinMode(pinLedStato, OUTPUT);
//impostazione pullUp per i pin dei bottoni
digitalWrite(pinBtnAvanti, HIGH);
digitalWrite(pinBtnDietro, HIGH);
//setta stato del pin enable e del led di stato
digitalWrite(pinEnable, !abilitato);
digitalWrite(pinLedStato, abilitato);
//configurazione parametri motore
motore.setMaxSpeed(velocita);
motore.setSpeed(velocita);
//inizializzazione bottoni
btnAvanti.attach(pinBtnAvanti);
btnAvanti.interval(debounceMs);
btnDietro.attach(pinBtnDietro);
btnDietro.interval(debounceMs);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, NEC);
switch (results.value)
{
case comandoAvanti: // comando avanti tasto 1
abilitato = true;
direzione = true;
break;
case cmdIndietro: // comando indietro tasto 2
abilitato = true;
direzione = false;
break;
default:
Serial.println(" other button ");
}
// End Case irrecv.resume(); // Receive the next value
//cambia stato ai pin ENABLE e LedStato
digitalWrite(pinEnable, !abilitato);
digitalWrite(pinLedStato, abilitato);
//se abilitato == true
if (abilitato) {
//in base al valore di direzione
if (direzione) {
//imposta velocità (e senso)
motore.moveTo(1000);
} else {
//imposta velocità negata (inversione di marcia)
motore.moveTo(-1000);
}
//muovi il motore
motore.run();
delay(6000);
} else { //se abilitato == false
//in realtà questa istruzione viene ignorata inquanto il pin ENABLE del modulo
//è stato impostato ad HIGH e quindi le uscite dei FET sono spente
motore.stop();
}
irrecv.resume(); // Receive the next value
}
}