Fake Softair Bomb

Salve a tutti, è da un bel pò che leggo questo forum ma finalmente mi sono deciso a scrivere :smiley:

ho acquistato un arduino uno per realizzare una finta bomba con timer e codice per usarla nel softair come scenografia…solo che sto avendo alcuni dubbi.
Per la parte di programmazione non ho problemi, il problema è il numero dei pin…
vi dico cosa ho comprato:

Arduino uno
LCD Shield della DFRobot http://www.dfrobot.com/index.php?route=product/product&product_id=51
Keypad http://www.instructables.com/id/Using-the-sparkfun-12-Button-keypad-with-the-ardu/
Display seriale a 7 segmenti http://www.robotshop.com/sfe-7-segment-serial-display-red-2.html

il mio scopo è quello di poterli usare tutti e 3 assieme facendo scorrere un countdown sul 7 segmenti, inserire il codice col keypad e usare l’lcd per altre funzioni solo che montando lo shield mi ritrovo soltanto con i pin 13,12 e 11 liberi, mentre non riesco a capire quali posso utilizzare…
ho trovato queste istruzioni per collegare il keypad leggendolo con la seriale ma così non potrei usare il 7 segmenti…ed inoltre non riesco a capire come devo collegarlo
sapete dirmi cosa dovrei fare/comprare?
Grazie 1000

http://arduiniana.org/libraries/newsoftserial

le soluzioni esistono :P

EDIT: a parte che detta tra noi io ti consigliavo piuttosto un classico display lcd 20x2 parallelo e governato da un pcf8574, costo totale: 10€+sped e c'è una libreria comodissima che ho già sperimentato con arduino UNO...

Il problema degli shield è che impediscono spesso di usare anche i pin che non utilizzano.

superlol: http://arduiniana.org/libraries/newsoftserial

le soluzioni esistono :P

EDIT: a parte che detta tra noi io ti consigliavo piuttosto un classico display lcd 20x2 parallelo e governato da un pcf8574, costo totale: 10€+sped e c'è una libreria comodissima che ho già sperimentato con arduino UNO...

qualche doc su come utilizzare tale display con il pcf8574? ho googlato maniente ( cerco qualcosa da capire non da copiare,xkè ho notato ke solo così le cose restano!) :) grazie

ok.capito bisogna studiare un pò il I2c. grazie

Io in un esperimento ho pilotato il display 16x2 parallelo con un ATtiny84 collegato tramite 2 cavi via I2C all'arduino.

MatteoG:
Io in un esperimento ho pilotato il display 16x2 parallelo con un ATtiny84 collegato tramite 2 cavi via I2C all’arduino.

l’ ATtiny84 lo usi al posto dell’i2c expander?

Non ho l'I2C expander. Tu hai un display seriale a segmenti mentre io ho lcd parallelo 16x2, non l'ho mai usato quindi lascio la parola ai più esperti....

http://www.xs4all.nl/~hmario/arduino/LiquidCrystal_I2C/LiquidCrystal_I2C.zip al suo interno trovi tutte le info ;)

scusate la risposta ma sto litigando con fastweb...anzi grazie a tutti ;)

ma quindi sono fregato? sto lcd è diventato inutile praticamente...

@superlol quella libreria sembra ottima ma mi manca comunque un pin :(

La librerie che ha linkato superlol funziona molto bene e ho avuto occasione anche di scambiare email con l'autore per avvertirlo del funzionamento anche su schermi che non aveva previsto (poi ha aggiornato i vari readme). Per il tuo problema di pin, utilizza altri expander!

allora il problema è anche nato dal pin 10...informandomi bene risulta essere il pin che controlla la backlight e non è documentato...diciamo che brutalmente l'ho spostato ed ho guadagnato un pin in più, tanto non mi serve cambiare la luminosità...

non capisco il problema dei pin:
l’I2C in arduino è situata nei pin A4 e A5 e non nei digitali… e avevo capito che li avevi disponibili…

allora conta che sono proprio a digiuno di elettronica ed arduino è il mio primo esperimento :smiley:

diciamo che sono partito con l’idea di collegare il tastierino ma mi servono 7 pin

si possono usare i pin analogici come digitali?

diablo512: allora conta che sono proprio a digiuno di elettronica ed arduino è il mio primo esperimento :D

diciamo che sono partito con l'idea di collegare il tastierino ma mi servono 7 pin http://www.instructables.com/id/Using-the-sparkfun-12-Button-keypad-with-the-ardu/

si possono usare i pin analogici come digitali?

assolutamente si ;)

