Discussione timer display con arduino uno

hacksoldier98

Utente Silver
7 Gennaio 2016
261
11
7
71
Buonasera a tutti,
sono un paio di giorni che mi imbatto con questo progetto preso da questo link https://www.progettiarduino.com/31-arduino-timer-display-4-cifre.html controllato più' e più' volte i cavi, resistenze ma nulla. Premetto che non so nulla di elettrotecnica ma pensavo che collegando bene i cavi e con il programma scritto a fine link ci sarei saltato fuori. Il problema e' il seguente:
Appena schiaccio il bottone il led si mettono ad attendere es. -.-.-.-. quando dovrei tenere premuto il bottone per qualche decimo di secondo dovrebbe partire un timer di (teoricamente) 60 min ma sul led si vede tutto pieno senza definizione dei numeri e col buzzer che continua a suonare interrottamente senza fermarsi. Qualcuno saprebbe darmi una mano? Grazie
 
Ultima modifica:
Metti il codice e uno schematico del collegamento dei cavi per cortesia
(So che hai messo il link, ma una cosa che riflette quello che hai fatto tu e non quello che hai cercato di imitare aiuta sicuramente di più)
Messaggio unito automaticamente:

(Comunque, ho dato un'occhiata rapida al codice del link, non so chi lo abbia scritto ma sinceramente è un pugno nell'occhio, la dichiarazione delle variabili dei cicli e tutte quelle righe superflue per un qualcosa di così semplice mi sembra uno spreco di risorse e di tempo)
 
Ultima modifica:
Sto dando una letta attenta al codice, intanto ho trovato un errore:

Dentro al loop, dopo la riga 212 aggiungi:

Codice:
tempoinizio = millis();

Questo perché "tempoinizio" viene inizializzato come "tempoinizio = 0", tuttavia nella riga 213 tu hai

Codice:
tempo = (millis() - tempoinizio)/1000; //calcola il tempo trascorso dall’inizio pressione pulsante

Prima di questa riga, dentro al loop, "tempoinizio" non viene definito in nessun modo, quindi è ancora uguale a 0 per il settaggio iniziale, e dal monento che poi tu consideri (millis() - tempoinizio) come il tempo trascorso dall'inizio della pressione del pulsante, avrai che in realtà "tempo" sarà uguale al tempo trascorso dall'inizio del settaggio dell'arduino, ovvero da quando tu hai premuto "Reset" o da quando lo hai alimentato con la corrente, ora continuo a vedere se ci sono altri errori.

Inoltre alla riga 207 è da togliere l'uguale, perché in questo modo ogni volta che arriva a 60 il tempo ritorna a 0 e al posto di avere 60 minuti massimi ne avrai 59
Messaggio unito automaticamente:

Ok, è decisamente troppo noioso :asd:

Ogni riga che leggo mi viene da strapparmi i capelli, sinceramente è proprio fatto male quel codice. Non ci ho speso troppo tempo, ma mi sembra addirittura che non dia neanche una soluzione visiva al settaggio del tempo, nel senso che da quello che si legge nel ciclo While mentre stai tenendo premuto il pulsante non ti fa capire quanti secondi sono trascorsi per avere un'idea di quanto tu lo voglia settare. Nel caso tu lo voglia mettere a 60, dovresti contarteli da te i 60 secondi e sperare di non andare oltre perché ricomincerebbe da capo.

Già questo fa capire quanto fragile e fatto male sia quel codice, sinceramente ti consiglio di rifarlo da capo (Magari tieniti i pezzi per la mappatura dei led dei numeri, riscrivere quello dev'essere davvero molto noioso) e fare qualcosa di più robusto e utilizzabile
 
Ok allora cercherò di seguire il tuo consiglio. Manterrò lo schema elettrico (poiché il led e il buzzer sembrano funzionare/accendersi) e rifarò tutto il programma tenendo la mappatura dei led.

Inviata da SM-G935F tramite app ufficiale di Inforge.net