ho finito l'etilometro xò vista la mia inesperienza dopo poco son saltate le saldature =( e quindi ho dovuto riprendere tutto in mano. visto che di programmazione ne so pochetto colgo l'occasione per chiedere se il mio codice può essere migliorato quindi posto il codice e attendo consigli
molte grazie!
// pin che controllano i transistor
const int pin_disp1 = 11;
const int pin_disp2 = 10;
// pin che rileva il sensore
const int pin_val = A0;
// pin che controllano i display
const int pin_a = 8;
const int pin_b = 9;
const int pin_c = 4;
const int pin_d = 5;
const int pin_e = 6;
const int pin_f = 7;
const int pin_g = 2;
const int pin_dp = 3;
const int led_pin = 13;
int pins[] = {pin_a, pin_b, pin_c, pin_d, pin_e, pin_f, pin_g, pin_dp, led_pin, pin_disp1, pin_disp2};
int sensor;
int val;
int val_disp1;
int val_disp2;
void setup()
{
digitalWrite(led_pin,HIGH);
pinMode(pin_val,INPUT);
for(int i = 0; i < sizeof(pins); i++)
{
pinMode(pins[i],OUTPUT);
}
delay(3000); // aspetta all'accensione
}
void loop()
{
sensor = analogRead(pin_val);
val = map(sensor,500,1023,1,101);
val_disp1 = (val-1)/10;
val_disp2 = ((val-1)-(val_disp1*10));
if (val_disp1 < 0)
{
val_disp1 = 0;
}
if (val_disp2 < 0)
{
val_disp2 = 0;
}
disp1_on();
visualizza_numero(val_disp1);
tutto_low();
disp2_on();
visualizza_numero(val_disp2);
tutto_low();
}
// funzioni richiamate nel main loop
void tutto_low()
{
for (int j = 0; j < sizeof(pins); j++)
{
digitalWrite(pins[j],LOW);
}
}
void disp1_on()
{
digitalWrite(pin_disp2,LOW);
digitalWrite(pin_disp1, HIGH);
digitalWrite(pin_dp,HIGH);
}
void disp2_on()
{
digitalWrite(pin_disp1,LOW);
digitalWrite(pin_disp2,HIGH);
}
void visualizza_numero(int number)
{
switch(number)
{
case 0:
zero();
break;
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();
break;
case 5:
five();
break;
case 6:
six();
break;
case 7:
seven();
break;
case 8:
eight();
break;
case 9:
nine();
break;
}
}
void zero()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_b,HIGH);
digitalWrite(pin_c,HIGH);
digitalWrite(pin_d,HIGH);
digitalWrite(pin_e,HIGH);
digitalWrite(pin_f,HIGH);
}
void one()
{
digitalWrite(pin_b,HIGH);
digitalWrite(pin_c,HIGH);
}
void two()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_b,HIGH);
digitalWrite(pin_g,HIGH);
digitalWrite(pin_e,HIGH);
digitalWrite(pin_d,HIGH);
}
void three()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_b,HIGH);
digitalWrite(pin_g,HIGH);
digitalWrite(pin_c,HIGH);
digitalWrite(pin_d,HIGH);
}
void four()
{
digitalWrite(pin_b,HIGH);
digitalWrite(pin_f,HIGH);
digitalWrite(pin_g,HIGH);
digitalWrite(pin_c,HIGH);
}
void five()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_f,HIGH);
digitalWrite(pin_g,HIGH);
digitalWrite(pin_c,HIGH);
digitalWrite(pin_d,HIGH);
}
void six()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_f,HIGH);
digitalWrite(pin_g,HIGH);
digitalWrite(pin_c,HIGH);
digitalWrite(pin_d,HIGH);
digitalWrite(pin_e,HIGH);
}
void seven()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_b,HIGH);
digitalWrite(pin_c,HIGH);
}
void eight()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_b,HIGH);
digitalWrite(pin_c,HIGH);
digitalWrite(pin_d,HIGH);
digitalWrite(pin_e,HIGH);
digitalWrite(pin_f,HIGH);
digitalWrite(pin_g,HIGH);
}
void nine()
{
digitalWrite(pin_a,HIGH);
digitalWrite(pin_b,HIGH);
digitalWrite(pin_g,HIGH);
digitalWrite(pin_f,HIGH);
digitalWrite(pin_c,HIGH);
digitalWrite(pin_d,HIGH);
}