Arduino programovanie – experimenty

1. LED

Potrebné pomôcky

  • Breadboard, Arduino Nano, dupont káble
  • LED (ľubovoľnej farby)
  • rezistor (ideálne v rozsahu 100Ω-400Ω)

Poznámky

  • LEDka má dlhšiu nohu na anóde (+), skosenú hranu na katóde (-) a medzeru vo vnútri medzi dvoma plochami bližšie k anóde (+).
  • Na vyskúšanie (a zamyslenie) – čo sa stane ak sa použije silnejší rezistor (10kΩ) a čo ak sa vymení poradie z Vcc-R-LED-GND na Vcc-LED-R-GND?
  • 7-segmentový displej. Vcc na prostredný pin (na ľubovoľnej strane) a GND na niektorý z ostatných pinov (okrem prostredného).
  • Bonusová úloha – zapojte si medzi rezistor a LEDku jeden potenciometer, ktorým sa bude dať ovládať intenzita.

Zapojenie


2. DigitalWrite

Potrebné pomôcky

  • Breadboard, Arduino Nano, dupont káble
  • LED (ľubovoľnej farby)
  • rezistor (ideálne v rozsahu 100Ω-400Ω)

Poznámky

  • V Arduino IDE si nastavte v Tools:
    • Board: Arduino Nano
    • Processor: ATPMega328P (old bootloader) – skúsenosť bola, že väčšine to pri iných možnostiach nechcelo ísť.
    • Port: (záleží od OS) – ak nefunguje prvá možnosť, skúste pozorovať, ktoráý port sa neobjavuje pri odpojenom zariadení
  • Vyskúšajte si tento kód najprv s pinom 13 na zabudovanej LEDke. (File -> Examples -> 01.Basics -> blink)
  • Pri digitalWrite je nutné nastaviť režim pinu na OUTPUT.
  • Použite nasledovný kód a zapojenie – v tomto prípade je výstup na pine D6. Číslo pinu si môžete v prípade potreby zmeniť.

Kód

const int pin = 6;

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

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

Zapojenie


3. AnalogWrite

Potrebné pomôcky

  • Breadboard, Arduino Nano, dupont káble
  • LED (ľubovoľnej farby)
  • rezistor (ideálne v rozsahu 100Ω-400Ω)

Poznámky

  • Zapojenie je totožné s predošlým experimentom.
  • V prípade použitia iného pinu ako D6 si skontrolujte (pinout), či príslušný pin podporuje PWM.
  • AnalogWrite nepotrebuje nastavovat pinMode.

Kód

const int pin = 6;

void setup() {
}

void loop() {

  for (int i = 0; i < 256; i+=10) { 
    analogWrite(pin, i); 
    delay(50); 
  }

  for (int i = 255; i >= 0; i-=10) {
    analogWrite(pin, i);
    delay(50);
  }
  
}

Zapojenie


4. AnalogRead

Potrebné pomôcky

  • Breadboard, Arduino Nano, dupont káble
  • LED (ľubovoľnej farby)
  • rezistor (ideálne v rozsahu 100Ω-400Ω)
  • potenciometer

Poznámky

  • LED je pripojené na pin s PWM (adresujeme fialovým číslom, viď pinout). Potenciometer je pripojený na analógový pin (v tomto prípade A3)
  • Serial.begin v setup() a Serial.println() v loop() slúžia na sériovú komunikáciu.
  • V Arduino IDE – serial monitor (CTRL+SHIFT+M) alebo v ponuke vpravo hore, resp. v Tools.
  • Bonusová úloha – skúste odpojiť stredný kábel od potenciometra. Aké hodnoty sa namerajú?

Kód

const int pin = 6;
const int analogPin = 3;
int val = 0;

void setup() {
    Serial.begin(9600);
}

void loop() {
    val = analogRead(analogPin); 
    analogWrite(pin, val /4);
    Serial.println(val);
}

Zapojenie


5. Tlačidlo

Potrebné pomôcky

  • Breadboard, Arduino Nano, dupont káble
  • tlačidlo

Poznámky

  • Sledujte zmeny hodnôt v serial monitore. Pri stlačení to dáva 0, inak rôzne hodnoty.
  • Iba pri meraní prechádza minimálny prúd (high-impedance state, akoby tam bol veľmi silný rezistor). Nie je potrebný rezistor.

Kód

const int analogPin = 3;
int val = 0;

void setup() {
    Serial.begin(9600);
}

void loop() {
    val = analogRead(analogPin);
    Serial.println(val);
}

Zapojenie


6. AnalogRead, tlačidlo s pullup rezistorom

Potrebné pomôcky

  • Breadboard, Arduino Nano, dupont káble
  • tlačidlo
  • rezistor (napr. 10kΩ)

Poznámky

  • Kód je rovnaký ako v predošlej úlohe.
  • Vo výsledku by mala byť nula pri stlačenom tlačidle a 1023 pri nestlačenom.

Zapojenie


7. DigitalRead, zabudovaný pullup rezistor

Potrebné pomôcky

  • Breadboard, Arduino Nano, dupont káble
  • tlačidlo

Poznámky

  • Zapojenie je rovnaké ako v úlohe č. 5 – teda iba jedno tlačidlo bez rezistora.
  • Zmenil sa analogRead na digitalRead (čítajú sa hodnoty 0 a 1).
  • pinMode INPUT_PULLUP nastaví input režim + zapne pullup rezistor.
  • Ak by ste namiesto INPUT_PULLUP nastavili iba INPUT, tak pri nestlačenom tlačidle môžu tie hodnoty prichádzať náhodne.

Kód

const int pin = 4;
int val = 0;

void setup() {
    pinMode(pin, INPUT_PULLUP);
    Serial.begin(9600);
}

void loop() {
    val = digitalRead(pin); 
    Serial.println(val);
}

Zapojenie