Il 07/10/19 23:50, Franz_aRTiglio ha scritto:
Sono costanti predefinite:
1 == true == HIGH 0 == false == LOWTant'e` vero che (1 + true + HIGH) == 3 :)
Il 07/10/19 23:50, Franz_aRTiglio ha scritto:
Sono costanti predefinite:
1 == true == HIGH 0 == false == LOWTant'e` vero che (1 + true + HIGH) == 3 :)
per via dei multistati pull_up/down ?
Il 08/10/19 00:08, Franz_aRTiglio ha scritto:
eh? (cit.)
Il 07/10/2019, Franz_aRTiglio ha detto :
Poi leggo che il dialetto arduino supporta il boleano true e false quindi non servono proprio "ON e OFF":
Boolean tasto = (digitalRead(8) = HIGH)
ogni altro caso; rimaneggiando il tuo codice:
int stato; //e questo a che serve ???? non c'e' nel codice int conteggio;
const int PREMUTO = 1; const int RILASCIATO = 0;
long t0; long t;
void setup() { Serial.begin(9600); pinMode(8, INPUT); stato = RILASCIATO; //e questo a che serve ???? non c'e' nel codice conteggio = 0; }
void loop(){
Boolean tasto = (digitalRead(8) = HIGH) if ((conteggio == 0) && tasto == true) { conteggio = true; t0 = millis(); digitalWrite(12, HIGH); Serial.println("Premiuto tasto"); }
if ((conteggio == true) && (tasto == false)) { conteggio = false; t = millis() - t0; if ((t >= 100) && (t 1000){ digitalWrite (12, LOW);} Serial.print("tempo="); Serial.println(t); } }
Il 08/10/2019, Claudio_F ha detto :
per me e' la cipolla (semicit.)
Dopo dura riflessione, Franz_aRTiglio ha scritto :
intendevo: dato che non ho MAI maneggiato arduino non capisco lo scopo di HIGH e LOW se poi sono ridondanti con TRUE e FALSE, chiedevo per
diversi oltre che al riferimento mnemonico, io arrivo da una "scuola" ove ogni bit e ciclo macchina era preziosissimo e fatico a concepire
e domandavo se potesse avere un senso visto che se nonho male l'oggetto e' multistato on/pull_up/pull_down/off...
Il 08/10/2019, Franz_aRTiglio ha detto :
dislessia portami via, manca un "capito":
capito
Il 08/10/19 00:21, Franz_aRTiglio ha scritto:
Immagino che gli ideatori abbiano pensato di "astrarre":
- usare true/false per le condizioni e variabili booleane
- usare LOW/HIGH per i livelli di ingresso/uscita
- usare 0/1 dove si trattano valori numerici
...il tutto solo per "chiarezza" o_O
Il fatto e` che e` una chiarezza niente affatto chiara per i principianti quali sono la maggior parte degli utenti arduini
Personalmente non vedrei nessuna difficolta` nell'usare dappertutto solo
0 e 1.Il 08/10/19 00:15, Franz_aRTiglio ha scritto: > Boolean tasto = (digitalRead(8) = HIGH)
boolean tasto = (digitalRead(8) == HIGH)
ma allora ancora meglio e piu` espressivo:
boolean premuto = (digitalRead(8) == HIGH)
Claudio_F ha spiegato il 08/10/2019 :
guarda, mi son trattenuto dal postare arcani tipo
if ( variabile = true == true) per semplificare per non complicargli
simulatore e ora sto pasticciando, tempo permettendo.
Il 07/10/19 17:03, Drizzt do'Urden ha scritto:
Il problema e` che va eliminato sia all'attacco che al rilascio.
Effettuare il debounce dentro la logica di gestione e` complicatissimo.
Effettuarlo invece "a parte", appena dopo la lettura dell'ingresso, e dare alla logica un valore pulito, e` molto piu` semplice.
unsigned long t; boolean inConteggio; unsigned long tDeb; byte premutoPrec; //------------------------------------------------- void setup() { pinMode(8, INPUT); inConteggio = false; premutoPrec = LOW; tDeb = millis() } //------------------------------------------------- void loop() { boolean premuto = (digitalRead(8) == HIGH);
if (premuto == premutoPrec) { tDeb = millis(); } else if (millis()-tDeb > 50) { premutoPrec = premuto; } premuto = premutoPrec;
if (!inConteggio && premuto) { t = millis(); accendi(); inConteggio = true; } else if (inConteggio && !premuto) { unsigned long trascorso = millis() - t; if (trascorso > 1000) { spegni(); } inConteggio = false; } }
Il 07/10/2019 23:31, Franz_aRTiglio ha scritto:
Ciao e grazie per l'impegno, spero tanto non stiate "lavorando" per nulla visto quanto sono zuccone :-)
Il codice per misurare il tempo premuto l'ho preso da un tutorial di Paolo Aliverti, me li sto guardando per imparare qualcosa e mi sto anche
attivare l'uscita quando mi serve, effettivamente anche io mi sono
miglior chiarezza per chi non conosce l'elettronica:
Il 08/10/2019 00:15, Franz_aRTiglio ha scritto:
Dunque, stamattina, prima di fare qualsiasi modifica al programma ho creato un anti rimbalzo hardware, giusto per vedere come reagiva Arduino e infatti il programma funziona (al di la di come sia scritto, sicuramente da snellire), mi rimane il dubbio del funzionamento del if
non vedo altro motivo per cui i rimbalzi vengano visti. Ora provo anche il tuo listato :-)
thread.
Prova questo sito di simulazione con arduino :
programmazione, funziona bene.
In questo caso non ti aspettare la giusta soluzione in simulazione :)
Il 08/10/2019 00:15, Franz_aRTiglio ha scritto:
Ho provato e con le dovute modifiche date dal linguaggio di arduino, funziona pure questo perfettamente, naturalmente con l'anti rimbalzo hardware, senza fa lo stesso difetto:
const int PREMUTO = 1; const int RILASCIATO = 0; int stato; int conteggio; long t0; long t;
void setup() { Serial.begin(9600); pinMode(2, INPUT); pinMode (12, OUTPUT); stato = RILASCIATO; //e questo a che serve ???? non c'e' nel codice conteggio = 0; }
void loop(){
boolean tasto = (digitalRead(2) == true); if ((conteggio == 0) && tasto == HIGH) { conteggio = HIGH; t0 = millis(); digitalWrite(12, HIGH); Serial.println("Premiuto tasto"); }
if ((conteggio == HIGH) && (tasto == LOW)) { conteggio = LOW; t = millis() - t0; if ((t >= 100) && (t 1000){ digitalWrite (12, LOW);} Serial.print("tempo="); Serial.println(t); } }
Il 08/10/2019 11:53, Franco Af ha scritto:
Grazie :-)
casi simili a quelli di un campo di database che distingue tra valore nullo e campo non assegnato. Non sono nel linguaggio C/C++ ma si incontrano spessissimo programmando.
-- - Vuoi la risposta in cm o in Euro?
Nel suo scritto precedente, Drizzt do'Urden ha sostenuto : ro che
No: e' il risultato logico dei controlli tra le parentesi:
int zz;
void loop() { zz++; if (zz >10 && zz
Il 08/10/19 11:20, Drizzt do'Urden ha scritto:
Alla pressione mi sembra che non ci siano effetti negativi sull'uscita, la variabile conteggio puo` oscillare un po' di volte da ON a OFF e viceversa ma l'uscita HIGH rimane HIGH (a proposito la digitalWrite HIGH nel secondo if non serve a niente, l'uscita e` gia` stata accesa nel primo if).
Invece al rilascio ogni rimbalzo fa riattivare il primo if e riaccendere l'uscita.
Hai visto anche la mia soluzione dell'1:22?
Il 08/10/2019 17:41, Claudio_F ha scritto:
Si, l'ho vista ora, oggi ho avuto da fare e non ho avuto tempo di fare delle prove, spero domani pomeriggio... non riesco mai a seguire la cosa come vorrei.
-- Saluti da Drizzt. www.agidone.altervista.org http://www.tappezzeriagraziella.com/ MAI PIU' OPEL IN VITA MIA!!!!
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.