Vamos a ver cómo conectar un led de siete segmentos, en este caso un SMA42056 y un 3911AH, son muy parecidos, con los dos elementos con cátodo común. Esto significa que tenemos una salida común que habrá que poner a tierra, y pondremos voltaje en el resto de patas.
Estos son los dos elementos que vamos a probar, el de la izquierda es el SMA42056 y el de la derecha girado es el 3911AH. Este último está girado por el patillaje que trae. En el primero las patitas están en la zona superior e inferior, mientras que en último están a la izquierda y a la derecha. Ambos tienen 10 patillas.
El patillaje de los elementos son estos, ojo con las patillas a las que corresponden cada segmento, en el primer caso, por ejemplo, el segmento A se activa con la patilla 7, mientras que en el 3911AH es la patilla 10.
Otra imagen con todos los segmentos encendidos. También podemos ver una resistencia de 330 ohmios antes de las entradas para reducir el voltaje y proteger de cortos.
Por último vamos a usar el arduino para algo 😀
Primero el esquema de conexiones. Las resistencias son de 1000 Ohmios para proteger de cortos y reducir el voltaje del arduino.
Vamos con el código (manifiestamente mejorable y recortable)
int PinA = 24;
int PinB = 25;
int PinC = 50;
int PinD = 53;
int PinE = 52;
int PinF = 23;
int PinG = 22;
int PinPD = 51;
void setup() {
// put your setup code here, to run once:
pinMode(PinA, OUTPUT);
pinMode(PinB, OUTPUT);
pinMode(PinC, OUTPUT);
pinMode(PinD, OUTPUT);
pinMode(PinE, OUTPUT);
pinMode(PinF, OUTPUT);
pinMode(PinG, OUTPUT);
pinMode(PinPD, OUTPUT);
}
void printNumber(int number) {
switch (number) {
case 1:
digitalWrite(PinA, LOW);digitalWrite(PinB, HIGH);digitalWrite(PinC, HIGH);digitalWrite(PinD, LOW);
digitalWrite(PinE, LOW);digitalWrite(PinF, LOW);digitalWrite(PinG, LOW);digitalWrite(PinPD, LOW);
break;
case 2:
digitalWrite(PinA, HIGH);digitalWrite(PinB, HIGH);digitalWrite(PinC, LOW);digitalWrite(PinD, HIGH);
digitalWrite(PinE, HIGH);digitalWrite(PinF, LOW);digitalWrite(PinG, HIGH);digitalWrite(PinPD, HIGH);
break;
case 3:
digitalWrite(PinA, HIGH);digitalWrite(PinB, HIGH);digitalWrite(PinC, HIGH);digitalWrite(PinD, HIGH);
digitalWrite(PinE, LOW);digitalWrite(PinF, LOW);digitalWrite(PinG, HIGH);digitalWrite(PinPD, LOW);
break;
case 4:
digitalWrite(PinA, LOW);digitalWrite(PinB, HIGH);digitalWrite(PinC, HIGH);digitalWrite(PinD, LOW);
digitalWrite(PinE, LOW);digitalWrite(PinF, HIGH);digitalWrite(PinG, HIGH);digitalWrite(PinPD, HIGH);
break;
case 5:
digitalWrite(PinA, HIGH);digitalWrite(PinB, LOW);digitalWrite(PinC, HIGH);digitalWrite(PinD, HIGH);
digitalWrite(PinE, LOW);digitalWrite(PinF, HIGH);digitalWrite(PinG, HIGH);digitalWrite(PinPD, LOW);
break;
case 6:
digitalWrite(PinA, HIGH);digitalWrite(PinB, LOW);digitalWrite(PinC, HIGH);digitalWrite(PinD, HIGH);
digitalWrite(PinE, HIGH);digitalWrite(PinF, HIGH);digitalWrite(PinG, HIGH);digitalWrite(PinPD, HIGH);
break;
case 7:
digitalWrite(PinA, HIGH);digitalWrite(PinB, HIGH);digitalWrite(PinC, HIGH);digitalWrite(PinD, LOW);
digitalWrite(PinE, LOW);digitalWrite(PinF, LOW);digitalWrite(PinG, LOW);digitalWrite(PinPD, LOW);
break;
case 8:
digitalWrite(PinA, HIGH);digitalWrite(PinB, HIGH);digitalWrite(PinC, HIGH);digitalWrite(PinD, HIGH);
digitalWrite(PinE, HIGH);digitalWrite(PinF, HIGH);digitalWrite(PinG, HIGH);digitalWrite(PinPD, HIGH);
break;
case 9:
digitalWrite(PinA, HIGH);digitalWrite(PinB, HIGH);digitalWrite(PinC, HIGH);digitalWrite(PinD, HIGH);
digitalWrite(PinE, LOW);digitalWrite(PinF, HIGH);digitalWrite(PinG, HIGH);digitalWrite(PinPD, LOW);
break;
case 0:
digitalWrite(PinA, HIGH);digitalWrite(PinB, HIGH);digitalWrite(PinC, HIGH);digitalWrite(PinD, HIGH);
digitalWrite(PinE, HIGH);digitalWrite(PinF, HIGH);digitalWrite(PinG, LOW);digitalWrite(PinPD, HIGH);
break;
}
}
void loop() {
// put your main code here, to run repeatedly:
for (int i=0;i<10;i++) {
printNumber(i);
delay(1000);
}
}
Y como siempre, el resultado en vídeo: