Lekce 11

Fotorezistor

Jedenáctá lekce Arduino kurzu pro začátečníky: zapojíte fotorezistor a necháte ho podle množství světla rozsvěcet řadu LED. Ukážeme si zapojení, čtení analogového vstupu funkcí analogRead i kód do Arduino IDE – čím víc na čidlo posvítíte, tím víc LED se rozsvítí. Skvělý základ pro světlocitlivé detektory.

🧩Co budeš potřebovat
Arduino USB kabel Fotorezistor Rezistor 10 kΩ 8× LED 8× rezistor 220 Ω Breadboard Propojovací vodiče
🔌Zapojení
Schéma zapojení Arduino – fotorezistor na pinu A0 a 8 LED na pinech 5 až 12

Popisek obrázku: osm LED v řadě, každá přes vlastní rezistor 220 Ω do GND, anody na pinech 5 aķ 12. Fotorezistor je zapojený jako dělič napětí s rezistorem 10 kΩ a jeho střed vede na analogový vstup A0.

🔗Připojení pinů
KomponentaArduino
LED 1 – 8 (anody, každá přes 220 Ω)piny 5 – 12
LED (katody)GND
Fotorezistor (1. nožička)5V
Fotorezistor (2. nožička) + rezistor 10 kΩA0
Rezistor 10 kΩ (druhý konec)GND
💡Jak to funguje

Fotorezistor je součástka, jejíž odpor závisí na světle – čím víc na něj svítí, tím nižší má odpor. Zapojený jako dělič napětí s rezistorem 10 kΩ posílá na vstup A0 napětí, které Arduino přečte funkcí analogRead jako číslo 0 – 1023. Tuto hodnotu funkce map přepočítá na počet LED, které mají svítit. Při hodně světle se rozsvítí celá řada, ve tmě zhasne všechno.

Postup
  1. Sestavte obvod podle schématu a tabulky výše – osm LED s rezistory na piny 5 aķ 12 a fotorezistor s děličem na A0.
  2. Zkopírujte kód do Arduino IDE, zkompilujte ho a nahrajte do Arduina.
  3. Posviťte na fotorezistor a sledujte, jak přibývá a ubývá svítících LED.
</>Kód
lekce11_fotorezistor.ino
// Fotorezistor
// Když na fotorezistor svítí světlo určité intenzity, uvidíte určitý počet svítících LED.
// Když intenzitu zvětšíte, rozsvítí se víc LED. Když ho dáte do tmy, žádná LED svítit nebude.
// Email: podpora@laskakit.cz · Web: laskakit.cz

const int NbrLEDs = 8;                       // počet LEDek
const int ledPins[] = { 5, 6, 7, 8, 9, 10, 11, 12 };  // pole pinů s LED
const int photocellPin = A0;             // pin fotorezistoru
int sensorValue = 0;                       // přečtená hodnota z čidla
int ledLevel = 0;                         // hodnota čidla převedená na počet LED

void setup() {
  for (int led = 0; led < NbrLEDs; led++) {
    pinMode(ledPins[led], OUTPUT);       // nastavit všechny LED piny jako výstup
  }
}

void loop() {
  sensorValue = analogRead(photocellPin);          // přečíst hodnotu z pinu A0
  ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs);  // převést na počet LED
  for (int led = 0; led < NbrLEDs; led++) {
    if (led < ledLevel) {                  // pokud je číslo LED menší než ledLevel
      digitalWrite(ledPins[led], HIGH);   // zapnout tuto LEDku
    } else {
      digitalWrite(ledPins[led], LOW);    // jinak ji vypnout
    }
  }
}
Výsledek
💡
Po nahrání posviťte na fotorezistor – rozsvítí se několik LED. Čím víc světla, tím víc jich naskočí, až se při plném osvětlení rozsvítí celá řada. Když fotorezistor zakryjete nebo dáte do tmy, všechny LED zhasnou. Místo fotorezistoru můžete zkusit i mikrofon a sledovat, jak LED reagují na hlasitost zvuku.
Časté chyby
?Kontrolní otázka

QJak se mění odpor fotorezistoru?