Introducere

Acest tutorial este creat special pentru shield-ul de învățare compatibil cu Arduino UNO R3. Produsul este destinat începătorilor deoarece nu sunt necesare componente adiționale pentru a utiliza un ecran LED cu 4 cifre a câte 7 segmente fiecare, un buzzer activ, 4 led-uri sau 3 butoane.

În continuare veți găsi mai multe exemple de coduri și explicații pentru a utiliza diversele componentele montate pe shield.

1.  Aprinderea/stingerea led-urilor.

Pe shield se regăsesc,lângă pinii digitali 10-13, 4 led-uri, marcate cu D1, D2, D3, D4. Un exemplu de cod este atașat mai jos, iar fiecare instrucțiune este explicată.


int ledD1 = 13;
int ledD2 = 12;
int ledD3 = 11;
int ledD4 = 10;

Pinii utilizați de cele 4 leduri sunt 13 (D1), 12 (D2), 11(D3) și 10(D4)

void setup()
{
pinMode(ledD1, OUTPUT);
pinMode(ledD2, OUTPUT);
pinMode(ledD3, OUTPUT);
pinMode(ledD4, OUTPUT);
}
În cadrul funcției SETUP() trebuie să inițializați pinii digitali utilizați de led-uri ca fiind de ieșire.
void loop()
{
digitalWrite(ledD1, HIGH);
digitalWrite(ledD2, HIGH);
digitalWrite(ledD3, HIGH);
digitalWrite(ledD4, HIGH);

delay(1000);

În cadrul funcției LOOP(), vom tine ledurile stinse timp de 1 secundă după care vor fi aprinse pentru 1 secundă.

Pentru a stinge un led, pin-ul digital corespunzător led-ului trebuie să fie setat HIGH.

digitalWrite(ledD1, LOW);
digitalWrite(ledD2, LOW);
digitalWrite(ledD3, LOW);
digitalWrite(ledD4, LOW);

delay(1000);
}

Pentru a aprinde un led, pin-ul digital corespunzător led-ului trebuie să fie setat LOW.

2. Utilizarea ecranului cu 4 cifre împreună cu potențiometrul de 1k.

De obicei, un ecran cu 4 cifre a câte 7 segmente utilizează până la 12 pini digitali. Însă, pe shield-ul de învățare sunt montate și 2 registre de deplasare care ușurează substanțial modul de utilizare a ecranului. Astfel, în loc să folosiți 12 pini digitali, trebuie să utilizați doar 3 pini digitali. 

#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
Pinii digitali 4,7 și 8 sunt utilizați pentru a controla registrele de deplasare.
#define Pot1 A0 Pinul analog A0 este utilizat pentru a măsura rezistența potențiometrului.


const byte SEGMENT_MAP[] =

{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};

În vectorul SEGMENT_MAP vom reține fiecare cod specific (în binar) pentru a realiza o anumita cifra pe ecran. 

De exemplu, 0xC0 în zecimal înseamna 11000000, ultimii 7 biți reprezentând starea fiecărui segment în parte.  Dacă un bit este 0, înseamnă că segmentul este aprins și în caz contrar pentru un bit 1. Astfel, din codul de mai sus aflăm că segmentul G (consultați imaginea atașată mai jos pentru a afla cum sunt ordinea segmentelor) este stins, iar restul sunt aprinse, formând astfel cifra 0.


const byte SEGMENT_SELECT[] =

{0xF1,0xF2,0xF4,0xF8};

Cod

void Display(byte Segment, byte Value)
{
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}

it is ok

void setup ()
{
Serial.begin(9600);

pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);

}


Merge bine
void loop()
{
int PotValue;


PotValue = analogRead(Pot1);
Serial.print("Potentiometer: ");
Serial.println(PotValue);
long t=millis();

mergeeeee
while(millis()-t<1000)
{

Display(0 , PotValue / 1000);
Display(1 , (PotValue / 100) % 10);
Display(2 , (PotValue / 10) % 10);
Display(3 , PotValue % 10);
}
}
gud gud

7-segment-LED-display-pinout.jpg