Tutorial programare cu Arduino IDE - partea a 4-a

In acest articol voi incerca sa exemplific cat mai multe exemple de cod sursa care pot fi rulate in functia loop().

In primul rand putem citi valoarea aflata la un anumit pin. Acest lucru se face la un pin digital prin comanda 

valoareCitita = digitalRead(numarPin);

 unde in variabila valoareCitita vom stoca valoarea existenta la acel pin iar pentru un pin analogic vom folosi urmatoarea instructiune

valoareCitita = analogRead(numarPin);

De asemenea putem si seta unui alt pin o anumita valoare de iesire. Aceasta valoare poate fi digitala (LOW sau HIGH) cu ajutorul comenzii

digitalWrite(numarPin, LOW);

sau o valoare PWM cu ajutorul acestui cod

analogWrite(numarPin, valoare);

unde parametrul valoare poate fi intre 0 si 255.

O alta functie este tone(), aceasta, asa cum ii spune si numele, este folosita la generarea de tonuri. Se poate folosi pentru pinii digitali 3-11 pe placile Arduino Uno. Un exemplu de cod este cel de mai jos:

tone(pin, frecventa, durata);

unde pin este numarul pinului, frecventa in Hertzi (nu mai mica de 31Hz) si, optional, durata in milisecunde.

Pentru a opri generarea tonului va trebui sa folosim acest cod:

noTone(pin);

 Tot aici putem folosi structurile de control. Aceste sunt urmatoarele:

-if;

-if ... else;

-for;

-switch ... case;

-while;

-do ... while;

si altele.

Cea mai cunoscuta si folosita instructiune este if si/sau if ... else.

Pentru a folosi doar instructiunea if vom folosi urmatorul cod sursa:

if (conditie) instructiune;

si un exemplu practic:

if (butonApasat == HIGH) digitalWrite(led, HIGH);

Un alt cod sursa care poate fi folosit este cel in care la indeplinirea unei conditii executam 2 sau mai multe instructiuni. In acest caz codul se va modifica in acest fel:

if (conditie) {
   instructiune1;
   instructiune2;
}

si un exemplu practic:

if (butonApasat == HIGH) {
   digitalWrite(ledRosu, HIGH);
   digitalWrite(ledVerde, LOW);
}

Pentru a folosi instructiunea if ...else vom folosi urmatorul cod sursa:

if (conditie) {
   instructiune1;
} else {
   instructiune2;
}

un exemplu practic este cel de mai jos:

if (butonApasat == HIGH) {
   digitalWrite(led, HIGH);
} else {
   digitalWrite(led, LOW);
}

In interiorul unei instructiuni de tipul if ...else putem introduce alte instructiuni de acelasi tip. Un exemplu de cod este urmatorul:

if (conditie) {
   instructiune1;
      if (subConditie) {
         subInstructiune1;
      } else {
         subInstructiune2;
      }
} else {
   instructiune2;
}

Urmatoarea instructiune este bucla for. Aceasta are urmatorul cod sursa:

for (initializare, conditie, actualizare) {
   instructiune;
}

Un exemplu practic este cel de mai jos:

for (x=0;x<10;x++) {
   Serial.print("Valoarea lui x este: ");
   Serial.println(x);
}

unde:

-x=0 este variabila de la care se porneste;

-x<10 este conditia care va trebui indeplinita;

-x++ inseamna incrementarea valorii lui x cu o unitate la fiecare ciclu al buclei.

In exemplul de mai sus bucla ruleaza 10 cicluri de la 0 la 9.

Urmatoarea instructiune este switch ...case. Aceasta este o instructiune de selectie si se foloseste conform urmatorului cod:

switch(variabila) {
   case valoare1:
      instructiune;
      break;
   case valoare2:
      instructiune2;
      break;
}

unde valoare1 si valoare2 sunt 2 (sau mai multe) optiuni ale variabilei alocate instructiunii switch. Tipul de date permis de catre aceasta variabila este de tip int sau char

Un exemplu practic cu aceasta instructiune este mai jos:

switch(butonApasat) {
   case 1:
      Serial.println("Butonul este apasat");
      break;
   case 0:
      Serial.println("Butonul nu este apasat");
      break;
}

Urmatorul exemplu este bucla while. Aceasta bucla are urmatorul cod sursa:

while(conditie) {
   instructiune;
}

Un exemplu practic este cel de mai jos:

int var = 0;
while(var < 10) {
   var++;
}

acest cod va incrementa valoarea variabilei var cu o unitate pana cand conditia initiala va fi indeplinita. Mai exact in exemplul nostru bucla while va rula de 10 ori pana cand variabila var va ajunge la valoarea 10.

O alta instructiune este bucla do ...while. Aceasta este asemanatoare cu bucla while prezentata in exemplul anterior, singura diferenta fiind ca aceasta bucla mai intai executa o instructiune apoi verifica daca conditia pentru executia instructiunii permite ca aceasta sa fie rulata sau nu. Aceasta instructiune este folositoare atunci cand vrem sa rulam o instructiune cel putin o data. Codul sursa folosit este urmatorul:

do {
   instructiune;
} while (conditie);

Iar un exemplu practic cu aceasta instructiune este mai jos:

do {
   digitalWrite(led, HIGH);
} while (butonApasat == HIGH);

In urmatorul articol vom vedea cum putem crea si folosi propriile noastre functii pentru a simplifica codul sursa scris in editor. 

Nu sunt comentarii in “Tutorial programare cu Arduino IDE - partea a 4-a”

Lasa un comentariu

Raspuns lui Some User

Autentificare