Go Down

Topic: impulso (Read 533 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:
no comment

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