Buon giorno a tutti (state sani),
da qualche ora, mi sto scontrando col problema, sembra che non posso accedere alla funzione "SWITCH".
ho messo diversi serial print per poter verificare su monitor seriale se la funzione risponde o meno.
niente, il monitor printa sempre e solo " sono in loop: " ed il compilatore compila e non segnala errori.
questo skeetch fa parte di uno piu complesso con altre funzioni che si comportano regolarmente.
probabilmente non riesco a veder gli alberi perchè coperti dal bosco........
felice di qualsiasi suggerimento.
grazie in anticipo....... buona giornata.
[ /* Rotary encoder test ≠
MOD WP
*/
#define clk 3 // set variabili globali
#define data 2
#define FIRE 10
byte ledStato = LOW;
byte pulsanteStato = HIGH;
#define Debounce 50
unsigned long ultimoTempoDebounce = 0;
byte ultimaLettura = LOW;
int counter = 0;
bool clk_State;
bool LastState;
void setup() {
pinMode (clk,INPUT); //Set pins come inputs
pinMode (data,INPUT);
pinMode(FIRE,INPUT);
pinMode(LED_BUILTIN, OUTPUT); // Set pin LED_BUILTIN come OUTPUT
digitalWrite(LED_BUILTIN, ledStato);
Serial.begin (9600); //Set porta seriale =>Stampa sul monitor
LastState = digitalRead(clk); // Set val inizio CLK Encoder
}
void loop() {
void SWITCH ();
Serial.println(" sono in loop: ");
delay(500);
}
void SWITCH () // funzione SWITCH
{ // READ ENCODER
Serial.println(" sono in SWITCH: ");
delay(500);
clk_State = digitalRead(clk); // Legge valore "currente" CLK Encoder
if (clk_State > LastState){ // SE val prima e "currente" CLK sono =/= => c'è stato uno step
if (digitalRead(data) != clk_State) { // Se DT encoder =/= CLK, => encoder senso ORARIO
counter ++;
Serial.print("Clockwise");
} else {
counter --;
Serial.print("ANTI-Clockwise");
}
Serial.print(" Position: ");
Serial.println(counter);
}
LastState = clk_State; // Aggiorna previous stato del CLK con l'attuale
//if(digitalRead(FIRE) != 1)
//delay(100);
//{Serial.println("FIRE");
// READ SWITCH Encoder CON DEBOUNCE
byte lettura = digitalRead(FIRE); // (lettura = Variabile locale) stato pulsante
if(lettura != ultimaLettura){ // se stato pulsante è =/= ultima lettura
ultimoTempoDebounce = millis(); // allora assegno il conteggio in millis
}
if((millis() - ultimoTempoDebounce) > Debounce){ // se conteggio > 50 millisec
if(lettura != pulsanteStato and lettura == LOW){ // se Puls =/= stato del Puls e anche premuto
ledStato = !ledStato; // =>cambio stato al LED_BUILTIN
digitalWrite(LED_BUILTIN, ledStato); // Set LED interno Nano al val ledStato
Serial.println("FIRE");
}
pulsanteStato = lettura; // assegno lo stato del FIRE
}
ultimaLettura = lettura; // assegno l`ultima lettura allo stato del pulsante
Serial.print("Pulsante ");
Serial.println(pulsanteStato);
Serial.print("ultimaLettura ");
Serial.println(ultimaLettura);
delay(100); // Ritardo 100 millis
}]