diablo512: .... si possono usare i pin analogici come digitali?

Puoi farlo, il pin analogico A0 diventa digitale 14, A1 diventa dig.15.... A5 digitale 19.

Il progetto va avanti... per ora sono riuscito a collegare l'lcd shield, il seriale 7segmeni, 2 led per indicare lo stato ed adesso un buzzer...ma ho un problema con il dannato keypad ecco il video http://www.youtube.com/watch?v=6oOtpuRAm-8

quando è arrivato l'ho provato con questa guida http://www.instructables.com/id/Using-the-sparkfun-12-Button-keypad-with-the-ardu/?ALLSTEPS e funzionava!

ora ci ho saldato dei connettori per attaccarlo in modo semplice alla bread board e l'ho lasciato li per un pò :D configurato tutto il resto provo ad attaccarcelo ma non riesco a farlo funzionare... l'ho collegato seguendo quello schema utilizzando delle resistenze da 2.2k ma provando i vari tasti sul tastierino sulla seriale vengno stampati soltanto il 2 e lo 0 quale può essere il problema? posso aver rotto qualcosa saldando? Grazie

Leggendo la pagina linkata vedo che hanno discusso anche di dove attaccare le resistenze a seconda del tipo di connessione dei testi della tastierina, se cioè i tasti siano collegati per file orizzontali o verticali.

Controlla la tua di che tipo è e poi rivedi le connessioni delle resistenze e degli altri pin. Controlla anche con un multimetro le connessioni.

PS: ho visto che ci sono altri progetti un po' più dettagliati, magari prova a seguire uno di quelli. Tipo questo: http://www.instructables.com/id/Password-access-with-arduino/

Perfetto collegando il keypad direttamente ai pin dell’arduino senza mettere resistenze funziona (basta evitare di usare il pin 13 perchè c’è il led dell’arduino e crea casini)

ora ho un altro piccolo dubbio

ho un array con il codice corretto che disarma e blocca il timer e naturalmente devo confrontarlo con un array che viene popolato nel momento in cui l’utente inserisce il codice col tastierino in questo modo

void loop() {
  [...]
 char key = keypad.getKey();

    if (k<4 && key != NO_KEY){
    lcd.print(key);
    inserito[k]=key;
    k++;
  }
[...]

mi conviene trattare gli array come array di interi (quindi devo convertire in intero quello che mi ritorna keypad.getKey();
oppure mi conviene trattare i 2 array come stringhe e fare una strcmp tra le 2?
come faccio una strcmp con l’arduino?

grazie 1000 per la pazienza :smiley:

aiuto!!! all’improvviso il display a 7 segmenti ha smesso di funzionare!!!
non mostra più i numeri corretti, ho anche provato a ricaricare vecchi e semplici programmi sicuramente funzionanti ma mostra dei caratteri sballati!
posso averlo rotto in qualche modo?
sono disperato…tra 2 settimane devo consegnare sta roba :frowning:

l’altro ieri sono certo che con questo codice andava ma funzionava anche mezz’ora fa!!!

int i = 1;
char buf[12];
void setup() {
Serial.begin(9600);
Serial.print("v");
}
void loop() {
sprintf(buf, "%04d", i);
Serial.print(buf);
if(i<9999) i++;
delay(1000);
}

Se non hai saldato nulla, ricontrolla prima i collegamenti. Se hai fatto delle saldature, controlla che non ne sia saltata qualcuna.