premetto ke ho appena preso l’arduino 2009 e di progrmmazione non me ne intendo molto…
ho trovato un display a 7 segmenti a anodo comune e vorrei controllarlo con un potenziometro
ho provato con il codice sotto ma i segmenti rimangono sempre tutti accesi e alcuni si accendono di più però non si leggono i numeri… potete aiutarmi?
il codice che uso è questo:
//define pattern
int all[8]={2,3,4,5,6,7,8,9};
int zero[6]={2,3,4,6,8,9};
int one[2]={4,6};
int two[5]={2,4,5,9,8};
int three[5]={2,4,5,6,8};
int four[4]={3,4,5,6};
int five[5]={2,3,5,6,8};
int six[6]={6,8,9,4,3,2};
int seven[3]={2,4,6};
int eight[7]={2,3,4,5,6,8,9};
int nine[6]={2,3,4,5,6,8};
int dot[1]={7};
int pot=0;
void setup(){
int i;
for(i=0;i<8;i++){
pinMode(all[i],OUTPUT);
}
Serial.begin(9600);
}
void loop(){
int potvalue=analogRead(pot);
int number=map(potvalue,0,1023,0,9);
switch (number){
case 0: lightOn(zero,6);break;
case 1: lightOn(one,2); break;
case 2: lightOn(two,5); break;
case 3: lightOn(three,5); break;
case 4: lightOn(four,4); break;
case 5: lightOn(five,5); break;
case 6: lightOn(six,6); break;
case 7: lightOn(seven,3); break;
case 8: lightOn(eight,7); break;
case 9: lightOn(nine,6); break;
}
}
void lightOn(int pattern[],int length){
int i;
//light off all leds
for(i=0;i<8;i++) //int type stores a 2 byte value
{
digitalWrite(all[i],LOW);
}
//light on pattern
for(i=0;i<length;i++) //int type stores a 2 byte value
{
digitalWrite(pattern[i],HIGH);
}
}