Go Down

Topic: Cronometro particolare x gare di pattinaggio (Read 2958 times) previous topic - next topic

pgiagno

...il pulsante rosso che ho preso è questo---
Il pulsante va bene purché abbia DUE posizioni STABILI. Controlla con un tester che a pulsante premuto il contatto NO si chiuda E RESTI CHIUSO e che a pulsante rilasciato (riarmato) il contatto NO si apra E RESTI APERTO.

...stavo pensando di mettere dei connettori a vite per periferiche (scatola con led e pulsanti di stop), a quanti contatti li devo pendere?
Stavo pensando a questi, (anche perchè in officina ne ho e li uso regolarmente)...
Io sono rimasto al punto in cui ciascuna scatola con led e pulsanti di stop contiene un led verde (ce ne potrebbero essere più in parallelo), un led rosso (ce ne potrebbero essere più in parallelo) e un pulsante di stop. Occorre quindi: 1 conduttore comando led verde; 1 conduttore comando led rosso; 1 conduttore per pulsante di stop; 1 conduttore per Vcc; 1 conduttore per ground. Totale 5 contatti. Sulla scatola di comando dovranno trovar posto quattro connettori a 5 conduttori, uno per ognuna delle 4 scatole con led e pulsante di stop. A seconda di come comanderai i led potrebbero bastare 4 contatti (mancherebbe il Vcc).

Pensavo anche di mettere un secondo pulsante (in parallelo) di start in una scatolina a parte  oltre che nel case sul tavolo giuria. la lunghezza del filo non credo che sia influente se sto sotto il metro? potrei metterci anche dei led bicolori cosi chi da lo start con il "comando esterno" può vedere se i pulsanti sono riarmati!!!!
L'appetito vien mangiando eh?
Sì, si può fare. Considera che dovrai portare a questa scatola ben 11 conduttori: 4 per comando led verdi; 4 per comando led rossi; 1 per Vcc; 1 per GND; 1 per pulsante di start.

Ciao,
P.

big-ivan

ebbene si, l'appetito vien mangiando!!!!!


big-ivan

Buonasera, rieccomi dopo qualche gg, di stop per via del lavoro.
Ho collegato il display e si illumina, ho i pulsanti di start, adesso devo caricare un programma giusto?

Come collego i pulsanti e i led?

CIao
Ivan

pgiagno

#33
Apr 06, 2019, 12:06 am Last Edit: Apr 06, 2019, 12:08 am by pgiagno
Comincerei con cercare di scrivere qualcosa sul display.

Negli esempi allegati alla libreria LiquidCrystal_I2C.h ce n'è uno intitolato "HelloWorld". Provalo e vedi se il display, oltre che illuminarsi, funziona.

Nel frattempo, dato che il tuo progetto mi intriga parecchio, ho messo su un layout di prova, con led bicolori e pulsanti vari. Ho intenzione di seguirti su questo progetto e portarti a meta. Io ho organizzato pulsanti e led così:
- CORSIA 1 led verde al pin 2, led rosso al pin 6, pulsante di stop al pin A0
- CORSIA 2 led verde al pin 3, led rosso al pin 7, pulsante di stop al pin A1
- CORSIA 3 led verde al pin 4, led rosso al pin 8, pulsante di stop al pin A2
- CORSIA 4 led verde al pin 5, led rosso al pin 9, pulsante di stop al pin A3
- sirena di start al pin 10
- pulsante di start al pin 11

Ovviamente i led sono tutti connessi attraverso una resistenza da 270 ohm.

Appena ho tempo ti metto lo schema elettrico completo.

Per il programma, dimmi da 1 a 10 quanto sei bravo a programmare in C++ (non scherzare, perché non forniamo pappa pronta ma solo cibo di consistenza adatta ai tuoi denti)

Ciao,
P.

big-ivan

Ciao Pgiagno,

Sono molto lusingato che il progetto ti intrighi!!! purtroppo di programmazione C++ non so proprio nulla, l'ultima volta che ho provato a fare un programmino semplice avrò avuto 15 anni, con il Commodore 64!!!!!
 non voglio un programma già fatto, vorrei capire come digitare le stringhe di programmazione, e sopratutto capire il motivo di tale stringa. ho visto qua sul forum vari esempi di stringhe e non ci ho capito molto.

