Allora ho un albero su cui è montato un disco con una finestra e 2
fotocellule che leggono questo disco al pari di un encoder, voglio
realizzare un conta giri con arduino che possa leggere i giri in un
senso incrementando e nel senso opposto decrementando il valore, ci sono
riuscito perfettamente senza usare gli interrupt il problema è che
funziona finchè i il numero dei giri è basso, se aumenta la velocità non
ci sta più dietro, ho quindi trovato questo esempio per fare la stessa
cosa usando gli interrupt:
https://electronoobs.com/eng_arduino_tut125.php
(l'esempio è circa a metà pagina)
Allora il problema di perdere i passi me lo risolve effettivamente, il
problema è che in avanti conta sempre 2 passi alla volta perchè rileva
il cambio di stato del piedino che da 0 va a 1 e incrementa 1, poi da 1
torna a zero e incrementa ancora di 1 e li ho risolto poi dividendo per
2 il valore del contatore prima di stamparlo a display, il secondo
problema invece è che non riesco in nessun modo a farlo contare a
rovescia in nessunissimo modo, quando l'albero gira a rovescia fa
un'incremento di 1 seguito subito da un decremento di 1, quindi vedi la
cifra che avanza e torna indietro restando sempre allo stesso valore.
Non sono riuscito a risolvere in nessun modo oppure se mi conta
all'indietro dopo non conta in avanti.
Non voglio usare logiche cablate, in realtà ho già un contatore a
logiche (che ho usato per confrontare i conteggi del mio circuito ed
essere sicuro che contasse bene) ma mi serve l'arduino perchè voglio
implementare altre funzioni come un segnale acustico al raggiungimento
di un certo numero di passi contati che posso impostare arbitrariamente
di volta in volta o la lettura di switch e altre cose.
A un certo punto durante le mie prove ero riuscito a farlo funziona in
qualche modo impostando counter come float e nel senso in avanti
incrementavo di 0,5 mentre all'indietro decrementavo di 1,5, funzionava
bene finchè da zero non andavo nei numeri negativi a quel punto
funzionava lo stesso con il numero del display che in certi casi vedevi
che avnazava e tornava indietro, sempre segnalando corretto... ma mi
pare che float non supportsa i numeri negativi quindi sicuramente stava
facendo errori e in generale la soluzione mi sembra un workaround orribile.