Здравствуйте! Попался под руки семисегментный индикатор(ELD-436GWB\S411) от стиралки, с общим анодом. Подключил его одну секцию к портам arduino uno через резистор 330 Ом:
A-2; B-3; C-4; D-5; E-6; F-7; G-8; Общ.Анод-13.
И по совету Висмута написал код (перебирает числа)
Задержка delay задаёт интервал перебора.
Код громоздкий, но для понимания, думаю, самое то...
И ещё, в моём случае при такой конфигурации максимальный ток потребляет около 35 мА, что не совсем полезно ардуине, так что расчеты производите по своим данным.
Код:
#define Aa 2
#define Bb 3
#define Cc 4
#define Dd 5
#define Ee 6
#define Ff 7
#define Gg 8
int zn;
int i;
void setup() {
for(i=0; i<8; i++) {
pinMode(i+1, OUTPUT);
}
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
zn = -1;
}
void loop() {
for(;;) {
zn++;
if(zn > 9) {
zn = 0;
}
switch (zn) {
case 0:
digitalWrite(Aa, 0);
digitalWrite(Bb, 0);
digitalWrite(Cc, 0);
digitalWrite(Dd, 0);
digitalWrite(Ee, 0);
digitalWrite(Ff, 0);
digitalWrite(Gg, 1);
break;
case 1:
// Aa=1; Bb=0; Cc=0; Dd=1; Ee=1; Ff=1; Gg=1;
digitalWrite(Aa, 1);
digitalWrite(Bb, 0);
digitalWrite(Cc, 0);
digitalWrite(Dd, 1);
digitalWrite(Ee, 1);
digitalWrite(Ff, 1);
digitalWrite(Gg, 1);
break;
case 2:
// Aa=0; Bb=0; Cc=1; Dd=0; Ee=0; Ff=1; Gg=0;
digitalWrite(Aa, 0);
digitalWrite(Bb, 0);
digitalWrite(Cc, 1);
digitalWrite(Dd, 0);
digitalWrite(Ee, 0);
digitalWrite(Ff, 1);
digitalWrite(Gg, 0);
break;
case 3:
// Aa=0; Bb=0; Cc=0; Dd=0; Ee=1; Ff=1; Gg=0;
digitalWrite(Aa, 0);
digitalWrite(Bb, 0);
digitalWrite(Cc, 0);
digitalWrite(Dd, 0);
digitalWrite(Ee, 1);
digitalWrite(Ff, 1);
digitalWrite(Gg, 0);
break;
case 4:
// Aa=1; Bb=0; Cc=0; Dd=1; Ee=1; Ff=0; Gg=0;
digitalWrite(Aa, 1);
digitalWrite(Bb, 0);
digitalWrite(Cc, 0);
digitalWrite(Dd, 1);
digitalWrite(Ee, 1);
digitalWrite(Ff, 0);
digitalWrite(Gg, 0);
break;
case 5:
// Aa=0; Bb=1; Cc=0; Dd=0; Ee=1; Ff=0; Gg=0;
digitalWrite(Aa, 0);
digitalWrite(Bb, 1);
digitalWrite(Cc, 0);
digitalWrite(Dd, 0);
digitalWrite(Ee, 1);
digitalWrite(Ff, 0);
digitalWrite(Gg, 0);
break;
case 6:
// Aa=0; Bb=1; Cc=0; Dd=0; Ee=0; Ff=0; Gg=0;
digitalWrite(Aa, 0);
digitalWrite(Bb, 1);
digitalWrite(Cc, 0);
digitalWrite(Dd, 0);
digitalWrite(Ee, 0);
digitalWrite(Ff, 0);
digitalWrite(Gg, 0);
break;
case 7:
// Aa=0; Bb=0; Cc=0; Dd=1; Ee=1; Ff=1; Gg=1;
digitalWrite(Aa, 0);
digitalWrite(Bb, 0);
digitalWrite(Cc, 0);
digitalWrite(Dd, 1);
digitalWrite(Ee, 1);
digitalWrite(Ff, 1);
digitalWrite(Gg, 1);
break;
case 8:
// Aa=0; Bb=0; Cc=0; Dd=0; Ee=0; Ff=0; Gg=0;
digitalWrite(Aa, 0);
digitalWrite(Bb, 0);
digitalWrite(Cc, 0);
digitalWrite(Dd, 0);
digitalWrite(Ee, 0);
digitalWrite(Ff, 0);
digitalWrite(Gg, 0);
break;
case 9:
// Aa=0; Bb=0; Cc=0; Dd=0; Ee=1; Ff=0; Gg=0;
digitalWrite(Aa, 0);
digitalWrite(Bb, 0);
digitalWrite(Cc, 0);
digitalWrite(Dd, 0);
digitalWrite(Ee, 1);
digitalWrite(Ff, 0);
digitalWrite(Gg, 0);
break;
}
delay(2000);
}
}