Bawię się i ja
Dzisiaj takie cudo wyszło: 2cyfrowy 7segmentowy wyświetlacz LED. Kupiłem wersję ze wspólną anodą i jest to wersja, która każdą diode ma na osobnym wyjściu, także możemy z nimi robić co chcemy . Dlatego też przyporządkowałem porty pod konkretne segmenty wyświetlacza. Duże litery - wyświetlacz po lewej, małe litery, wyświetlacz po prawej. Zajęło to aż 16 portów Arduino (!). Z kodu zauważymy, który port pod którego LEDa był podpięty. Pierwszy raz użyłem funkcji - fajna sprawa . Pomiędzy porty Arduino, a diody należy umieścić oporniki. Ja miałem oporniki różnej oporności, dlatego podaję zakres, jakiego użyłem i nic się nie spaliło

: 1k-220ohm. Różnica w świeceniu jest słabo widoczna.
Tutaj schemacik:

a tutaj kodzik:
Kod:
int A=11;
int B=12;
int C=6;
int D=7;
int E=8;
int F=9;
int G=10;
int DP=5;
int a=A0;
int b=A1;
int c=1;
int d=3;
int e=4;
int f=13;
int g=2;
int dp=0;
int pins[16]={A, B, C, D, E, F, G, DP, a, b, c, d, e, f, g, dp};
byte counting_from_0_to_10[11][16]={{1,1,1,1,1,1,1,1, 0,0,0,0,0,0,1,1},//=0
{1,1,1,1,1,1,1,1, 1,0,0,1,1,1,1,1}, //=1
{1,1,1,1,1,1,1,1, 0,0,1,0,0,1,0,1}, //=2
{1,1,1,1,1,1,1,1, 0,0,0,0,1,1,0,1}, //=3
{1,1,1,1,1,1,1,1, 1,0,0,1,1,0,0,1}, //=4
{1,1,1,1,1,1,1,1, 0,1,0,0,1,0,0,1}, //=5
{1,1,1,1,1,1,1,1, 0,1,0,0,0,0,0,1}, //=6
{1,1,1,1,1,1,1,1, 0,0,0,1,1,1,1,1}, //=7
{1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,1}, //=8
{1,1,1,1,1,1,1,1, 0,0,0,0,1,0,0,1}, //=9
{1,0,0,1,1,1,1,1, 0,0,0,0,0,0,1,1}}; //=10
int i;
int j;
int k;
int pin;
void setup() {
for(j=0;j<=15;j++) //Petla ktora ustawia wszystkie porty jako WYJSCIE
{pin=pins[j];
pinMode(pin, OUTPUT);
}
for(i=0;i<=15;i++) //Petla ktora ustawia wszystkie porty w stan WYSOKI
{digitalWrite(i, HIGH);}
}
void sevenSegWrite(byte digit) { //Funkcja, ktora jest wywolywana w petli programu.
k=0; //ustawiamy zmienna k na pierwszy element tablicy "pins"
for (byte segCount = 0; segCount < 16; ++segCount) { //Po wywolaniu funkcji ze zmienna digit dostajemy, ktora cyfre (wiersz) z tablicy
digitalWrite(pins[k], counting_from_0_to_10[digit][segCount]); // counting_from_0_to_10[digit][segCount] chcemy wyświetlić
++k; // i w digitalWrite podajemy dopasowany pin i wartosc z tablicy counting_from_0_to_10 jaki chcemy odpalić :)
}
}
void loop() {
for (byte count = 11; count > 0; --count) {
delay(1000);
sevenSegWrite(count - 1);
}
delay(4000);
}
Jeśli nie chcemy czekać 4s, możemy wrzucić taki ładny pokaz

:
Kod:
void loop() {
for (byte count = 11; count > 0; --count) {
delay(1000);
sevenSegWrite(count - 1);
}
delay(200);
for(i=0;i<=15;i++) //Petla ktora ustawia wszystkie porty w stan WYSOKI
{digitalWrite(i, HIGH);}
for(i=0;i<=15;i++)
{ led=pins[i];
digitalWrite(led, LOW);
delay(125);}
for(i=15;i>=0;i--)
{ led=pins[i];
digitalWrite(led, HIGH);
delay(125); }
}
Do kolegi Ellipsis - mam nadzieję, że nie przeszkadza, tym co wrzucam. Jeśli tak, to proszę o odpowiedź

.