Ciao a tutti,
qualcuno può cortesemente spiegarmi perchè questo programma che legge la posizione di due encoder funziona perfettamente non Uno e non con Nano?:
Hai avuto tempo per pensare al tuo problema ma non hai avuto tempo per sistemare il tuo post...
Comunque gli INT0 e INT1 sono sui pin D2 e D3, come sulla UNO. Una domanda: perché dichiari i pin 2 e 3 come input? All'avvio tutti i pin sono già impostati come input. Casomai hai messo delle pull-down su quei pin, visto che leggi il passaggio allo stato alto?
Non sapevo dell'input di default, sono alle prime armi con Arduino.
Non c'è bisogno di resistenze di pull-down perchè l'encoder è elettronico, non meccanico, poi ribadisco che su Uno tutto funziona perfettamente!
Grazie per l'aiuto
airbornepp:
Grazie Guglielmo!
Ho guardato i link che mi hai postato ma i due interrupt esterni sono collegati ai pin 2 e 3 sia per Uno che per Nano, o sbaglio?
Mea culpa ... perdona, hai ragione, sono gli stessi ... si vede che non ero ancora completamente sveglio ... perché ero convinto di aver letto pin differenti
Effettivamente è strano ...
... al di fuori della scheda, stai usando le stesse cose ? Stessi encoder, stessa alimentazione, ecc. ?
Guglielmo
Edit: Noto un'altra cosa ... hai dichiarato "volatile" due variabili (oldPositionX, oldPositionZ) che poi, in realtà, nelle ISR non usi, mentre NON hai dichiarato "volatile" le due variabili (positionX, positionZ) che realmente usi nelle ISR ...
Si, ho controllato e ricontrollato, ho addirittura collegato e ricollegato due volte i fili ma niente....
A questo punto penserei ad una scheda guasta.
Non so neanche se la Nano è originale, sul PCB c'è scritto:
ARDUINO
NANO
V3.0 www.funduino.com
LISA 2011
Hai proprio ragione per quanto riguarda le "Volatile"
Ok, almeno sintatticamente così lo hai corretto ...
Mah ... per tagliare la testa al toro, potresti provare con un piccolo programmino in cui semplicemente verifichi, uno per volta, il funzionamento dei due pin e dell'attachInterrupt() ...
... un qualche cosa di banale ... un pulsante ed un led che s'accende e si spegne ... giusto per essere sicuri che l'hardware funzioni ... prima di diventare matto a trovare un problema che ... magari non c'è ...