Buongiorno a tutti,
Sono in 3ª Superiore e devo finire un progetto datomi circa un mese fa, da svolgere con Arduino.
Ecco di che cosa si tratta: Acquisire un numero di 8 bit con un multiplexer, fare il complemento a due e visualizzarlo con 8 LED (tramite un demultiplexer).
Il circuito l'ho fatto, funziona bene. Il programma funziona anch'esso bene FINO all'ultima parte, dove devo appunto visualizzare gli 8 bit (memorizzati in un vettore) con gli 8 LED.
Il problema è solo questo, perché il complemento a due funziona a dovere, gli 8 bit vengono correttamente invertiti e poi sommati a 1. Quello che vorrei capire è come faccio (in righe di codice) a "buttare" il vettore ai LED. Ho provato di tutto, i LED si accendono comunque a a caso, e più o meno tutti insieme.
@WillyBestSM: in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu hai già posto la stessa domanda QUI.
Non solo, in quel thread ti stanno già rispondendo ed è veramente poco cortese abbandonare una discussione e chi ti stava aiutando, per venire di qua a porre la stessa domanda come a significare ... "mica mi fido tanto, ora vado a verificare da un'altra parte". :
Poi, NON avendolo tu ancora fatto, ti chiedo di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto ) e di leggere con attenzione il REGOLAMENTO.
Infine, per rispetto verso chi già aveva iniziato ad aiutarti nell'altro thread, questo tuo thread viene chiuso e ti prego di continuare dove avevi cominciato. Grazie.
Guglielmo
--- come da accordi con WillyBestSM, la discussione prosegue su questo thread e NON su quello di lingua inglese, per cui viene riaperto. - gpb01
Ecco di che cosa si tratta: Acquisire un numero di 8 bit con un multiplexer, fare il complemento a due e visualizzarlo con 8 LED (tramite un demultiplexer)
forse e' il caso che tu ci dica qualcosa in piu'
ad esempio che demultiplexer stai usando collegato ai led
e pure il codice che usi
Beh, dato che il 74LS138 è un semplice demultiplexer , quindi senza Latch, l’unico modo che mi viene in mente è gestendolo in Multiplexing
Quindi in questo modo
#define Addr_0 7 // Pin 1 del 74LS138
#define Addr_1 6 // Pin 2 del 74LS138
#define Addr_2 5 // Pin 3 del 74LS138
#define Enable 4 // Pin 6 Enable del 74LS138
int ritardo = 5 ; // valore di ritardo per visualizzazione multiplexer
int a0_bin[] = {LOW, HIGH, LOW, HIGH, LOW, HIGH, LOW, HIGH};
int a1_bin[] = {LOW, LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH};
int a2_bin[] = {LOW, LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH};
void setup() {
pinMode(Addr_0, OUTPUT);
pinMode(Addr_1, OUTPUT);
pinMode(Addr_2, OUTPUT);
}
void loop() {
byte x = 7 ; // Valore da visualizzare
for (int i = 0 ; i <= 7; i++ ) {
//bitRead(x,i);
digitalWrite(Enable, bitRead(x, i));
digitalWrite(Addr_0, a0_bin[i] ) ;
digitalWrite(Addr_1, a1_bin[i] ) ;
digitalWrite(Addr_2, a2_bin[i] ) ;
delay(ritardo);
}
}