Go Down

Topic: #define (Read 217 times) previous topic - next topic

pubblic

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
  }
}


gpb01

#1
Dec 27, 2018, 07:26 pm Last Edit: Dec 27, 2018, 07:26 pm by gpb01
Buonasera,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...

... dopo di che, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, fino a quando non sarà fatta la presentazione e sistemato il codice, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)
Search is Your friend ... or I am Your enemy !

Go Up