This is an old revision of the document!


Laboratorul 02 - Operații GPIO

Scop

  • familiarizarea cu operațiile legate de pinii arduino
  • familiarizarea cu conceptele de bază din programare

Cuvinte cheie

  • pinMode, digitalWrite, HIGH, LOW, LED
  • for, if, while, vector

Concepte de programare

Variabile

Variabilele sunt moduri în care referențiem valori de anumite tipuri.

variabile.c
#include <stdio.h>
 
int main(void) 
{
      int variabila_numar = 10;
      char variabila_caracter = 'c';
      float variabila_numar_zecimale = 10.25;
      return 0;
}

Șiruri / Vectori

Șirurile/Vectorii sunt variabile mai inteligente de o anumită dimensiune ce pot stoca un șir de valori de fiecare tip de mai sus. Exemplu:

variabile.c
#include <stdio.h>
 
int main(void) 
{
      int sir[6];
      int sir2[] = { 1,2,3,4,5,6};
      char sir3[] = {'a', 'b', 'c', 'd'};
      char sir[6] = "salut";
      return 0;
}

If - Else

Propoziția if este o propoziție condițională folosită pentru a executa instrucțiuni în funcție de anumite condiție construcția if-else se traduce prin “dacă - altfel”:

if_else.c
#include <stdio.h>
 
int main(void) 
{
      int a = 10;
      if (a == 10) { //dacă a este egal cu 10
          // Fă operații când a este 10
      } else { // Altfel
          // Fă operații când a este diferit de 10
      }
      return 0;
}

For

Structura for este o structură repetitivă în funcție de o condiție. Mod de utilizare:

for.c
#include <stdio.h>
 
int main(void) 
{
      //for(inițializare, condiție, operație) {}
      int i;
      for (i = 0; i <= 10; i++) {
          printf("%d ", i); // Afișează i;
      } 
      return 0;
 
      // Codul de mai sus va afișa: 0 1 2 3 4 5 6 7 8 9 10
}

Parcurgerea unui șir

Accesarea unei anumite valori dintr-un vector se face prin index-ul(poziția) valorii din vector.

vector.c
#include <stdio.h>
 
int main(void) 
{
      int i;
      int vector[] = {1,2,3,4,5,6,7,8,9};
      int sum = 0;
 
      printf("%d\n", vector[2]); // Afișează 3
 
      for (i = 0; i < 9; i++) { // Pozițiile în vector încep de la 0!!
 
          sum = sum + vector[i]; // Suma tuturor elementelor din vector
      } 
 
      return 0;
}

Funcții

Funcţiile împart taskuri complexe în bucăţi mici mai uşor de înţeles şi de programat. Acestea pot fi refolosite cu alte ocazii, în loc să fie rescrise de la zero. De asemenea, funcţiile sunt utile pentru a ascunde detalii de funcţionare ale anumitor părţi ale programului, ajutând la modul de lucru al acestuia. Utilizând funcţii, care reprezintă unitatea fundamentală de execuţie a programelor C, se obţine o divizare logică a programelor mari şi complexe.

vector.c
#include <stdio.h>
 
void afiseaza(int number) {
    printf("%d\n", number);
}
 
int main(void) 
{
    int x = 10;
 
    afiseaza(10); // Va afisa valoarea 10
 
    return 0;
}

Operații pini arduino

Pentru a folosi pinii unui arduino trebuie să setăm modul în care dorim să îi folosim (INPUT/OUTPUT). Exemplu:

void setup() {
    pinMode(PINUL_MEU, INPUT);
    pinMode(PINUL_MEU2, OUTPUT);
}
void loop() {
}

Dacă am setat un pin pe modul OUTPUT, acum putem elibera voltaj pe acest pin folosind digitalWrite. Exemplu:

void setup() {
    pinMode(PINUL_MEU, INPUT);
    pinMode(PINUL_MEU2, OUTPUT);
}
void loop() {
    digitalWrite(PINUL_MEU, HIGH); //Pe acest pin avem acum 5v
    delay(3000); // Așteaptă 3 secunde
    digitalWrite(PINUL_MEU, LOW); //Acum avem 0v pe acest pin
}

Exerciții

Toate exercițiile vor fi realizate pe Tinkercad

  1. Folosind un VOLTMETRU masurați voltajul de pe pinul GPIO 3. Setați pinul pe LOW/HIGH și observați cum se modifică valorile.
  2. Folosind un ARDUINO, un LED și o REZISTENȚĂ de 220 ohmi, aprindeti LED-ul (NU folositi pinii GPIO), apoi masurați curentul și voltajul circuitului.
  3. Folosind un ARDUINO, un LED și o REZISTENȚĂ de 220 ohmi, faceți un LED să clipească (rezolvați exercițiul în 2 modalități).
  4. Folosind un ARDUINO, LED-uri și REZISTENȚE de 220 ohmi, simulați un semafor de mașini și un semafor de pietoni care să fie sincronizate. Semafoarele vor fi implementate folosind led-uri și parcurgerea acestora trebuie făcută cu șiruri/vectori (rezolvați exercițiul în 2 modalități).
  5. Conectați la un ARDUINO, un 7 SEGMENT DISPLAY și folosind funcții ajutătoare, afișați fiecare număr (0-9) pe display. Rezolați în 2 modalitați: folosind un 7 SEGMENT DISPLAY cu anod comun, respectiv cu catod comun.
  6. Folosind montajul anterior implementați un numarator ce afiseaza cifrele de la 0 la 9.

100

  1. Conectati 5 LED-uri si controlati-le astfel incat fiecare sa clipeasca pe rand: primul o data, al doilea de doua ori etc.
  2. Folositi un LED pentru a lumina un cuvant in cod morse.
info2/laboratoare/02.1583836238.txt.gz · Last modified: 2020/03/10 12:30 by ioana_maria.culic
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0