02 - Arduino - programovanie

Arduino, programovanie a senzory - PDF

Videonahrávka z cvičenia 25.2.

Zdroje

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 (+).
  • Bonusová úloha - zapojte si medzi rezistor a LEDku jeden potenciometer, ktorým sa bude dať ovládať intenzita.

Zapojenie

/~opiela/iot/images/iot2-led-direct.png

2. DigitalWrite

Potrebné pomôcky

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

Poznámky

  • Vyskúšajte si tento kód najprv s pinom 13 na zabudovanej LEDke.
  • Pri digitalWrite je nutné nastaviť režim pinu na OUTPUT.
  • Skontrolujte si zapojenie - v tomto prípade je výstup na pine D6. Ak sa to nezhoduje, môžete to zmeniť v schéme alebo v kóde.
  • 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: (u mňa na linuxe) /dev/ttyUSB0 - ak neviete, ktorá možnosť, skúste pozorovať, ktorá možnosť sa neobjavuje pri odpojenom zariadení

Kód

const int pin = 6;

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

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

Zapojenie

/~opiela/iot/images/iot2-led-pin_bb.png

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.
  • 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

/~opiela/iot/images/iot2-led-pin_bb.png

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

  • 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);  // read the input pin
  analogWrite(pin, val /4);

  Serial.println(val);
}

Zapojenie

/~opiela/iot/images/iot2-led-potentiometer_bb.png

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

/~opiela/iot/images/iot2-button_bb.png
/~opiela/iot/images/button.JPG

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

/~opiela/iot/images/iot2-button-pullup_bb.png
/~opiela/iot/images/button_pullup.JPG

7. DigitalRead, zabudovaný pullup rezistor

Potrebné pomôcky

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

Poznámky

  • Zapojenie je rovnaké ako v úlohe č. 4 - 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);
}

Odkazy

Tipy na pozretie: