ovviamente penserete cosi lo mantiene gia ... ma c'è il programma dopo che ripete vari cicli e quindi se cambiano le condizioni mi va a settare il pin 7 in low... vorrei forzare di mantenerlo per 1 secondo a prescindere
fai un filo di casini su i sue bottoni ....
fire e stop_fire sono due "in" ?
se si .. fai due cicli diversi o usa un solo bottone...
e comunque..
int Fuoco=digital.Read(fire);
if (fuoco == HIGH) {
int spara=digital.Read(7);
if (spara == HIGH) {
digitalWrite(7, LOW);
}
else{
digitalWrite(7, HIGH);
}
Ciao Schwibby
non ti sei spiegato abbastanza perché ti possa dare una risposta giusta.
Tu vuoi che il pin 7 rsti al minimo 1 secondo LOW anche se la pausa tra il rilacio del pulsante e il rischiacciare é sotto un secondo?
Ciao Uwe
in pratica stop_fire è un pulsante generale che se non attivato non fa andare a 1 il fire
è tipo una sicura
in italiano e non arduino sarebbe :
puoi sparare solo se anche il pulsante stop_fire è attivo (se non hai tolto la sicura non sparo)
fatta questa premessa vorrei che con il delay a 1 secondo succeddesse
se la sicura è disattivata (pulsante premuto) e devo sparare quando sparo tengo premuto il grilletto per un secondo di filaù
questo mi serve perchè se nel lasso di tempo (1 secondo) che sto sparando arriva un altro imput ci sia un fuoco continuo (raffica) e non tanti spari singoli...
piu semplice ho un led .. ((con le premesse di prima ) che una volta attivato resta acceso per un secondo e non accendi/spegni subito ... nel frattempo se arriva un altro impulso (entro il secondo che lui è acceso) continui a rimanere acceso..
non so se mi sono spiegato ... per ora ho corretto cosi :
int fire = 0; // if 1, fire; else, don't fire
int Stop_Fire = 0; // Variabile per Smettere di Sparare
if(fire == 1) {
if(Stop_Fire == HIGH) {
digitalWrite(7, LOW); }
else{
digitalWrite(7, HIGH);
delay(1000); }
però non ho modo di provare se funziona per un paio di gg
ripeto che comunque è solo una porzione di codice , che mi interessa modificare per far si che accada quello che ho spiegato prima
millis() è una funzione molto importante nell'ambiente arduino, ti evita molti grattacapi quando non puoi usare il delay come nel tuo caso. Nel link che ti inserisco c'è un ottima guida su come usare millis, è stata scritta da nathanvi ed è molto ben fatta. Spiega bene la differenza tra millis e delay, dovresti leggerla e vedrai che ti è tutto più chiaro. Non è che non voglio aiutarti passandoti lo sketch, è solo per esperienza personale ti dico che altrimenti con la pappa pronta non lo capiresti.
Prova poi se qualcosa non ti è chiaro posta il codice e lo sistemiamo, saluti.
negli esempi è sempre if millis < 5 per dire se sono passati almeno 5ms ... ma io lo devo usare in un else
dato che il millis è un contatore di tempo.... come faccio a dirgli di aspettare un secondo? cioè lui conta
XD sto facendo casino
stasera rileggo tutto e riprovo a capire... perchè non capisco la logica del millis nel mio caso ... cioè lui conta da quando è acceso arduino... io devo invece usarlo per fare una pausa tipo
Ti ho scritto un piccolo esempio su come funziona millis(), sono due sketch che fanno la stessa cosa ossia un semplice contatore. Il primo usa il delay e il secondo millis: