Go Down

Topic: mettere HIGH un pin solo se un numero aumenta o diminuisce minimo di 2 (Read 348 times) previous topic - next topic

gingardu

come fare per far si che una variabile long passato un secondo dall'ultima variazione
se aumenta o diminusce almeno di due unita porta alto un pin
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

lesto

non puoi collegare "eventi" ad unsa semplice variabile.

esempio di classe in pseudocodice farlocco:
classe numeroVariabile:
set numero: vecchioNumero = numer, numero = x, dataModifica = millis();
get numero: return numero
getStatoPin: if abs(vechioNumero-numero) >= 2 and millis() - dataModifica > 1000 {retun acceso}else{return false;}

ogni loop fai digitalWrite( pin, classe.getStato() )
ovviamente per settare il valore dore in poi on farai più numero = X o classe.numero=x, ma dovrai fare classe.setNumero(x). Per evitare errori puoi fare che la varibaile numero nella classe è private (ovvero la vede solo la classe) mentre ovviamente dovrai fare i get e il set pubblici, alrimenti non potrai usarli dal resto codice

se non vuoi fare ogni loop, ma con gli interrupt, allora ogni setNumero dovrai impostare un timer per fare il conto alla rovescia, ed intercettare il suo interrupt con aspposita ISR (vedi le librerie timer di leo72 per maggiori info)

ovviamente si può fare anche senza classe, ma ovviamente nasce il problema che ogni volta che setti il numero devi ricordarti di fare le operazioni che ci sono nella setnumero (potresti usare una funzione) oltre al problema che puoi accedere a numero direttamente(essendo globale), e magari per errore fai casino. Insomma la classe ti limita le possibilità di fare casino, poi vedi te.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

gingardu

mi sa che devo andare dallo psicologo per vedere cosa mi è successo  ]:D
quello che hai scritto  è comprensibile  :D
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

Go Up