Structura avansată a programelor Arduino

Structura minimalistă

Reamintim faptul că un program minimalist de Arduino este format din 2 funcții: setup() și loop().

void setup()
  • Rulează o singură dată atunci când placa Arduino (re)pornește
  • Are rol de inițializare / pornire parametri și obiecte
void loop()
  • Rulează după setup() „la infinit”, adică până la oprirea alimentării plăcii Arduino
  • De obicei în această funcție sunt cuprinse majoritatea instrucțiunilor

Structura avansată

1. Declarare

  • Înainte de void setup()
  • Se poate pune o descriere a programului aici
  • Aici includem bibliotecile (libraries) de care ne vom folosi
  • Tot aici stabilim ce conectăm și pe care pini.  Recomandăm  pentru pini folosirea instrucțiunii #define (sintaxa: #define „nume” „pin”)
  • Aici declarăm variabilele globale (care sunt cunoscute de tot programul, nu numai de anumite zone/funcții unde au fost declarate)

2. void setup()

  • Inițializăm canalele de comunicații (serial sau cu diverse module)
  • Stabilim ce roluri au pinii (digitali)
  • Executăm orice instrucțiune (sau set de instrucțiuni) ce trebuie rulate la pornirea plăcii Arduino sau care trebuie executate o singură dată

3. void loop()

  • Aici executăm programul propriu zis
  • Pentru programele ce utilizează udf-uri (user-defined-functions), de aici pot fi apelate anumite funcții ce trebuie repetate

4. Funcții definite de utilizator (udf-urile)

  • Aici scriem funcțiile create de noi
  • Acestea pot fi apelate de pe parcursul întregului program
  • În funcție de program, funcțiile create de utilizator pot interacționa cu componentele fizice, cu variabile sau cu alte funcții

Exemplu de program Arduino

int led = 13;   //pe acest pin vom conecta led-ul
void setup(){
//stabilim ca pinul selectat pentru led va alimenta în exterior si nu va primi curent din exterior
pinMode(led, OUTPUT); 
}

void loop(){
digitalWrite(led, HIGH); //alimentăm pinul led cu 5V (se recomandă rezistor de 220Ω)
delay(1000);   //așteptăm 1 secundă = 1000 milisecunde
digitalWrite(led, LOW); //oprim ledul
delay(1000);    //așteptăm 1 secundă = 1000 milisecunde
}