Go Down

Topic: impulso (Read 598 times) previous topic - next topic

valente

salve a tutti
sono nuovo , forse non e' il posto giusto  per postare la mia domanda ma mi scuserete

ho un problema nel compilare lo sketch , con la funzione    if(digitalRead(tasto_D)==LOW)   devo andare a leggere se un pulsante e' stato  premuto oppure no' ,il mio problema e' che   'l'impulso sul tasto D non e' prolungato abbastanza e
non avviene proprio quando e' eseguita quella riga del programma , quindi il tasto D e' stato premuto , ma non viene letto dalla funzione di cui sopra .Chiedo come posso fare ,a , far vedere che il tasto e' stato premuto ,anche se non proprio nell'istante giusto ?
vale a dire posso memorizzare l'avvenuta pressione del tasto D , affinche' il programma possa leggerla quando arriva in quel punto ?

non so' se sono riuscito a spiegarmi , ma il tasto_D ,premuto momentaneo , possa diventare permanente  fino all'esecuzione della riga in cui viene letto.

sicuramente e' una cosa semplice ma non riesco a cavarci le gambe , sono autodidatta ,senza basi di programmazione

saluti a tutti  Valente :smiley-fat: :smiley-eek:

nid69ita

Posta il programma che hai fatto. Mi sembra strano che tu sia più veloce della macchina.
Se premi un tasto lo fai molto lentamente rispetto alla macchina. A meno che hai un codice molto lento oppure hai messo la lettura nel posto sbagliato.
my name is IGOR, not AIGOR

uwefed

Anche secondo me é un problema di Sketch e com un Sketch scritto in modo opportuno risolvi il problema. Dacci lo sketch.
Ciao Uwe

pablos

Già anche a me pare strano quando dovresti avere qualche migliaia di cicli/sec, se usi dei delay() può succedere, ma ci sono alternative, se proprio è impossibile ovviare allora ci sono gli interrupt come ultima spiaggia :smiley-mr-green:
L'esperienza è il tipo di insegnante più difficile ....
Prima ti fa l'esame e poi ti spiega la lezione.

valente

grazie OK

il problema e' questo : al punto IF  io devo spengere relay 1 se il tasto D e' stato premuto  dopo relay 4 ,in qualsiasi momento anche solo una volta o piu' volte di seguito durante il delay 5000.
adesso funziona solo se, alla fine del delay5000 il tasto D VIENE TROVATO premuto  , (LOW) .

siccome sono alle prime armi ,ho scelto io IF ma ho provato anche  WHILE ma senza successo , ora non so' piu' cosa scrivere  al posto di IF
ho postato lo sketch  ,sequenza -prova-2 .spero si ved ^_^a :~

grazie per il gentile aiuto

uwefed

Il problema é i delay() che usi.
Sostituisi i delay con un controllo del tempo trascorso con millis()
http://opensourcehardwarejunkies.com/tutorial-12-blink-an-led-without-using-the-delay-function/

Ciao Uwe

leo72


Il problema é i delay() che usi.
Sostituisi i delay con un controllo del tempo trascorso con millis()
http://opensourcehardwarejunkies.com/tutorial-12-blink-an-led-without-using-the-delay-function/

Ciao Uwe

Suggerisco una guida in italiano  ;)
http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/

valente

:)  grazie delle risposte
faccio delle prove  con millis , spero di risolvere , intanto mi studio i link che mi avete postato

saluti valente :smiley-roll: :smiley-roll:

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy