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
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
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
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
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 č. 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
- Arduino Pinout
- Arduino ťahák
- Arduino kompletný datasheet
- 10 spôsobov ako zničiť arduino
- ponuka biometrických senzorov
- Arduino IDE na stiahnutie
- Debouncing
- Analógový zápis analogWrite