Základní elektronické součástky a obvody: Kombinace vstupu a výstupu

Pátý díl série o Maker Uno ve výuce ukáže, jak by mohl vypadat jednoduchý obvod se vstupy a výstupy a jejich naprogramování.

Díky kombinaci vstupu a výstupu můžeme vytvářet projekty, které budou interaktivně reagovat na okolní prostředí.

Vraťme se k tomu, že mikrokontrolér funguje jako mozek, který posílá různé výstupy (reakce) na vstupní podněty (informace).

Můžeme přijmout informace ze vstupního zařízení a porovnat je s hodnotou, kterou chceme. Když se obdržená hodnota rovná té požadované, mikrokontrolér může být naprogramován k vyprodukování určitého výstupu. Toto je základ podmíněného programování. Podmíněné programování je znázorněno na diagramu níže:

Obr. 1: Diagram

Toto je kód, který reprezentuje přecházející vývojový diagram.

6 void loop() {
7   //put your main code here,
8   int x = digitalRead (2);
9   if (x == 1) {
10     digitalWrite(13, HIGH);
11  } else {
12    digitalWrite(13, LOW);
13  }
14 }

Operátory rovnosti se používají k porovnání dvou rozdílných hodnot a výsledkem je True (ANO), pokud je porovnání validní. Máme k dispozici 6 operátorů rovnosti:

Operátor rovnostiVýznamPříklad
==Rovná sex = digitalRead(5);
if (x == 1){
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}

Program přečte hodnotu proměnné x (tlačítko připojen na pinu 5). Když x = 1 (tlačítko je stisklé) tak se pošle „HIGH“ signál na pin 13 a tím se zapne dioda, když tlačítko bude nezmáčknuté tak se pošle „LOW“ signál a dioda se vypne.
!=Nerovná sex = digitalRead(5);
if (x != 1){
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}

Program přečte hodnotu proměnné x (tlačítko připojené na pinu 5). Když x není 1 (tlačítko je nezmáčknuté), tak se pošle „HIGH“ signál na pin 13 a tím se zapne dioda. Když tlačítko bude zmáčknuté, tak se pošle „LOW“ signál a dioda se vypne.
<=Větší než nebo rovnox = analogRead(A0);
if (x >= 100){
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}

Program přečte hodnotu proměnné x (potenciometr připojený na pin A0). Když bude hodnota proměnné 100 nebo více než100, tak se pošle „HIGH“ signál na pin 13, což zapne diodu. Když je hodnota menší než 100, tak bude dioda vypnutá.
>Větší než x = analogRead(A0);
if (x > 100){
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}

Program přečte hodnotu proměnné x (potenciometr připojený na pin A0). Když bude hodnota proměnné větší než 100 (101 a více), tak se pošle „HIGH“ signál na pin 13, což zapne diodu. Když je hodnota menší než 100, tak bude dioda vypnutá.
<=Menší než nebo rovnox = analogRead(A0);
if (x <= 100){
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}

Program přečte hodnotu proměnné x (potenciometr připojený na pin A0). Když bude hodnota proměnné 100 nebo méně než 100, tak se pošle „HIGH“ signál na pin 13, což zapne diodu. Když je hodnota větší než 100, tak bude dioda vypnutá.
<Menší nežx = analogRead(A0);
if (x < 100){
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}

Program přečte hodnotu proměnné x (potenciometr připojený na pin A0). Když bude hodnota proměnné menší než 100 (99 a méně), tak se pošle „HIGH“ signál na pin 13, což zapne diodu. Když je hodnota větší než 100 tak bude dioda vypnutá.

Když potřebujeme použít více limitů, tak použijeme logický operátor AND. Například: hodnota mezi 500-700 (501>699) může být zachycena pomocí následujícího kódu:

6 void loop() {
7   //put your main code here,
8   int x = analogRead (A2);
9   if (x > 500 && x < 700) {
10     digitalWrite(13, HIGH);
11  } else {
12    digitalWrite(13, LOW);
13  }
14 }

Příklad č. 1: (Funguje jen pro Maker UNO)

Následující kód „přečte“ hodnotu z tlačítka na pinu 2 (tlačítko je vestavěné v Maker UNO), zobrazí ji, a když je tlačítko zmáčknuté, tak rozsvítí diodu na pinu 13. Když zmáčknuté není, tak diodu vypne. (Pro jiné Arduino budete potřebovat připojit tlačítko na pin 2 a změnit pinMode na pinMode(2, INPUT) ).

1 void setup() {
2    //put your setup code here,
3   pinMode(2, INPUT_PULLUP);
4   pinMode(13, OUTPUT);
5   Serial.begin(9600);
6 }
7
8 void loop() {
9   //put your main code here,
10   int x = digitalRead(2);
11   Serial.println(x);
12  if (x == 1) {
13     digitalWrite(13, HIGH);
14  } else {
15    digitalWrite(13, LOW);
16  }
17 }

Příklad č. 2:

K tomuto příkladu budeme potřebovat fotorezistor připojený na pin A0.

Tento program „přečte“ hodnotu fotorezistoru připojeného na pin A0, zobrazí ji a vypracuje 2 výstupy na základě okolního světla. Když bude okolní prostředí tmavé (obdržená hodnota bude menší nebo rovno 400), tak se rozsvítí dioda. Když bude okolní prostředí prosvětlené (hodnota větší než 400), tak se dioda vypne.

1 void setup() {
2    //put your setup code here,
3   pinMode(A0, INPUT);
4   pinMode(13, OUTPUT);
5   Serial.begin(9600);
6 }
7
8 void loop() {
9   //put your main code here,
10   int x = analogRead(2);
11   Serial.println(x);
12  if (x <= 400) {
13     digitalWrite(13, HIGH);
14  } else {
15    digitalWrite(13, LOW);
16  }
17 }

Kombinace vstupního a výstupního obvodu

Zapojování vstupního a výstupního obvodu dohromady se liší od zapojování každého obvodu samostatně. Níže máte některé obrázky schémat, ve kterých se nachází vstupní i výstupní zařízení.

Obvod s fotorezistorem, bzučákem a LED diodami

Obr. 2: Zapojení obvodu

S tímto obvodem můžeme vytvořit např. jednoduchý „music box“. Maker UNO s komponenty položte do krabice a naprogramujte tak, že když krabici otevřete (zvýší se jas), tak bzučák začne hrát melodii a LED diody začnou svítit.

Obvod s tlačítkem, LED diodami a bzučákem

S tímto obvodem můžeme aktivovat bzučák pomocí tlačítka. Když se krabice otevře (uvolní se tlačítko), tak mikrokontroler začne hrát písničku.

Obr. 3: Zapojení obvodu 2

Toto byl závěrečný díl série Maker Uno ve výuce. Pokud chcete, tak nám můžete u článku zanechat komentář například o tom, jestli informace obsažené v článcích Vám pomohli nebo vysvětlili některé základy. Doufáme, že se Vám tato série líbila.

E-shop
Zdroje
Licence

E-shop

Cytron Maker UNO – Vzdělávací sada

Porozumějte elektronice s Maker UNO!

Leave a Reply