arduino e demultiplexer

ciao a tutti,
devo fare un programma dove in base al valore di una variabile numerica devono accendersi dei led comandati da un demultiplexer.
in ingresso ho un dato decimale fornito da arduino e deve uscire in binario (es. 5 sul programma e devo vedere 101 attraverso l'accensione dei led).
l'integrato che uso è un 74LS138 con le uscite e l'ingresso attivi bassi.
di segito metto il codice

int risultato,i,num,num2=0,a,b,c;
#define S0 6
#define S1 5
#define S2 4
#define enable 7
void setup() {
pinMode(S0,OUTPUT);
pinMode(S1,OUTPUT);
pinMode(S2,OUTPUT);
pinMode(enable,OUTPUT);

}

void loop() {
risultato = 5;
for (i = 0; i <5; i++) {
num = num2;
a = num % 2;
num = num / 2;
b = num % 2;
num = num / 2;
c = num % 2;
digitalWrite(S0, a);
digitalWrite(S1, b);
digitalWrite(S2, c);
if(i=0)
{
if(risultato%2)
digitalWrite(enable, LOW);
else
digitalWrite(enable, HIGH);
}
if(i=1)
{
if((risultato==2)||(risultato==3)||(risultato==6)||(risultato==7)||(risultato==10)||(risultato==11)||(risultato==14)||(risultato==15))
digitalWrite(enable, LOW);
else
digitalWrite(enable, HIGH);
}
if(i=2)
{
if((risultato==4)||(risultato==5)||(risultato==6)||(risultato==7)||(risultato==12)||(risultato==13)||(risultato==14)||(risultato==15))
digitalWrite(enable, LOW);
else
digitalWrite(enable, HIGH);
}
if(i=3)
{
if(risultato>=8)
digitalWrite(enable, LOW);
else
digitalWrite(enable, HIGH);
}
if(i=4)
{
i=0;
if(risultato>15)
digitalWrite(enable, LOW);
}
num2++;

}
}

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

int risultato,i,num,num2=0,a,b,c;
#define S0 6
#define S1 5
#define S2 4
#define enable 7
void setup() {
  pinMode(S0,OUTPUT);
  pinMode(S1,OUTPUT);
  pinMode(S2,OUTPUT);
  pinMode(enable,OUTPUT);
  
}

void loop() {
  risultato = 5;
  for (i = 0; i <5; i++) {
    num = num2;
    a = num % 2;
    num = num / 2;
    b = num % 2;
    num = num / 2;
    c = num % 2;
    digitalWrite(S0, a);
    digitalWrite(S1, b);
    digitalWrite(S2, c);
    if(i=0)
    {
      if(risultato%2)
        digitalWrite(enable, LOW);
      else
        digitalWrite(enable, HIGH);
    }
    if(i=1)
    {
      if((risultato==2)||(risultato==3)||(risultato==6)||(risultato==7)||(risultato==10)||(risultato==11)||(risultato==14)||(risultato==15))
        digitalWrite(enable, LOW);
      else
        digitalWrite(enable, HIGH);
    }
    if(i=2)
    {
      if((risultato==4)||(risultato==5)||(risultato==6)||(risultato==7)||(risultato==12)||(risultato==13)||(risultato==14)||(risultato==15))
        digitalWrite(enable, LOW);
      else
        digitalWrite(enable, HIGH);
    }
    if(i=3)
    {
      if(risultato>=8)
        digitalWrite(enable, LOW);
      else
        digitalWrite(enable, HIGH);
    }
    if(i=4)
    {
      i=0;
      if(risultato>15)
        digitalWrite(enable, LOW);
    }
    num2++;
    

}
}

@marchinidavide: NO, non devi ripostare il codice; come da regolamento, punto 7, devi EDITARE (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Altra cosa, il cross-posting è proibito anche tra lingue diverse e tu hai postato la stessa domanda QUI , quindi ... decidi dove vuoi continuare perché debbo eliminare uno dei due thread.

Infine, non avendolo tu ancora fatto ... ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto :wink:) e di leggere con attenzione il REGOLAMENTO ... Grazie

Guglielmo