Timer/Cronometro per palestra. Già esistente o c'è da progettare ?

... un cicalino per moto o auto fa parecchio casino ...

o magari uno di questi https://www.amazon.it/KKmoon-Clacson-vintage-classico-modello/dp/B089326F36 ... :stuck_out_tongue: :smiley:

Pero' vedrei piu adatta una campana, forse ... tipo quelle da fabbrica o scuola ... magari togliendo il contattino che fa il trillo, in modo che dia un rintocco singolo ad ogni impulso inviato ... farebbe stile "vecchio ring" ... :smiley:

Con 110dB ti manda ko lui da solo.

Io non ho esperienza con i cicalini, per cui non sapevo cosa consigliare ;D

Hai visto l'aggeggio di adafruit?
Ha già lui tutta l'elettronica richiesta, per cui dovrebbe essere molto semplice da usare quel display.
Non ho avuto tempo di approfondire perchè sono di corsa, ma penso che con un paio di ricerche mirate si trovi un po' di tutto.

Maurizio

Si, come display a matrice e' bellino, incorpora gia driver e controller, e puoi collegarne piu di uno in serie ... pensavo solo che fosse sprecato per un'uso del genere dato che lui alla fine deve visualizzare solo i numeri di un conto alla rovescia ...

djdiabolik:
Allora vediamo.... se ho capito non serve quotare messaggio su messaggio allora vediamo:

Ma qua mi rivolgo a voi..... e appunto su cosa pensate sia meglio basarsi per realizzare qualcosa del genere ?

Lo schermo a matrice o un LCD ?? Ulteriori consigli sono ben accettati ovviamente.....

