Al momento non ho "attaccato" nulla al pin di interrupt.
Il problema è il seguente:
Maneggiando la BOX mentre all'interno è in esecuzione arduino col programma sopra citato, viene lanciata la funzione GestInt() autonomamente, a causa presuppongo di una corrente generata al contatto con le dita sulla BOX di arduino.
Anche maneggiando Arduino senza BOX accade questo, e con maggior evidenza.
E' possibile che i pin di interrupt di arduino siano sensibili a un amperaggio cosi' basso generato dal tatto ? e che basti toccare il silicio di arduino o addirittura la BOX per attivare un interrupt?
Se cosi' fosse, come posso risolvere il problema almeno che non avvenga con la box ?
dovrei riceve degli impulsi di durata 250ms, e ad ogni impulso laciare la relativa funzione.
aggiungo che Ho lo stesso problema anche utilizzando ArduinoUno.
sicuro che serva un interrupt per fare questa cosa?
le istruzioni di lettura e scrittura della seriale non vanno mai messe in una routine di interrupt perchè a loro volta ne fanno uso.
su un pin di arduino lasciato flottante puoi leggere tensioni variabili quindi dovresti mettere una resistenza di pulldown( o pullup a seconda della logica che adotti), per tenere il pin al potenziale desiderato e non randomico.
Non puoi utilizzare un 7805, quei circuiti integrati servono per regolare un'alimentazione, non un segnale. Sono molto lenti all'accensione ed inoltre sempre all'accensione hanno un transitorio dove l'uscita oscilla per un po' e poi si stabilizza. Non sono fatti per fare quello che vuoi fare te. Io userei un buon vecchio partitore resistivo.
Avevo fatto anche il calco della ressitenza del partitore che mi serviva, ma poi mi hanno consigliato di utilizzare L7805, forse perche' non ho bisogno di precisione, e gli impulsi non sono moto ravvicinati...(max 30 sec) ?
hai ragione al massimo come hai detto tu janos utilizzo il buon vecchio partore !
con la readdigital() ottengo lo stesso discorso BrainB: al tatto ogni tanto parte automaticamente una lettura di stato HIGH, (i pin digital sembrano essere sensiblissimi anche al tatto della box esterna).
quindi ho risolto con una semplice lettura analogica;
sapendo che il segnale ALTO dura massimo 250 ms e ha cadenza massima di 60sec :
800 dovrebbe essere sui 4 Volt vero ? facendo la proporzione:
1024/5 = 800/x => X = 800*5/1024 = 3,9 V
in questo modo al tatto non capito mai dentro all'IF essendo la tensione ricercata abbastanza alta e pare che sto risolvendo il problema.
Potrebbe andare bene la segente logica ?
potrei provare comunque col componente L7805 visto che non ho bisogno di precisione, o abbandono anche l'idea di provare ?