Arduino: Blink - Villogó

Forrás: arduino.cc/en/Tutorial/Blink

A programkód C nyelven íródott és 3 fő részből áll. Az első részben töltjük be a szükséges modulokat, deklaráljuk a paramétereket (változókat és állandókat). A második rész a setup() függvény, amely a program elején egyszer fut le, a harmadik rész pedig a loop() fv, amelyben megadott kódsorozat addig ismétlődik, amíg működik az áramkör.

/*
  Blink - Villogó
  Bekapcsol egy LED-et egy másodpercre, majd egy másodpercig kikapcsolja, és ez ismétlődik.

  A legtöbb Arduino panelen található LED-es visszajelzés.
  A Nano-n 4db LED található.
	Az első LED a D13 lábbal van össze kapcsolva,
	a második a power LED,
	a harmadik és a negyedik pedig a D1 és a D0 lábbal ellentétesen van kapcsolva.
	Ez azt jelenti, hogy akkor világítanak, ha a D1, illetve a D0 kimeneten LOW/alacsony jel megy ki.
	Tehát a D0, D1 és a D13 kimenetek használatával kipróbálhatjuk a Nano-t külső LED áramkör nélkül is:)
	
	A forráskódban a per csillag és csillag per jelek közé írt szöveg többsoros kommentet jelent, nem része a programnak.
	Ugyanígy a per per jelek mögé írt szöveg is komment, de csak egysoros lehet
 */

// ide kerülne a változók deklarálása, de ebben a programban nincsennek.

// A setup függvény csak egyszer fut le az áramkör bekapcsolásakor, vagy a reset megnyomásakor. Itt kell elvégezni a kezdeti beállításokat.
void setup() {
  pinMode(13, OUTPUT); // a pinMode() fv kimenetnek állítja be a 13-as lábat.
}

// A loop függvény lefut, lefut, és újra lefut mindaddig, amíg működik az áramkör.
void loop() {
  digitalWrite(13, HIGH);   // A digitalWrite fv a 13-as lábra HIGH/magas jelet (5V-ot) kapcsol, ezért világít a LED
  delay(1000);              // delay() fv vár 1000ms-ot, azaz 1 másodpercet
  digitalWrite(13, LOW);    // A 13-as lábra LOW/alacsony jel (0V) kerül, ezért a LED kikapcsol
  delay(1000);              // vár 1 másodpercet
}

Az előbbi forráskód kommentek nélkül:

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

void loop() {
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  delay(1000);
}

Ugyanez változóval:

const int ledkimenet = 13; // szám típusú állandó létrehozása
int idotartam = 1000; // szám tipusú változó létrehozása

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

void loop() {
  digitalWrite(ledkimenet, HIGH);
  delay(idotartam);
  digitalWrite(ledkimenet, LOW);
  delay(idotartam);
}

A változók/konstansok használatának előnye, hogy paraméterezhetővé válik a program és könnyebb, gyorsabb lesz utólag megváltoztatni a beállításokat. A konstans és a változó között pedig az a különbség, hogy a változót akár menet közben a programon belül is meg lehet változtatni, a konstanst pedig nem.

Két LED használata:

const int ledkimenet1 = 1;
const int ledkimenet2 = 0;
int idotartam = 1000;

void setup() {
  pinMode(ledkimenet1, OUTPUT);
  pinMode(ledkimenet2, OUTPUT);
}

void loop() {
  digitalWrite(ledkimenet1, HIGH);
  digitalWrite(ledkimenet2, LOW);
  delay(idotartam);
  digitalWrite(ledkimenet1, LOW);
  digitalWrite(ledkimenet2, HIGH);
  delay(idotartam);
}

Egy LED véletlenszerűen meghatározott időtartamokkal (időtartam változó menet közbeni változtatásával):

const int ledkimenet = 13; // szám típusú állandó létrehozása
int idotartam = 1000; // szám tipusú változó létrehozása

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

void loop() {
	digitalWrite(ledkimenet, HIGH);
	idotartam = random(1,31)*100; // A random fv 1-től 30-ig terjedően generál egy egész számot
	// százzal megszorozva 0.1 és 3 másodperc közötti számot kapunk
	delay(idotartam);
	digitalWrite(ledkimenet, LOW);
	idotartam = random(1,31)*100;
	delay(idotartam);
}