Monitorování stavu přepínače (Digital Read Serial) - základy Arduina

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





Tato základní část Arduina pojednává o způsobu implementace kódu, jehož prostřednictvím lze v Arduinu číst nebo monitorovat stav ON nebo OFF externího tlačítka.

Sériové digitální čtení

Zde se na příkladu učíme, jak sledovat stav přepínače pomocí sériové komunikace přes Arduino a počítač přes USB.



Kromě vaší desky Arduino byste potřebovali následující základní položky:

Hardware

Okamžitý spínač, tlačítko nebo spínač ON



10k, 1/4 wattový odporový odpor

prkénko na prkénko
připojovací nebo propojovací vodiče.

Obvodový provoz

Operaci lze provést pomocí následujících kroků:

Vezměte 3 propojovací vodiče a připojte je pomocí desky Arduino. Dva z vodičů, červený a černý, vedou ke dvěma dlouhým svislým řadám na straně prkénka, které se stávají přívodními kabely desky, aby bylo možné přenášet požadováno 5V DC na desce.

Třetí vodič se používá pro připojení digitálního kolíku 2 k jednomu z vodičů spínače push-to-ON.

Tento konkrétní vodič tlačítka se také spojuje se stahovacím 10k rezistorem na zápornou napájecí lištu nebo na zem. Druhý volný vodič spínače je spojen s kladným napětím 5 voltů.

S výše uvedenými připojeními přepínač přepíná nebo provádí dvojí akci v obvodu, když je tlačen.

Normálně, když je spínač v odpojené poloze, jeho dva vodiče zůstávají izolované, takže kolík, který je spojen se zemí pomocí stahovacího odporu, vytváří úroveň LOW nebo logickou 0.

V lisované situaci spínač provede okamžité přemostění svých dvou vodičů, takže jeho vodiče jsou vystaveny + 5 voltům, čímž se na nich vytvoří VYSOKÁ nebo logická úroveň 1.

Izolace digitálních vstupů a výstupů od zbytku věcí by mohla LED donutit, aby se rozpadla a způsobila nepravidelné blikání. To je způsobeno tím, že vstup není k ničemu vykreslen nebo udržován v „visící“ poloze - to znamená, že není určen žádné definitivní logice, ani vysoké, ani nízké (+ 5 V nebo 0 V), proto používáme stahovací odpor se spínačem.

Schematické

Porozumění Kodexu

V následujícím níže uvedeném programu začínáme se sériovou komunikací v rámci funkce nastavení rychlostí 9600 bitů dat za sekundu, která je zahájena mezi deskou Arduino a připojeným počítačem: Serial.begin (9600)

V dalším kroku spustíme digitální pin 2, pin, který by byl zodpovědný za výstup s tlačítkem jako vstupem: pinMode (2, INPUT) Tím je naše 'nastavení' dokončeno, nyní se plavíme do hlavní smyčky našeho kódu .

Tady po stisknutí tlačítka je povoleno projít naším obvodem 5 voltů, zatímco vstupní pin je spojen se zemí přes 10kHz odpor, když je v nestlačeném stavu.

Výše uvedené je to, čemu říkáme digitální vstup, který odkazuje na stav, kdy přepínač může být pouze v určitém stavu buď zapnutý (přijatý Arduinem jako '1', nebo LOGIC HIGH) nebo vypnutý (vizualizovaný) Arduino jako „0“ nebo LOGIC LOW), přičemž mezi nimi nejsou žádné další nedefinované hodnoty.

Základní akcí, kterou musíme provést v hlavní smyčce programu, je použití proměnné pro udržení informací na místě, které byly odeslány pomocí tlačítka.

Jak již bylo uvedeno výše, přičemž signály jsou ve formě „1“ nebo „0“, využíváme zde datový typ int. Tuto proměnnou můžeme pojmenovat jako sensorValue a opravit ji tak, aby odpovídala všemu, co se čte na digitálním pinu 2. Všechny tyto hodnoty jsou dosažitelné prostřednictvím jednoho řádku kódu:

int sensorValue = digitalRead (2) Jakmile Arduino načte vstup, vytiskne jej zpět do počítače ve formě desítkové hodnoty.

To lze implementovat pomocí příkazu Serial.println () v závěrečném řádku kódu: Serial.println (sensorValue)

Poté, kdykoli je sériový monitor spuštěn v doméně Arduino, byli bychom svědky řetězce „0“ během otevřené polohy tlačítka a řetězců „1“ v případech, kdy je tlačítko drženo v uzavřeném stavu.

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600)
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT)
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton)
// print out the state of the button:
Serial.println(buttonState)
delay(1) // delay in between reads for stability
}




Předchozí: Upravený regulátor průtoku vody s obvodem časovače Další: Převod analogového na digitální (analogové čtení sériově) - základy Arduina