Elemente programabile:

  • 4 LEDuri 
  • 3 butoane 
  • potentiometru 10KOhmi
  • un display cu 7-segmente (4 digiti) controlat de doua circuite interate 74HC595 inseriate
  • buzzer
  • interfete pentru senzori si alte module
  • 4 pini liberi – D5, D6, D9, A5

 

Leduri

  • D1 – conectat la pinul 13 Arduino
  • D2 – conectat la pinul 12 Arduino 
  • D3 – conectat la pinul 11 Arduino
  • D4 – conectat la pinul 10 Arduino

 

Aceste LED-uri sunt conectate in asa fel incat, pentru a le aprinde, trebuie sa scriem “0” logic (sau LOW sau 0V) la pinul respectiv.

De exemplu, pentru a aprinde LED D3:

int led = 11;

void setup(){
    pinMode(led, OUTPUT);
}

void loop(){
    digitalWrite(led, LOW);
}

Pentru a-l stinge: digitalWrite(led, HIGH);

 

Switch-uri

  • Switch 1 (S1) – pinul A1 Arduino
  • Switch 2 (S2) – pinul A2 Arduino
  • Switch 3 (S3) – pinul A3 Arduino

Aceste butoane (switch-uri) sunt in asa fel conectate incat, daca apas pe unul din ele, tensiunea care se va citi pe pinul respectiv va fi de 0V (sau LOW). Daca este neapasat, atunci la pinul respectiv se va citi valoare de 5V (sau HIGH).

int led = 12;

void setup(){
   pinMode(led, OUTPUT);
}

void loop(){
   if(digitalRead(A1) == LOW){
       digitalWrite(led, LOW);
   }
}

Potentiometrul

Potentiometrul este legat la pinul A0 al Arduino. Programul de mai jos citeste valoarea de pe pinul A0 (o valoare intre 0 si 1023) si o afiseaza pe monitorul serial.

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

void loop()
     Serial.println(analogRead(A0));
    delay(200);
}
Display

Display-ul este mai complicat (o prezentare pe larg se face in cadrul cursului). Ceea ce comanda display-ul (adica LED-urile din display) sunt niste circuite integrate situate chiar sub display (daca va uitati cu atentie veti vedea scris pe ele “74HC595”).

Arduino comunica cu integratele folosind trei pini:

  • pinul 8 – prin care transmite bitii care aprind LED-urile (DATA)
  • pinul 7 – prin care trimite un semnal de ceas (pentru fiecare bit, este un semnal de ceas) (CLOCK)
  • pinul 4 – pinul care marcheaza inceperea si finalizarea transmisiei datelor catre integrat. (LATCH)
int latchPin = 4;
int dataPin = 8;
int clockPin = 7;

void setup() {
  pinMode(latchPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
}

void loop() {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, 0b11111001);
  shiftOut(dataPin, clockPin, MSBFIRST, 0b10000000);
  digitalWrite(latchPin, HIGH);
}

Buzzer

Buzzer-ul (sau speaker) este conectat la pinul digital 3. Programul de mai jos porneste si opreste buzzer-ul. Atentie: zgomotul produs este puternic (si enervant!).

int buzzerPin = 3;

void setup() {
   pinMode(buzzerPin, OUTPUT);
}

void loop() {
   digitalWrite(buzzerPin, HIGH);
   delay(1000);
   digitalWrite(buzzerPin, LOW);
   delay(1000);
}
Proiecte pentru Multifunction Shield
  • un cronometru cu functiile START/STOP (cu switch S1), PAUSE (cu switch S2), RESET (cu switch S3). Se poate modifica astfel incat sa se afiseze si zecimile de secunde.
  • un cronometru pentru antrenament HIIT (High Intensity Interval Training). Ce inseamna asta? Sa poti seta un numar de serii, cu o perioada de lucru si o perioda de pauza. De exemplu: setez ca trebuie sa lucrez 10 serii, fiecare serie are 30 secunde urmata de 10 secunde de pauza, si tot asa pentru 10 serii.
  • un ceas digital cu ora, data, alarma. Ceasul are posibilitatea de a seta ora, data si alarma.
  • o statie meteo cu un senzor DHT-11. Pe durata unei secunde se afiseaza temperatura, iar urmatoarea secunda se afiseaa umiditatea. Si apoi se repeta.
  • joc „Simon says” (se pot folosi atat LED-urile de pe placa, cat si trei LED-uri externe). La fiecare repriza se afiseaza o secventa de n LED-uri. Apoi butoanele trebuie apasate in ordinea succesiunii LED-urilor. Daca este corect, se trece la etapa urmatoare, unde se aprind n+1 LED-uri. De exemplu, daca la etapa curenta se aprind LED-urile astfel: LED1, LED3, LED3, LED2, LED1, atunci trebuie apasate butoanele in urmatoarea secventa: S1, S3, S3, S2, S1.
  • un cod secret: daca se apasa butoanele intr-o anumita ordine, atunci se afiseaza un mesaj de succes.
  • de programat o functionalitate pentru apasare scurta a butonului si una pentru apasare lunga.

Tutorial