Lekce 10
Desátá lekce Arduino kurzu pro začátečníky: naučíte se ovládat LED přímo z počítače pomocí sériového monitoru. Ukážeme si zapojení tří LED, kód do Arduino IDE i to, jak Arduino čte text z klávesnice – napíšete název barvy, stisknete Enter a odpovídající LED se rozsvítí.
Popisek obrázku: tři LED, každá přes vlastní rezistor 220 Ω do GND. Anody LED vedou postupně na piny 2, 3 a 4. Komunikace s počítačem probíhá po USB kabelu – žádné další zapojení k tomu nepotřebujete.
| Komponenta | Arduino |
|---|---|
| LED 1 (anoda, přes 220 Ω) | pin 2 |
| LED 2 (anoda, přes 220 Ω) | pin 3 |
| LED 3 (anoda, přes 220 Ω) | pin 4 |
| LED (katody) | GND |
Sériový monitor je okénko vestavěné přímo v Arduino IDE, které slouží jako přestupní stanice mezi počítačem a Arduinem. Po USB kabelu posílá text tam i zpět. V tomto pokusu počítač pošle název barvy, Arduino ho funkcí Serial.read postupně přečte a složí do jednoho řetězce. Pak ho porovná – když odpovídá některé barvě, zapne příslušnou LED a ostatní zhasne. Komunikace běží rychlostí 9600 Bd.
// Sériový monitor
// Otevřete sériový monitor. Když do něj napíšete "cervena" a stisknete Enter,
// rozsvítí se červené LED světlo. Zkuste i další barvy!
// Email: podpora@laskakit.cz · Web: laskakit.cz
const int modraPin = 2; // číslo pinu modré LEDky
const int zlutaPin = 3; // číslo pinu žluté LEDky
const int cervenaPin = 4; // číslo pinu červené LEDky
String comdata = "";
int lastLength = 0;
void setup() {
pinMode(modraPin, OUTPUT); // modrá LED jako výstup
pinMode(zlutaPin, OUTPUT); // žlutá LED jako výstup
pinMode(cervenaPin, OUTPUT); // červená LED jako výstup
Serial.begin(9600); // spustit sériový monitor na 9600 Bd
Serial.print("Please input any color of LED:"); // zpráva do monitoru
}
void loop() {
// pokud jste něco napsali do monitoru
if (Serial.available() > 0) {
comdata = "";
while (Serial.available() > 0) {
comdata += char(Serial.read()); // skládat znaky do řetězce
delay(2);
}
Serial.println(comdata);
}
if (comdata == "cervena") {
digitalWrite(cervenaPin, HIGH); // zapnout červenou LEDku
digitalWrite(modraPin, LOW); // vypnout modrou LEDku
digitalWrite(zlutaPin, LOW); // vypnout žlutou LEDku
} else if (comdata == "zluta") {
digitalWrite(cervenaPin, LOW);
digitalWrite(modraPin, LOW);
digitalWrite(zlutaPin, HIGH); // zapnout žlutou LEDku
} else if (comdata == "modra") {
digitalWrite(cervenaPin, LOW);
digitalWrite(modraPin, HIGH); // zapnout modrou LEDku
digitalWrite(zlutaPin, LOW);
} else {
digitalWrite(cervenaPin, LOW); // vypnout všechny LEDky
digitalWrite(modraPin, LOW);
digitalWrite(zlutaPin, LOW);
}
}
cervena, zluta, modra. Napište barvu přesně takto.QK čemu slouží sériový monitor?