Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Timer bomba digitale poca spesa tanta resa

Hybrid View

Messaggio precedente Messaggio precedente   Prossimo messaggio Prossimo messaggio
  1. #1
    Lo ammetto! Faccio un uso improprio dei manufatti dei babbani L'avatar di Maurizio87
    Club
    Blacks&Tiny
    Iscritto il
    05 Feb 2011
    Messaggi
    1,208

    Predefinito Timer bomba digitale poca spesa tanta resa

    Buongiorno a tutti, in questi giorni mi sono dedicato alla realizzazione di un timer countdown (ma non solo) digitale,necessario per una giocata notturna che abbiamo in programma a fine mese.

    In questi mesi, nel poco tempo libero ho smanettato con Arduino, una piccola piattaforma di prototipazione digitale open source, dal costo irrisorio, circa una trentina di euro, ma con vaste applicazioni.

    Tralascio la descrizione di Arduino e di come funziona, chi volesse avere maggiori info può visitare www.arduino.cc e, oltre a scaricare il software di complilazione; aggiungo solo che non è necessaria una immensa conoscenza di programmazione in C, bastano le basi, poi sul sito ci sono decine e decine di tutorial per imparare passo passo.

    Allora iniziamo con una bella foto di Arduino:
    Clicca sull'immagine per ingrandirla

Nome:   IMG_2702.JPG 
Visite: 71 
Dimensione:   51.1 KB 
ID: 161631
    E con una carrellata del dispositivo:

    Clicca sull'immagine per ingrandirla

Nome:   IMG_3072.JPG 
Visite: 83 
Dimensione:   53.4 KB 
ID: 161632

    Qui possiamo vedere un display a sette segmenti e anodo comune, un piccolo buzzer (sulla sinistra), una morsettiera per il finto (per ora non usato) detonatore, e un po di cavetteria; il tutto è montato su una basetta millefori.

    Clicca sull'immagine per ingrandirla

Nome:   IMG_3071.JPG 
Visite: 81 
Dimensione:   47.1 KB 
ID: 161633

    Qui si vede l'elettronica assemblata, per i collegamenti ho riciclato delle vecchie piattine di un Pc, in questo momento Arduino è alimentato tramite USB ma può essere alimentato anche da una pila 9V oppure da uno stabilizzatore a 5V; si nota anche il finto detonatore e un blocchetto di stucco da fonderia, che ha il vantaggio di non indurire mai, se non quando è esposto ad altissime temperature (viene usato per correggere difetti negli stampi in terra).

    Clicca sull'immagine per ingrandirla

Nome:   IMG_3073.JPG 
Visite: 50 
Dimensione:   43.8 KB 
ID: 161636

    Particolare del detonatore e del "plastico".


    Clicca sull'immagine per ingrandirla

Nome:   IMG_3079.JPG 
Visite: 57 
Dimensione:   32.4 KB 
ID: 161641

    Qui si vede l'aspetto finale del dispositivo, devo solo dargli una bella mano di colore, ma aspetto eventuali feddback dalla sede in modo da verniciare solo a lavoro concluso.


    Clicca sull'immagine per ingrandirla

Nome:   IMG_3077.JPG 
Visite: 57 
Dimensione:   43.2 KB 
ID: 161639
    Disposizione dei componenti interni.

    Clicca sull'immagine per ingrandirla

Nome:   IMG_3078.JPG 
Visite: 50 
Dimensione:   25.9 KB 
ID: 161640

    Ecco cosa si vede dalla finestrella.

    Clicca sull'immagine per ingrandirla

Nome:   IMG_3075.JPG 
Visite: 60 
Dimensione:   33.6 KB 
ID: 161638

    Lente di ingrandimento, incastrata e incollata nella finestrella.

    Bene avete visto com'è fatta, ma vi chiederete, come cavolo funziona?

    Ecco lo schema dei collegamenti, questo schema vale per display a CATODO comune, mente io ho usato un display ad anodo comune, se doveste fare come me, il cavo nero, va collegato ai +5V di Arduino, e nel listato i valori HIGH e LOW vanno invertiti.

    Clicca sull'immagine per ingrandirla