Per quel che riguarda la programmazione (so che è una domanda da stupidi) attacco la classica USB (quella che uso anche per alimentare il Nano) al computer (imac) per caricare la stringa di programma giusto?

Ciao e grazie ancora


Ivan

big-ivan

ciao, ho provato a caricare "hello world", ma mi da un messaggio di errore

Arduino:1.8.9 (Mac OS X), Scheda:"Arduino/Genuino Uno"

HelloWorld:5:31: error: LiquidCrystal_I2C.h: No such file or directory
compilation terminated.
exit status 1
LiquidCrystal_I2C.h: No such file or directory

cosa sto sbagliando?

Grazie

Ivan


Datman

Manca la libreria :-)
Scaricala e installala!
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

pgiagno

Vai a questo indirizzo
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Segui le istruzioni del file README.md
Oppure:
Vai su:
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Clicca sul bottone verde: Clone or Download
Ti verrà scaricata da qualche parte (su Linux in "Scaricati") la libreria LiquidCrystal_I2C-1.1.2.zip
Vai sul IDE di Arduino. Clicca su: Sketch -> #include libreria -> Aggiungi libreria da file .ZIP
Ti si apre una pagina da cui selezionare la libreria appena scaricata. L'IDE di Arduino dovrebbe fare tutto da solo e installare la libreria.
Chiudi l'IDE e riaprilo. Poi riprova a lanciare l'esempio.

Tutte le periferiche I2C (e il display che hai è una di queste) vengono comandate da due soli pin di Arduino (A4 e A5). Ogni periferica ha cablato un "indirizzo" di default differente. In generale i display hanno indirizzo 0x27 (è il primo parametro che fornisci al momento in cui istanzi l'oggetto LiquidCrystal_I2C e lo chiami lcd alla riga 5). Se il programma ancora non funziona significa che il display ha un indirizzo differente. Puoi provare con 0x3F (l'ho trovato su un display 16x2). Se non funziona ancora ti fornisco uno scanner che trova l'indirizzo. Ma 0x27 in generale funziona.

Ciao,
P.

pgiagno

Per cominciare con Arduino questo manuale mi è sembrato molto buono.

Penso che ogni programma debba PRIMA essere descritto in italiano e DOPO in C++. Quindi COMUNQUE dovrai descrivere il funzionamento di quello che vuoi ottenere. Dopo penseremo al C++.

Ciao,
P.

big-ivan

Buonasera,

ecco il funzionamento:
Circuto Alimentato

Pulsanti Stop rilasciati (contatto aperto) - led verdi su consolle comando e corsie accesi - led rossi spenti

Start da consolle di comando o base - led verdi spenti - Led rossi spenti

Inizio cronometraggio su tutte le 4 corsie

Pulsante Corsia 1 premuto (contatto chiuso) - Led verde spento e led rosso acceso

Stop cronometraggio corsia 1

Pulsante Corsia 2 premuto (contatto chiuso) - Led verde spento e led rosso acceso

Stop cronometraggio corsia 2

Pulsante Corsia 3 premuto (contatto chiuso) - Led verde spento e led rosso acceso

Stop cronometraggio corsia 3

Pulsante Corsia 4 premuto (contatto chiuso) - Led verde spento e led rosso acceso

Stop cronometraggio corsia 4

Pronti per nuova sessione di cronometraggio

Rilasciare i pulsanti di stop

Variabile

Pulsante di stop NON rilasciato (contatto chiuso) - Led verde spento - led rosso acceso

Start da consolle di comando o base

Il cronometraggio non parte nella corsia dove il pulsante sto non è rilasciato

per quel che riguarda il display,
non riesco a caricare la libreria!!!!
sto litigando ma non mi arrendo.

Grazie

Ivan

big-ivan

Ciao
Finalmente ho capito come caricare la libreria!!!!!

Adesso sono riuscito a far scrivere quello che voglio sul display......:) :)

