Comandare 2 display 7 segmenti con due pulsanti

Volevo comandare 2 display sette segmenti (uno per le decine, e uno per le unità) con due pulsanti, uno per aumentare e l'altro per diminuire.
Sono giunto ad "un'enigma", come faccio ad accendere tutti i segmenti per comporre il numero avendo questa tabella?
cont byte decod7deg[10]={
//ABCDEFG/DP
B11111100,//0
B01100000,//1
B11011010,//2
B11110010,//3
B01100110,//4
B10110110,//5
B10111110,//6
B11100000,//7
B11111110,//8
B11110110,//9
}
io dovrei andare a leggere la riga corrispondente a 1 e poi attivare le uscite con la combinazione del codice.
Per esempio ad 1 vado ad accendere le uscite con:
a=0, b=1, c=1, d=0, e=0,f=0,g=0;
Se non avete capito chiedete pure e sarò più chiaro :slight_smile:

usando questo Arduino Reference - Arduino Reference

Riesci a farmi un'empio che non ho ben capito il funzionamento?

Se colleghi i pin del display ai pin di un'unica porta (vedi il datasheet, dove ci sono i pin, trovi delle scritte PBx, PDx accanto ai pin; PD0, PD1, PD2 ecc.. sono ad esempio tutti pin della porta D).

Quindi con il codice che hai messo, mettiano ad esempio che vuoi impostare tutti i pin della porta D, fai :

PORTD = decod7deg[0];

Facendo così e collegando il display ai pin PD0..PD7 (che sono i pin D0..D7 dell'Arduino) scrivi il numero "0" sul display.

grazie mille stasera completo il programma e domani a scuola lo testo :slight_smile: grazie mille dell'aiuto

Ho notato un piccolo problema; visto che il progetto che dobbiamo fare è fatto su un circuito del prof; mi sono accorto che lui ha scelto i pin dal 7 al 13 per comandare lo schermo; il pin 7 é un PD7 mentre dal 8 al 13 sono PB0-PB1-PB2-PB3-PB4-PB5
.
Secondo me si potrebbe fare lo stesso lavoro tenendo il pin 7 sempre a 1 e disattivarlo per il numero 1 e 4 manualmente con qualche if; e continuare con il codice in questo modo:

PORTB = decod7deg[0];
//ABCDEFG
B0111110,//0
B0110000,//1
B0101101,//2
B0111001,//3
B0110011,//4
B0011011,//5
B0011111,//6
B0110000,//7
B0111111,//8
B0111011,//9
in modo tale che PORTB vada a modificare solo le lettere B-C-D-E-F-G; secondo voi può funzionare o da qualche errore il programma?

Ci sono tanti modi per risolvere il problema. A me era venuto in mente di fare un AND binario con 0b01111111 per selezionare i 7 bit meno significativi. E poi un AND con 0b10000000 per l'8° bit.

Si potrebbe scrivere sulle due porte differenti shiftando opportunamente i bit prima di scrivere il valore.

Si, ma ricordati anche che devi collegare DUE display.
Quindi creare una sorta di multiplexer per gestirli in contemporanea