View on GitHub

arduino-deti

Zápisky z našich domácích Arduino projektů

← zpět na zápisky z Arduino projektů

Programované blikače

Rozšířená verze ručních blikačů, jen už budeme programovat. Jednoduché vrstvení příkazů za sebou (sekvence), osahání si Arduino IDE, nahrávání programu do Arduina. Napájení Arduina z USB nebo z baterie.

Různá zapojení automatických blikačů. Základní struktura programu (nastavení v setup() a dokola opakovaný kód v loop()). Časování pomocí delay(), příkazy digitalWrite(), pinMode(), HIGH, LOW.

Vysvětlení, co je to GND, VCC, jaké typy napětí kde na Arduinu najdeme.

Co je potřeba umět

Základy zapojování LED

Foto

Fotografie nezobrazuje přesně typ automatického blikače, který je dále popsán kódem.

Hardware

Blikač 1

Schéma zapojení

blikac.fzz

blikac

Program

blikac.ino - kód je napsán osmiletým dítětem

// jak dlouho ma pockat
const int cas = 100;

void setup() {
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // rozsvit
  digitalWrite(9, HIGH);
  digitalWrite(13, HIGH);
  // cekej
  delay(cas);
  // zhasni
  digitalWrite(9, LOW);
  digitalWrite(13, LOW);
  // cekej
  delay(cas);
  // rozsvit
  digitalWrite(8, HIGH);
  digitalWrite(12, HIGH);
  // cekej
  delay(cas);
  // zhasni
  digitalWrite(8, LOW);
  digitalWrite(12, LOW);
  // cekej
  delay(cas);
}

Blikač 2

Schéma zapojení

blikac2.fzz

blikac2

Program

blikac2.ino - kód je napsán osmiletým dítětem

// nastavi delku cekani
const int cekani = 100;
const int cekanimezi = 50;

// nastavi cisla pinu pro led
const int red1 = 11;
const int red2 = 10;
const int red3 = 9;
const int red4 = 8;

// reknu mu ze na nej budu psat
void setup() {
  pinMode(red1, OUTPUT);
  pinMode(red2, OUTPUT);
  pinMode(red3, OUTPUT);
  pinMode(red4, OUTPUT);
}

// udelam blok blikni
void blikni(int led) {
  digitalWrite(led, HIGH);
  delay(cekani);
  digitalWrite(led, LOW);
}

// udelam blok vsechny
void blikniVsechny() {
  digitalWrite(red1, HIGH);
  digitalWrite(red2, HIGH);
  digitalWrite(red3, HIGH);
  digitalWrite(red4, HIGH);
  delay(cekani);
  digitalWrite(red1, LOW);
  digitalWrite(red2, LOW);
  digitalWrite(red3, LOW);
  digitalWrite(red4, LOW);
  delay(cekanimezi);
}

void loop() {
  blikni(red1);
  blikni(red2);
  blikni(red3);
  blikni(red4);
  blikni(red3);
  blikni(red2);
  blikni(red1);
  blikniVsechny();
  blikniVsechny();
}

Možná vylepšení

Poznatky

V prvních chvílích není ani tak důležité, aby děti rozuměly všemu, co se v kódu píše, ale aby to blikalo. Časem si osahají jednotlivé příkazy a konstrukce, případně i cykly.