Grazie ancora

Ivan

pgiagno

Alcune osservazioni:
- A mio avviso sarebbe meglio che le luci verdi si accendessero allo start, indicando l'inizio del cronometraggio e, come dici tu, solo per le corsie attive. Quelle non attive restano con le luci rosse accese- Ma se a te piace più come hai scritto va benissimo.
- All'accensione il display potrebbe riportare lo stato delle corsie, esaminando il pulsante rosso. Le scritte potrebbero essere:
Code: [Select]
CORSIA 1 PRONTA
CORSIA 2 PRONTA
CORSIA 3 NON ATTIVA
CORSIA 4 PRONTA

- Alla pressione del tasto start il display potrebbe diventare:
Code: [Select]
CORSIA 1 CRONOMETRO
CORSIA 2 CRONOMETRO
CORSIA 3 NON ATTIVA
CORSIA 4 CRONOMETRO

- Alla pressione dell'ULTIMO tasto rosso attivo il display potrebbe diventare:
Code: [Select]
CORSIA 2 T= 1.07.023
CORSIA 4 T= 1.12.006
CORSIA 3 T= 1.13.786
CORSIA 1 NON ATTIVA

segnalando oltre al tempo anche l'ordine di arrivo.

Bene per la libreria. Ora prova a fargli scrivere sul display le righe all'inizio.

Poi devi scrivere un pezzetto di programma che testi lo stato del pulsante rosso e aggiorni  la scritta sul display. Se il pulsante è premuto la prima riga deve essere
Code: [Select]
CORSIA n NON ATTIVA

Se il pulsante è rilasciato la prima riga deve diventare:
Code: [Select]
CORSIA n PRONTA

dove "n" è il numero della corsia.
La scritta deve cambiare dinamicamente, perché non è stato ancora premuto il pulsante di start

Buon lavoro.

Ciao,
P.

big-ivan

Ciao Pgiagno,
Allora per quel che riguarda le scritte di corsia, non ci sono problemi, ho scritto  "CORSIA x - " che sarebbe la parte fissa. per la parte che cambia con la pressione del pulsante, non riesco a capire come scrivere il programma.

Adesso ci studio un po su e poi vi aggiorno!!!

Grazie

Ivan

big-ivan

#43
Apr 13, 2019, 10:02 am Last Edit: Apr 18, 2019, 07:36 am by big-ivan
per ora sto scrivendo cosi,
c'è un errore che non riesco a capire.....
Code: [Select]

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("CORSIA 1 - ");
  lcd.setCursor(0,1);
  lcd.print("CORSIA 2 - ");
   lcd.setCursor(0,2);
  lcd.print("CORSIA 3 - ");
   lcd.setCursor(0,3);
  lcd.print("CORSIA 4 - ");

}
#define BUTTON 11
int  val = 0;
void setup() {
   if (val == HIGH) {
  pinMode(BUTTON, INPUT);
}
void loop()
{
}

qualcosa sto sbagliando, ma non riesco neanche a capire come far cambiare stato ad una riga del display!!!!

Grazie

Ivan

pgiagno

... ho scritto  "CORSIA x - " che sarebbe la parte fissa. per la parte che cambia con la pressione del pulsante, non riesco a capire come scrivere il programma....
Bravo!

Per la scrittura della parte variabile devi considerare che puoi indirizzare il carattere da scrivere sul display così:

Code: [Select]

// scrittura in corsia 1, pulsante rosso rilasciato
  if (digitalRead(tasto0) == HIGH) {
    lcd.setCursor(9, 0);
    lcd.print("PRONTA    ");
  }
// scrittura in corsia 1, pulsante rosso premuto
  if (digitalRead(tasto0) == LOW) {
    lcd.setCursor(9, 0);
    lcd.print("NON ATTIVA");
  }

Per le corsie successive (tasto1, tasto2, tasto3) posizionerai il cursore in 9, 1  9, 2  9, 3.

Nota che la scritta "PRONTA    " deve avere la stessa lunghezza della riga "NON ATTIVA" per coprirsi a vicenda.

Avanti così.

Ciao,
P.

Go Up