Tutorial 08: analogRead () og Serial Port Communications

analogRead () og Serial Port Communications

at vide, om noget er tændt eller slukket, kan være yderst nyttigt, men ofte vil du gerne vide mere. Hvor stærkt er lyset?

hvor hurtigt bevæger satellitten sig? Disse typer svar er ofte analoge – de dækker en lang række værdier, ikke kun til eller fra.

Arduino håndterer analoge indgange med 6 dedikerede stifter, mærket A0 til A5. Disse stifter har adgang til en analog-til-digital konverter, der tager rækkevidden af inputværdier og skaber en digital version ved at skære området op i små stykker. Alt dette håndteres bag kulisserne-alt hvad du skal gøre er at bruge nogle meget enkle funktioner, og du får det, du har brug for.

du skal bruge

  1. Potentiometer (ethvert modstandsområde fungerer)
  2. jumperledninger – mindst 3
  3. cykeldæk

trinvise instruktioner

  1. Placer potentiometeret ind i dit brødbræt.
  2. Kør en jumper ledning fra 5-Volt pin af Arduino til en af de udvendige stifter af dit potentiometer.
  3. Kør en anden jumpertråd fra en af jordstifterne på din Arduino (mærket GND) til den anden udvendige stift på potentiometeret.
  4. kør den endelige jumpertråd fra pin A0 på din Arduino til potentiometerets midterste pin.
  5. sæt Arduino i din computer.
  6. Åbn Arduino IDE.
  7. Åbn skitsen for dette afsnit.
  8. Klik på knappen Bekræft øverst til venstre på skærmen. Det bliver orange og derefter tilbage til blåt, når det er færdigt.
  9. Klik på knappen Upload (ved siden af knappen Bekræft). Det bliver orange og derefter tilbage til blåt, når det er færdigt.
  10. på menulinjen skal du gå til værktøjer > Serial Monitor – dette åbner vinduet Serial Monitor – du skal se numre rulle ned på denne skærm.
  11. juster nu potentiometerets knap, og se vinduet serial monitor. Tallene skal justeres mellem 0 og 1023.

brug af Arduino analogread and map-funktionen med et potentiometer ved pin A0

dette billede sammensat med Frittering.

Arduino-koden

/* 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}

Diskuter skitsen

denne skitse starter med en kommentar med flere linjer, der beskriver skitsen og kredsløbet. Du vil sandsynligvis bemærke, at den første kodeblok er setup () – funktionen – Vi erklærer eller initialiserer ikke nogen variabler i begyndelsen af denne skitse-i stedet gør vi dette inde i loop () – funktionen, som i det sidste eksempel. Inde i de krøllede seler i opsætningen () besøger vi Seriebiblioteket igen og bruger funktionen seriel.begynde().

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

hvis du husker fra den sidste lektion, seriel.begin () tager baudfrekvensen som et argument (dette vil næsten altid være 9600). Denne funktion giver dig mulighed for at opsætte en kommunikationskanal mellem computeren og Arduino. Som du måske ved nu, kører setup() kun en gang, og så går vi videre til den næste blok kode.

men vent! Skal vi ikke indstille tilstanden på den pin-kode, vi bruger? Fantastisk punkt!

hvad Arduino gør, er som standard indstillet alle stifter på tavlen som input, medmindre du fortæller det andet. Så i mange tilfælde behøver du ikke eksplicit at indstille en pin som input ved hjælp af pinMode () – funktionen. Når det er sagt-Jeg gør det til en vane at gøre det alligevel – fordi det gør tingene klart for mig – og det er det værd i rum og kræfter.

så jeg tør dig, Indstil pin– tilstanden ved hjælp af pinMode(A0, INPUT) – funktionen inde i de krøllede seler i opsætningen () – du vil ikke fortryde det.

når vi går videre til loop () – funktionen, starter vi med en variabel erklæring og initialisering.

int sensorValue = analogRead(A0);

Vi erklærer en variabel kaldet sensorValue, og vi initialiserer den til udgangen af en ny funktion. Denne nye funktion er den glamourøse analogRead(). Så tag et vildt gæt hvad denne nye funktion analogRead () gør. Den læser værdien ved den analoge pin, du har valgt – i dette tilfælde er det den analoge pin A0, hvor vi har den midterste pin på potentiometeret tilsluttet. Spændingen ved pin A0 kortlægges til et tal mellem 0 og 1023, og denne værdi tildeles den variable sensorværdi.

hvis du husker ovenfra, vil den faktiske spænding ved pin A0 være mellem 0 og 5 volt, afhængigt af hvor dit potentiometer er justeret – denne værdi kortlægges til området 0 – 1023 ved hjælp af analog-til-digital konverter. Så vi har en variabel, der har registreret værdien på vores potentiometer – hvad næste? Lad os se på værdien. For at gøre det skal vi udskrive det fra Arduino til vores computer – og du gættede det, vi vil bruge den serielle biblioteksfunktion println() til at gøre netop det…

Serial.println(sensorValue);

ingen store overraskelser her-vi sender som argument sensorValue-variablen til funktionsserien.println () og vores serielle skærm vindue vil vise de resulterende værdier.

for at afslutte skitsen påberåber vi os delay () – funktionen i et millisekund for at sikre, at vores næste læsning er stabil, og vi starter øverst i løkken() igen. Vi registrerer en ny værdi ved hjælp af analogRead(), gemmer den på variablen sensorValue og udskriver den derefter til computeren.

alt dette er godt og godt, tænker du måske, men hvad har et potentiometer at gøre med sensorer? Et potentiometer fornemmer ikke noget! Du har ret – men interessant nok fungerer mange sensorer ved at anvende det samme princip, som et potentiometer gør-justering af modstand. Tage et foto-resister for eksempel – det kan bruges til at fornemme lys – fordi modstanden ændringer baseret på lysstyrken af lys, at det er udsat for-denne ændring i modstand vil justere mængden af spænding, at en stift på den modtagende ende vil modtage. Så nu er bolden i din bane-hvad kan du bruge analogRead() til?

prøv på egen hånd

  • skift den analoge pin-kode til A2. Foretag justeringer i koden og kredsløbet.
  • prøv et andet potentiometer i kredsløbet, påvirker det det viste værdiområde?

yderligere læsning

  • analogRead ()
  • Analog Input Pins
  • potentiometer tutorial – det er godt

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.