Výuka 08: analogRead() a Serial Port Komunikace

analogRead() a Serial Port Komunikace

Vědět, pokud je něco zapnout nebo vypnout, může být velmi užitečné, ale často budete chtít vědět více. Jak jasné je světlo?

jak rychle se satelit pohybuje? Tyto typy odpovědí jsou často analogové-pokrývají velký rozsah hodnot, nejen zapnutí nebo vypnutí.

Arduino zpracovává analogové vstupy se 6 vyhrazenými piny, označenými A0 až A5. Tyto kolíky mají přístup k analogově-digitálnímu převodníku, který přebírá rozsah vstupních hodnot a vytváří digitální verzi rozřezáním rozsahu na malé kousky. To vše je řešeno v zákulisí-vše, co musíte udělat, je použít některé velmi jednoduché funkce a dostanete to, co potřebujete.

Budete Potřebovat

  1. Potenciometr (odpor rozsah bude fungovat)
  2. Propojovací Dráty – alespoň 3
  3. Kolo pneumatiky

Krok-za-Krokem Instrukce

  1. Místo potenciometru do prkénko na krájení.
  2. spusťte propojovací vodič z 5voltového kolíku Arduina na jeden z vnějších kolíků potenciometru.
  3. spusťte další propojovací vodič z jednoho ze uzemňovacích kolíků na vašem Arduinu (označeného GND) na druhý vnější kolík potenciometru.
  4. spusťte finální propojovací vodič z kolíku A0 na vašem Arduinu na střední kolík potenciometru.
  5. zapojte Arduino do počítače.
  6. otevřete Arduino IDE.
  7. otevřete skicu pro tuto sekci.
  8. klikněte na tlačítko Ověřit v levé horní části obrazovky. Po dokončení se změní na oranžovou a poté zpět na modrou.
  9. klikněte na tlačítko Nahrát (vedle tlačítka ověřit). Po dokončení se změní na oranžovou a poté zpět na modrou.
  10. na panelu nabídek přejděte na Nástroje > Sériový Monitor-otevře se okno Sériový Monitor – na této obrazovce byste měli vidět čísla.
  11. nyní nastavte knoflík potenciometru a sledujte okno sériového monitoru. Čísla by se měla upravit mezi 0 a 1023.

Pomocí Arduino analogread a mapa funkce s potenciometrem na pin A0

Tento obraz složený s Blbou.

kód Arduino

/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Graphical representation is available using serial plotter (Tools > Serial Plotter menu) Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain.*/// the setup routine runs once when you press reset:void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600);}// the loop routine runs over and over again forever:void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability}

diskutujte o náčrtu

tento náčrt začíná víceřádkovým komentářem popisujícím náčrt a obvod. Budete pravděpodobně všimnete, že první blok kódu je nastavení() funkce – nebudeme deklarovat ani inicializovat všechny proměnné na začátku této skici – místo toho uděláme, co bude uvnitř smyčky() funkce, stejně jako v minulém příkladu. Uvnitř složených závorek setup () znovu navštívíme sériovou knihovnu a použijeme funkci Serial.začít().

void setup() {// initialize serial communication at 9600 bits per second:Serial.begin(9600);}

pokud si vzpomenete z poslední lekce, seriál.begin () bere přenosovou rychlost jako argument (to bude téměř vždy 9600). Tato funkce umožňuje nastavit komunikační kanál mezi počítačem a Arduino. Jak už možná víte, setup() běží pouze jednou a pak přejdeme k dalšímu bloku kódu.

ale počkejte! Nemusíme nastavit režim pin, který budeme používat? Skvělý bod!

co Arduino dělá, je ve výchozím nastavení nastaveno všechny kolíky na desce jako vstupy, pokud to neřeknete jinak. V mnoha případech tedy nemusíte explicitně nastavovat pin jako vstup pomocí funkce pinMode (). Jak již bylo řečeno – dělám to zvyk dělat to tak jako tak-protože mi to objasňuje věci-a to stojí za to v prostoru a úsilí.

takže si troufám, nastavte režim pinu pomocí funkce pinMode(A0, INPUT) uvnitř složených závorek nastavení () – nebudete litovat–

přechodem na funkci loop() začneme deklarací proměnné a inicializací.

int sensorValue = analogRead(A0);

deklarujeme proměnnou zvanou sensorValue a inicializujeme ji na výstup nové funkce. Tato nová funkce je okouzlující analogRead(). Takže se divoký odhad, co tato nová funkce analogRead () dělá. Čte hodnotu na analogovém kolíku, který jste si vybrali – v tomto případě je to analogový pin A0, kde máme připojený středový kolík potenciometru. Napětí na pinu A0 bude namapováno na číslo mezi 0 a 1023 a tato hodnota bude přiřazena proměnné sensorValue.

Pokud si vzpomínáte z výše uvedeného, aktuální napětí na pinu A0 bude mezi 0 a 5 voltů, v závislosti na tom, kde vaše potenciometr je upravena – tato hodnota dostane mapovány do rozsahu 0 – 1023 s pomocí analogově-digitální převodník. Takže máme proměnnou, která zaznamenala hodnotu na našem potenciometru-co dál – Podívejme se na hodnotu. K tomu potřebujeme tisknout z Arduina do počítače – a uhodli jste, budeme používat Sériový knihovna funkce println (), aby dělat jen to…

Serial.println(sensorValue);

Žádné velké překvapení – pošleme jako argument sensorValue proměnné funkce Serial.println () a naše okno sériového monitoru zobrazí výsledné hodnoty.

a skicu dokončit, jsme vyvolat zpoždění() funkce pro jednu milisekundu, aby se ujistil, náš další čtení je stabilní a začneme v horní části smyčce() znovu. Novou hodnotu zaznamenáme pomocí analogRead (), uložíme ji do proměnné sensorValue a poté ji vytiskneme do počítače.

to vše je dobré a dobře, možná si myslíte, ale co má potenciometr společného se senzory? Potenciometr nic necítí! Máte pravdu-ale zajímavé je, že mnoho senzorů pracuje na stejném principu, jaký dělá potenciometr-nastavení odporu. Vyfotit-resister například – může být použit na světlo smysl – protože odpor se mění v závislosti na jasu světla, který je vystaven – tato změna odporu bude nastavit množství napětí, které se pin na straně příjemce obdrží. Takže teď je míč na vašem hřišti-na co můžete použít analogRead ()?

zkuste sami

  • změňte analogový pin na A2. Proveďte úpravy kódu a obvodu.
  • zkuste v obvodu jiný potenciometr, ovlivňuje to rozsah zobrazených hodnot?

Další Čtení

  • analogRead()
  • Analogové Vstupní Piny
  • potenciometr tutorial – tohle je dobré

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.