il tuo problema è il display! il software c'è ne fino alla nausea,
(se funziona) puoi farti uno schermo con le strisce led rgb che sostituiscono (vengono pilotate) le cifre 7 segmenti,
con 50 euro (o poco piu dovresti prendere tutto
altrimenti puoi usare l'orologio che hai gia attacchi la lancetta a un motorino stepper e spendi la metà

Allora ragazzi vi ho letto tutti e cercherò di rispondere a tutti.

Prima cosa vi dico perchè ho visto il display a matrice..... l'avevo visto perchè ho trovato un progettino proprio di una scritta a scorrimento e li ho visto le dimensioni rispetto ad una mano e appunto mi son detto che cavoli li le cifre, ammesso che si riesce a farle visualizzare sarebbero belle grandi.

Sarebbe poi da testare la leggibilità delle cifre perchè infatti ho aperto ho aperto il link su adafruit e cavoli dallo stesso monitor del pc c'ho messo un pò a decrifrare la scritta 16x32 nella riga superiore :slight_smile:

Cmq ho visto il prezzo e appunto costa 24$ che è un buon prezzo.

L'alternativa alla striscia di led e ricreare il classico 8 giusto ?

Allora per come sono messo io a questo punto consigliatemi voi........ per carità volendo possiamo provare entrambe le cose.
Il pannello su adafruit ha, peccato, le spese di spedizioni che sorpassa il prezzo stesso del pannello. Ho fatto un test d'ordine e cavoli 35$ di spedizioni sono un pò tantite. Sarebbe da trovare magari su uno store + amico alla nostra italia se ci siamo capiti :slight_smile:

Allora io questo pannello a matrice non ho capito una cosa... ma viene gestito su una singola riga (perchè il progettino che avevo visto in pratica richiama un font e invia una frase scritta su una variabile e questo testo compare a schermo scorrevole) oppure può esser gestito su multilinee ?
Si perchè se avete visto nel mio esempio col foglio exel ci sono dei led che coincidono in diagonale e altre lettere addirittura che hanno led affiancati e non vorrei che la cosa crei casini.
Potrei adattare per assurdo e gestire il tutto solo con 2 linee da 8 led. Cosi facendo se io uso 5 LED verticali per fare la frase appunto ho anche degli spazi vuoti e c'ho può aiutare a capire meglio cosa c'è scritto sul pannello.

Cioè per capirci... questo pannello a matrice mi sembra somigli a quei cartelli OPEN che trovi nel negozi cinesotti...... cioè il cartello OPEN appunto è visibile da molto lontano ma da vicino ci sta che vedi i singoli led e crea confusione rispetto al "classico" 8 a LED (sia che lui sia fisico o fatto da spezzoni di led sotto per assurdo).

Se proprio volete l'altro giorno m'è venuta un'altra idea su come gestire il tutto su 2 righe da 8 led.... fare il setup iniziale che mostri 3 schermate in loop e addirittura cosi facendo ho ridotto il numeri di pulsanti utilizzati a 4 ma ho tutto nella mia testa perchè poi non so se la cosa è realizzabile e se è realizzabile sopratutto per me che col C sono a livello zero.

Guardate ora non c'ho niente da fare.. prima di andare a dormire tra un pò edito e vi posto la mia idea su come sfruttare il pannello 16x32 su 2 righe da 8.

EDIT
Ipotesi di setup su 2 righe.... caratteri 5 led verticali 3 orizzontali..

La prima schermata d'accensione potrebbe esser questa:

Durante la schermata si settano le variabili base... quindi i due timer principalmente e il numero del round su valori di default.. rispettivamente.
T1 = 3:00
T2 = 1:00
Round = 1

Una volta fatto questo in questa nuova suggestione si potrebbe utilizzare 5 tasti:
"+" , "-" , "SET" , "RESET" e "START".
Un tasto in meno il precedente perchè ora si potrebbe fare qualcosa del genere..... dopo la schermata di presentazione... diciamo.... a schermo si potrebbe mostrare qualcosa del genere:


In questa schermata entrano in gioco i tasti "+" , "-" e "SET".
In pratica io pensavo, sempre ammesso che sia possibile farlo....... col tasto "-" fare degli step di 10 secondi. Perchè lo step di 10 secondi ? Perchè tanto ragazzi facendo 2 conti credo che alla fine il timer nel 90% del tempo verrà utilizzato nelle sue impostazioni di default. Come detto fino ad oggi siamo andati andati avanti col timer analogico e per tutto il resto di è usato sempre il cronometro a mano quindi perchè andarsi a complicare una vita ?? Uno step di 10 secondi è perfetto perchè appunto con 6 pressioni hai scalato un minuto cosi che non serve nemmeno che sto a schervellarmi sul C per imparare a intercettare la pressione continuativa del tasto. Cioè premi un volta - e sullo schermo viene aggiornato WORK 2:50.... premi + e ritorna WORK 3:00.

Ora io non so se è gestibile la varibile come 3:00 ma credo ci sia la necessità di fare 2 variabili distinte una per i secondi e una per i minuti giusto ?
Se si appunto cosi facendo con un "banale" check.... se la variabile secondi cambia da 00 a 50 in automatico di fa un -1 sulla varibile dei minuti e viceversa se la variabile cambia da 00 a 10 si fa un +1 sulla variabile dei minuti. Credo sia tutto + easy a livello di codice C.. correggetemi se sto sbagliando.

Ora capito il funzionamento dei TASTI + e - appunto c'è la cosa del tasto SET. Una volta che tu vari il tempo di lavoro (WORK appunto) se premi il tasto SET a schermo compare una schermata simile atto a dover configurare il secondo Timer (T2).
E' bene ricordare che noi abbiamo settato le due variabili T1 e T2 all'inizio... quindi appunto una volta acceso e una volta vista il setup di WORK in teoria puoi direttamente premere il tasto START e far iniziare il vero conteggio.

Il TOP sarebbe creare un LOOP....... cioè prima schermata di benvenuto... poi un loop che mostri ad esempio ogni 2 secondi la schermata di setup del WORK e del REST alternativamente e mentre ognuna di essa è attiva avere la possibilità di modificarne i tempi con la pressione del tasto + e - !!!
Cosi facendo si potrebbe anche ELIMINARE IL TASTO SET per assurdo.

Cioè... in pratica il progettino farrebbe:

  1. Messaggio di benvenuto (e si setta le variabili)
  2. Poi entra in questo LOOP.... mostra 3 secondi il setup di WORK ed intercetta le pressioni del tasto + e - o del tasto START. Se non ci sono pressioni entro questi 3 secondi switha alla scherma setup REST e anche li intercetta il + e - setta i il tutto oppure ritorna al setup WORK.
    Non so se mi son spiegato cosa intendo...............

Una volta che ti sei settato il tutto...... il tasto START appunto avvia il loop e funziona come l'altro....

In un certo senso ora ci sono 2 righe a schermo e credo che cosi facendo per assurdo il testo sia addirittura + leggibile.

Inoltre lasciando a 5x3 led i caratteri posso anche spaziare di + i caratteri stessi... magari risulta ancora meglio ma questo credo di poterlo fare anche in un secondo momento...... o no ?

Che ne so ragazzi...... se è fattibile sta cosa del display matrix mi sembra una buona soluzione perchè sopratutto come potete vedere ti lascia piena espressione a schermo.....

Oppure come dicevo... c'è sempre l'ipotesi di mettere uno schermo totalmente LCD anche in bianco e nero magari e cosi facendo di fatto è come se avessi un MEGA Casio sulla parete ma se lo schermo LCD lo posso gestire come se fosse una uscita video (anche se al momento che sto scrivendo non so se arduino ha un'uscita video... io per esempio vengo dall'uso di raspberry che so può permettere l'uso di schermi LCD Touchscreen addirittura) potrei optare per un LCD tipo da 10 pollici (sarebbe + piccolo rispetto allo schermo lcd a matrice credo però).

Ragazzi io mi sto facendo mille idee ma onestamente questa dello schermo a matrice per ora è quella che diciamo, mi attizza, di + :slight_smile:

Per visualizzare i tempi, io userei questi:
https://www.ebay.it/itm/303126477576
e aggiungerei un LCD di servizio per le impostazioni: sull'LCD hai 16x2 (o 20x4) caratteri a disposizione per visualizzare tutto ciò che vuoi per fare molto facilmente tutte le impostazioni. Considera che pilotare un display a matrice non è un gioco come pilotarne uno a 7 segmenti! Comincia con una cosa semplice. Per impazzire appresso ai problemi c'è sempre tempo! :slight_smile:

djdiabolik:
Sarebbe poi da testare la leggibilità delle cifre perchè infatti ho aperto ho aperto il link su adafruit e cavoli dallo stesso monitor del pc c'ho messo un pò a decrifrare la scritta 16x32 nella riga superiore :slight_smile:
Cmq ho visto il prezzo e appunto costa 24$ che è un buon prezzo.

Non ti fare ingannare dalla foto, fatta con flash e quindi i led spenti risultano visibili.

Inizia a buttare giù lo scheletro del programma utilizzando unicamente arduino e la seriale.
Così ti puoi concentrare sulle logiche che stai ipotizzando rimandando gli altri aspetti più grafici.

In questa fase devi capire se il progetto è alla tua portata e se le tue idee sono percorribili, quindi inizia a sperimentare, al minimo costo, usando la seriale come dispositivo di input e di output.

Una volta affinate le tue logiche ti occuperai dei dettagli: display, buzzer, ecc.
Avrai elementi in più per scegliere la soluzione più adatta al tuo grado di apprendimento raggiunto.

E poi, finchè si resta su idee generiche, gli aiuti che si possono ricevere tendono ad essere a loro volta generici.

Maurizio

Io ritengo che l'LCD si sempre utile collegarlo; addirittura si potrebbe tenerne uno con i connettori pronti per collegarlo quando serve per fare delle prove.

Le prove per quanto riguarda la parte software le puoi fare con un qualsiasi display piccolo, poi una volta che il tutto funziona via software, si realizza e si collega anche la parte display grosso ...

le matrici in casa non le ho quindi non so che luminosita' possano avere in un'ambiente ben illuminato come una palestra ...

le striscie di led sarebbero forse piu visibili ma meno "eleganti" (si, sarebbe da disporle per riprodurre le classiche sagome ad "8" dei display) ... pero' si puo sempre incollarle bene su un pannello e poi verniciare tutto tranne i led di nero opaco ...

A livello di costi forse le striscie sono le piu economiche se le prendi su aliexpress o simili ... da alcuni venditori puoi scegliere anche la lunghezza ... ad esempio da questo e altri simili, una striscia con 120 led per metro RGB da 3 metri viene sui 10 dollari inclusa spedizione, e per farci 4 cifre da 20cm di altezza 3 metri basterebbero (7 pezzi da 10cm per cifra, per 4 cifre, fa 280cm) ... oppure 4 metri ad 11.5 dollari per cifre alte 25cm (7 pezzi da 12.5cm per cifra, per 4 cifre, 350cm) ...

Lo svantaggio delle striscie e' che devi farti la parte driver da solo, anche se e' uno svantaggio relativo, inoltre dovrai prima di sviluppare il software, decidere quale sistema di pilotaggio vorrai implementare per le cifre ... fondamentalmente ce ne sarebbero due, relativamente semplici ... il multiplexing, dove appunto usi 7 linee per i segmenti e 4 per le cifre e le piloti in multiplex, scambiandole velocemente una alla volta, oppure 4 shift register in catena, dove non hai il multiplex ed usi meno pin ma devi mandare i dati al display come sequenza di bit per pilotarci gli shift ... personalmente suggerirei gli shift, perche' se vuoi usare due colori, la cosa sarebbe piu semplice a livello hardware (ed anche software, perche' basterebbe scambiare due pin per cambiare colore, mentre con il multiplexing, anche ottimizzando servirebbero 4 linee per un color e e 4 per l'altro per le cifre, piu 7 per i segmenti) ... inoltre non avrebbero lo "sfarfallio" del multiplex, e neppure quello degli shift se si usa il pin di strobe :wink:

Beh... Se multiplexi a 50~100Hz, lo sfarfallio non esiste.

Vero ... per contro, con gli shift, 3 fili piu l'alimentazione e colleghi tutti i display che vuoi alla MCU ... perfino il cambio di colore si puo gestire con il pin che rimane libero degli shift, anche una cifra alla volta volendo ... :wink:

Allora il led da 8"... cavoli 20 cm potrebbe essere una buona soluzione per un primo test.
In teoria quello dovrebbe anche esser completo di led interni... un piccolo problema è che dovrei fare una sorta di piastra madre per collegare i suoi 8 contatti all'arduino giusto ?

Di questi display li utilizzavo anche a scuola.. se ricordo bene uno è la massa e i restanti 7 sono appunto i 7 segmenti.

Se volessimo passare al lato software.......allora abbiamo detto arduino usa C..... vi chiedo:
Posso fare + di un listato oppure c'è da fare un un'unico listato ? Cioè mi veniva l'idea di fare tutti file di codice per ogni operazione tipo. Il primo per il primo setup... poi uno per il timer... uno per il setup del work e un'altro per il setup del rest.
Cosi facendo io appena accendo potrei far partire il setup..... se premo start avviare il timer e se durante il timer premo reset appunto basta che rilancio il setup e tutto di resetta incluse le variabili iniziali.

Credo sia fattibile una cosa del genere... se ricordo lo si può fare col basic richiamare altri file .bas..... ad esempio potrei anche usare varibili temporanee salvate su file di configurazioni tipo:

  1. Accendo il tutto

  2. Si avvia il listato "prereq". Vengono settate le variabili T1 e T2 (3:00 e 1:00 appunto) poi viene lanciato il listato "main" sul display appare 3:00 e il cronometro di mette in pausa.

  3. A questo punto se io premo set posso richiamare il listato "setup" qui c'è da trovare un compromesso.... come visto che questo display è solo ROSSO come posso far capire se sto cambiando il timer del work o del rest ??
    Cmq sia appunto con i tasti + e - agire sui vari timer......... una volta fatte le modifiche ci sarà un tasto "SET" che salva il tutto su un file di configurazione e rilancia il "main". Tale listato ad inizio va a rileggere dal file appena salvato le due variabile per vedere se ci sono state modifiche in fase di "SET" e appunto se si mostra a display il T1 in pausa.

  4. A questo punto con "START" parte il loop del T1 -> T2 -> T1 -> T2 con un'eventuale conteggio dei round su un'altro eventuale display.

Per assurdo quindi mi serverebbero 6 di questi display 7 elementi in modo da poter settare il tutto fino a 99 Minuti e 59 secondi e i round sarebbero contati fino a 99 partendo da 1.
Opuure 5 display se voglio un massimo di 9minuti e 59 secondi e appunto i round da 1 a 99.

Se tutto è fattibile posso cominciare a buttar giù qualche riga di C++...... dovrò andare di guide e tutorial del caso come già in passato o fatto per iniziare ad usare AutoIT.... almeno che non si possa utilizzare proprio quest'ultimo per scrivere codice per arduino ma non credo.

Solitamente chi viene dal basic quando passa a C/C++ sbatte il muso duro e va al tappeto. :slight_smile:

Se fosse possibile ti dovresti scordare tutto del basic e delle sue facility.
Al posto delle procedure SUB ci sono le funzioni che si definiscono senza una parola chiave ma basta il nome della funzione, la lista degli argomenti dentro le (), es:

void miaFunzione(byte arg1, byte arg2) {
    // il corpo della funzione è delimitato dalle graffe
    // arg1 e arg2 sono gli argomenti opzionali
    // mentre void indica che la funzione non restituisce alcun valore al chiamante.
}

Il C/C++ è compilato e tipizzato. Le stringhe literal (cioè "la mia stringa literal") sono array di caratteri (i caratteri sono byte codificati secondo la tabella ascii).

Posso fare + di un listato oppure c'è da fare un un'unico listato ?

Inizia con un solo listato per prendere confidenza. Aggiungi tue funzioni e quando il numero di funzioni aumenta li sposti in altri file .ino

Auguri e metti il paradenti. :slight_smile:

... quale led da 8 pollici ? ... quello su ebay e' da 1.8 pollici, un po meno di 5cm ...

20 o piu cm li devi costruire tu con le striscie di led ... di gia fatti c'e' poca roba ...

Ci sono quelli per i prezziari dei distributori da 20cm di altezza, della Endelbyte, li vendeva la visualcarburanti se non ricordo male ... ma stavano credo sui 600 Euro, non so se con controller e radiocomando, ma per il tuo uso non andrebbero bene ... oppure c'era un kit della velleman, fatto con i led messi in fila su uno stampato, per fare cifre da circa 20cm di altezza, credo fosse sui 40 o 45 Euro per cifra, magari li si trovano ancora, ma sempre monocolore ... altri cosi al volo non riesco a ricordarmene ...

Per me le strip rimangono il sistema piu economico alla fine :wink:

una volta fatte le modifiche ci sarà un tasto "SET" che salva il tutto su un file di configurazione e rilancia il "main". Tale listato ad inizio va a rileggere dal file appena salvato le due variabile per vedere se ci sono state modifiche in fase di "SET" e appunto se si mostra a display il T1 in pausa.

File?
Rilanciare il main?

:roll_eyes:

Sarà un ko al primo round.

Vabbè, non ci sono file di configurazione. C'è una eeprom su cui puoi salvare 2048 byte.
Per avere il concetto di file ti serve una sdcard da collegare al bus SPI, ma non credo che serva per questa applicazione.

..... se premo start avviare il timer e se durante il timer premo reset appunto basta che rilancio il setup e tutto di resetta incluse le variabili iniziali.

No, non richiamare setup() ma crea una tua funzione init() che richiamerai nel setup e poi quando ti serve.

Ciao.

Quella di fare più file con programmi distinti è percorribile solo se ci tieni attaccato costantemente anche un PC da cui lanciare l'aggiornamento del software richiesto e l'avvio di Arduino ;D

Scherzi a parte, quello che ti serve è un programma unico che faccia tutto, strutturato su varie funzioni da richiamare opportunamente dal programma principale.

Maurizio

Etemenanki:
... quale led da 8 pollici ? .CUT CUT

Cavoli avevo letto 8" e non 1.8". Cavolo. Allora questi qua in pratica mi dicevi di usarlo per il setup di servizio e quindi usare la matrice led per la visualizzazione finale oppure costruire le striscie di led.

Cmq sia le striscie le led le vedevo anche presso le fiere dell'elletronica per assurdo...... bianche e anche quelle multicolore.

Tipo io ne ho 2 in bagno sopra lavandino al posto delle classiche lampadine... una soluzione molto home work :slight_smile: Vi posterei una foto ma penso avete capito.

Ricapitoliamo:
Da fare un solo listato per semplicità.
C'è da iniziare a studiare il C
Domanda:
Per fare i primi test posso iniziare a testare l'output sullo schermo del pc e utilizzare 3 o 4 tasti della tastiera ?
Poi una volta che ho fatto qualcosa di funzionante volendo adattare tutto per lavorare su di questo arduino ?

No. Come display di servizio ti avevo proposto l'LCD. Poiché avevo capito che non doveva essere visibile da molto lontano, ho pensato che 1,8" (circa 4,5cm di altezza) fossero sufficienti. Considera che, pur non avendo più una vista perfetta, leggo benissimo l'orologio a nixie, con le cifre alte 1,8cm, da 3 metri di distanza.

Domanda:
Per fare i primi test posso iniziare a testare l'output sullo schermo del pc e utilizzare 3 o 4 tasti della tastiera ?
Poi una volta che ho fatto qualcosa di funzionante volendo adattare tutto per lavorare su di questo arduino ?

In mancanza di esperienze con le applicazioni embedded (arduino e simili) sviluppare su piattaforma PC (per eseguire su PC) non porta vantaggio alcuno. La piattaforma PC è troppo differente dalla piattaforma arduino.
Quindi ti sconsiglio di seguire questa strada per il momento. Nonostante ciò, io ho usato con profitto il PC per testare codice che poi deve girare su arduino, ma solo per risparmiare di scrivere la flash.

Ti consiglio di iniziare con gli esempio forniti assieme all'ambiente di sviluppo arduino (IDE) e si ti serve una board o in alternativa (sconsiglio) un simulatore.

Ciao.