Nome:   7segmenti-e1345310126529.jpg 
Visite: 83 
Dimensione:   51.5 KB 
ID: 161643
    Il Buzzer è collegato tra i pin 13 e la terra (GND).

    Veniamo ora al codice.

    int G=2; //Definisco come interi i pin da 2 a 9
    int F=3; // le lettere si riferiscono ai singoli segmenti
    int A=4;
    int B=5;
    int DP=6; // Punto decimale
    int C=7;
    int D=8;
    int E=9;
    int buzz=13; // Definisco il pin 13
    int time= 1000; // Definisco il tempo 1000 millisecondi, se superate i 30 secondi sostituire int con long

    void setup(){
    pinMode(G, OUTPUT); // Dico al micro che i seguenti pin sono emettitori
    pinMode(F, OUTPUT);
    pinMode(A, OUTPUT);
    pinMode(B, OUTPUT);
    pinMode(E, OUTPUT);
    pinMode(D, OUTPUT);
    pinMode(C, OUTPUT);
    pinMode(DP, OUTPUT);
    pinMode(buzz, OUTPUT);
    }

    void zero(){ // Definisco come insiemi le varie cifre numeriche, se usate
    digitalWrite(G, HIGH); // un display a CATODO comune invertite HIGH con LOW e viceversa
    digitalWrite(F, LOW );
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(E, LOW);
    digitalWrite(D, LOW);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void uno(){
    digitalWrite(G, HIGH);
    digitalWrite(F, HIGH);
    digitalWrite(A, HIGH);
    digitalWrite(B, LOW);
    digitalWrite(E, HIGH);
    digitalWrite(D, HIGH);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void due(){
    digitalWrite(G, LOW);
    digitalWrite(F, HIGH);
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(E, LOW);
    digitalWrite(D, LOW);
    digitalWrite(C, HIGH);
    digitalWrite(DP, HIGH);
    }
    void tre(){
    digitalWrite(G, LOW);
    digitalWrite(F, HIGH);
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(E, HIGH);
    digitalWrite(D, LOW);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void quattro(){
    digitalWrite(G, LOW);
    digitalWrite(F, LOW);
    digitalWrite(A, HIGH);
    digitalWrite(B, LOW);
    digitalWrite(E, HIGH);
    digitalWrite(D, HIGH);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void cinque(){
    digitalWrite(G, LOW);
    digitalWrite(F, LOW);
    digitalWrite(A, LOW);
    digitalWrite(B, HIGH);
    digitalWrite(E, HIGH);
    digitalWrite(D, LOW);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void six(){
    digitalWrite(G, LOW);
    digitalWrite(F, LOW);
    digitalWrite(A, LOW);
    digitalWrite(B, HIGH);
    digitalWrite(E, LOW);
    digitalWrite(D, LOW);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void sette(){
    digitalWrite(G, HIGH);
    digitalWrite(F, HIGH);
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(E, HIGH);
    digitalWrite(D, HIGH);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void otto(){
    digitalWrite(G, LOW);
    digitalWrite(F, LOW);
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(E, LOW);
    digitalWrite(D, LOW);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    }
    void nove(){
    digitalWrite(G, LOW);
    digitalWrite(F, LOW);
    digitalWrite(A,LOW);
    digitalWrite(B, LOW);
    digitalWrite(E, HIGH);
    digitalWrite(D, LOW);
    digitalWrite(C, LOW);
    digitalWrite(DP, HIGH);
    } // Inizia il countdown

    void loop() {
    digitalWrite(buzz, HIGH); // Do corrente al buzzer
    delay(100); // Aspetto 1 decimo di secondo
    digitalWrite(buzz, LOW); // Tolgo corrente al buzzer
    delay(100); // Aspetto 1 decimo di secondo
    nove(); // VIsualizzo sul display il 9.
    digitalWrite(buzz, HIGH); // Do corrente al buzzer
    delay(100); // Aspetto 1 decimo di secondo
    digitalWrite(buzz, LOW); // Tolgo corrente al buzzer
    delay(100); // Aspetto 1 decimo di secondo
    delay(time); // Aspetto il tempo impostato
    otto();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100); // Ora tutto va avanti uguale fino allo zero.
    delay(time);
    sette();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100);
    delay(time);
    six();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100);
    delay(time);
    cinque();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100);
    delay(time);
    quattro();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100);
    delay(time);
    tre();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100);
    delay(time);
    due();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100);
    delay(time);
    uno();
    digitalWrite(buzz, HIGH);
    delay(100);
    digitalWrite(buzz, LOW);
    delay(100);
    delay(time);
    zero();
    digitalWrite(buzz, HIGH);
    delay(3000); // Suona per 3 secondi, poi il ciclo riparte
    }


    Questo è un esempio di codice, visualizza i numeri da 9 a 0 emettendo un bip ad ogni cambio cifra, arrivato a zero suona per 3 secondi e poi il ciclo riparte.

    Impostando il valore di time avete la possibilità di gestire tempi fino a 50 giorni, prima di un overflow del clock.
    Potete anche dividere il tempo in: decine di minuti,ad esempio 6-5-4-3-2-1 per un ora, poi fare 9-8-7-6-5-4-3-2-1 per gli ultimi 10 minuti
    poi 6-5-4-3-2-1 per gli ultimi 60 secondi, e poi 9-8-7-6-5-4-3-2-1-0 per gli ultimi 10 secondi.

    Se vi stesse chiedendo perchè non ho usato un display più grande con più cifre, è perchè non ho dei registri di scorrimento (shift register) che permettono di risparmiare pin di arduino, in quanto con un solo shift register si possono controllare 8 pin (quindi un intero display) usando solo 3 pin di arduino.

    Questo è solo un piccolo esempio di quanto sia utile Arduino, è semplice e proprio per la sua semplicità è l'ideale per iniziare.

    Spero di essere stato utile.
    Icone allegate Icone allegate IMG_3076.JPG‎  
    Ultima modifica di Maurizio87; 20/09/2012 a 08:21

  2. #2
    Lo ammetto! Faccio un uso improprio dei manufatti dei babbani L'avatar di Maurizio87
    Club
    Blacks&Tiny
    Iscritto il
    05 Feb 2011
    Messaggi
    1,208

    Predefinito

    Se avete domande o quesiti non esitate a contattarmi, sto aspettano un po di componenti per utilizzare un display più grande e a più caratteri ed eliminare arduino, usando solo il chip ATMega328 (lo stesso di arduino), e i componenti essenziali per farlo funzionare, relegando ad arduino il solo compito di programmare i chip.

    Man mano che svilupperò la cosa posterò i vari step, in modo da fare ogni volta qualcosa di funzionante, ma di complessità crescente.

  3. #3
    Recluta L'avatar di bapax
    Club
    ASAF
    Età
    51
    Iscritto il
    01 Aug 2007
    Messaggi
    1,131

    Predefinito

    bravissimo!!!

  4. #4
    Lo ammetto! Faccio un uso improprio dei manufatti dei babbani L'avatar di Maurizio87
    Club
    Blacks&Tiny
    Iscritto il
    05 Feb 2011
    Messaggi
    1,208

    Predefinito

    Quote Originariamente inviata da bapax Visualizza il messaggio
    bravissimo!!!
    Esagerato! Non è una cosa complessa e il linguaggio di programmazione è decisamente molto più semplice che il C classico.

    Grazie mille.

  5. #5
    Spina L'avatar di Maggot
    Club
    Black cavalry
    Iscritto il
    20 Sep 2012
    Messaggi
    66

    Predefinito

    Quote Originariamente inviata da Maurizio87 Visualizza il messaggio
    Esagerato! Non è una cosa complessa e il linguaggio di programmazione è decisamente molto più semplice che il C classico.

    Grazie mille.
    Il C mi uccide...

  6. #6
    Soldataccio L'avatar di erduca
    Club
    Raiders TST - Bari
    Età
    40
    Iscritto il
    08 Oct 2005
    Messaggi
    2,812

    Predefinito

    Mi ero interessato all'Arduino, credo si possano fare molte cose interessanti, alla prossima manifestazione che organizziamo mi devo inventare qualche cosa...
    Comunque bella realizzazione, l'unica cosa che non mi piace è l'involucro esterno (quello giallo) avrei messo il tutto dentro ad una di quelle scatoline da elettronica.

  7. #7
    Lo ammetto! Faccio un uso improprio dei manufatti dei babbani L'avatar di Maurizio87
    Club
    Blacks&Tiny
    Iscritto il
    05 Feb 2011
    Messaggi
    1,208

    Predefinito

    L'involucro l'ho recuperato in cantina, l'ho scelto perchè è un poligono a 12 lati, e ricorda un po una mina antiuomo, gli dovrò dare una mano di colore, ma devo aspettare di comprare le bombolette.

    Il problema delle scatoline è che, oltre a fartele pagare l'ira di Dio, sono in plastica o metallo rigide, questa è in gomma e con un taglierino si taglia, inoltre è impermeabile (ovvio non per immersione).

    Inoltre, si chiude avvitando il coperchio, quindi si disinnesca (togliendo la batteria) in un attimo, senza star li a svitare vitine come nelle scatole da elettronica, e poi mi piace riciclare il rottame che trovo in cantina da mio nonno (vedesi mortaio in firma), almeno lentamente la svuoto e ci posso fare un'officinetta come si deve.
    Ultima modifica di Maurizio87; 20/09/2012 a 12:51

  8. #8
    Soldataccio L'avatar di erduca
    Club
    Raiders TST - Bari
    Età
    40
    Iscritto il
    08 Oct 2005
    Messaggi
    2,812

    Predefinito

    Forse con una sbombolettata esteticamente viene meglio ehehehe

  9. #9
    Lo ammetto! Faccio un uso improprio dei manufatti dei babbani L'avatar di Maurizio87
    Club
    Blacks&Tiny
    Iscritto il
    05 Feb 2011
    Messaggi
    1,208

    Predefinito

    Mi pareva sottointeso e superfluo dire che andava ancora verniciato.... una roba del genere si vede anche dalla luna

  10. #10
    Recluta

    L'avatar di sapeaux
    Club
    Fenici SAT L'Aquila
    Età
    32
    Iscritto il
    01 May 2011
    Messaggi
    534

    Predefinito

    bella, non mi piace il finto plastico cosi penzolante però

Pagina 1 di 2 12 ultimoultimo

Questa pagina è stata trovata cercando:

detonatore

arduino

blacks&tiny

SEO Blog

Tag per questa discussione

Licenza Creative Commons
SoftAir Mania - SAM by SoftAir Mania Community is licensed under a Creative Commons Attribuzione - Non commerciale - Non opere derivate 3.0 Italia License.
Based on a work at www.softairmania.it.
Permissions beyond the scope of this license may be available at https://www.softairmania.it.
SoftAir Mania® è un marchio registrato.