Tutorial 08: analogRead() och Serial Port Communications

analogRead() och Serial Port Communications

att veta om något är på eller av kan vara mycket användbart, men ofta vill du veta mer. Hur ljus är ljuset?

hur snabbt går satelliten? Dessa typer av svar är ofta analoga – de täcker ett stort antal värden, inte bara på eller av.

Arduino hanterar analoga ingångar med 6 dedikerade stift, märkta A0 till A5. Dessa stift har tillgång till en analog-till-digital-omvandlare, som tar intervallet av ingångsvärden och skapar en digital version genom att skära upp intervallet i små bitar. Allt detta hanteras bakom kulisserna – allt du behöver göra är att använda några mycket enkla funktioner och du får vad du behöver.

du behöver

  1. Potentiometer (något motståndsområde kommer att fungera)
  2. Bygeltrådar – minst 3
  3. cykeldäck

steg-för-steg-instruktioner

  1. placera potentiometern in i din brödbräda.
  2. kör en bygeltråd från 5-volts stiftet på Arduino till någon av de yttre stiften på din potentiometer.
  3. kör en annan bygeltråd från en av jordstiften på din Arduino (märkt GND) till den andra ytterstiftet på potentiometern.
  4. kör den slutliga bygelkabeln från Stift A0 på din Arduino till potentiometerns mittstift.
  5. Anslut Arduino till din dator.
  6. öppna Arduino IDE.
  7. öppna skissen för det här avsnittet.
  8. klicka på knappen Verifiera längst upp till vänster på skärmen. Det blir orange och sedan tillbaka till blått när det är klart.
  9. klicka på knappen Ladda upp (bredvid knappen Verifiera). Det blir orange och sedan tillbaka till blått när det är klart.
  10. på menyraden, gå till Verktyg > Serial Monitor – detta öppnar Serial Monitor – fönstret-du bör se siffror rulla ner den här skärmen.
  11. justera nu potentiometerns knopp och titta på seriella bildskärmsfönstret. Siffrorna bör justeras mellan 0 och 1023.

använda Arduino analogläs och kartfunktion med en potentiometer vid stift A0

denna bild sammansatt med Fritzing.

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}

diskutera skissen

denna skiss börjar med en flerradig kommentar som beskriver skissen och kretsen. Du kommer förmodligen att märka att det första kodblocket är funktionen setup () – vi deklarerar inte eller initierar några variabler i början av denna skiss – istället kommer vi att göra detta inuti loop () – funktionen, som i det sista exemplet. Inuti de lockiga hängslen i setup () besöker vi Serial library och använder funktionen Serial.börja().

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

om du kommer ihåg från den senaste lektionen, serie.begin () tar överföringshastigheten som ett argument (detta kommer nästan alltid att vara 9600). Med den här funktionen kan du ställa in en kommunikationskanal mellan datorn och Arduino. Som ni kanske vet vid det här laget, setup() körs bara en gång, och sedan går vi vidare till nästa block av kod.

men vänta! Behöver vi inte ställa in läget för pin-koden vi ska använda? Bra poäng!

vad Arduino gör, som standard, ställs in alla stift på brädet som ingångar om du inte säger något annat. Så i många fall behöver du inte uttryckligen ange en pin-kod som en ingång med funktionen pinMode (). Med det sagt-jag gör det till en vana att göra det ändå – för det gör saker klart för mig – och det är värt det i rymden och ansträngningen.

så jag vågar dig, Ställ in pin-läget med hjälp av pinMode(A0, INPUT)– funktionen inuti de lockiga fästena i setup () – du kommer inte ångra det.

när vi går vidare till loop () – funktionen börjar vi med en variabel deklaration och initialisering.

int sensorValue = analogRead(A0);

vi förklarar en variabel som heter sensorValue och vi initierar den till utgången från en ny funktion. Denna nya funktion är den glamorösa analogRead (). Så ta en vild gissning vad den här nya funktionen analogRead () gör. Den läser värdet på den analoga stiftet som du har valt – i det här fallet är det den analoga stiftet A0, där vi har mittstiftet på potentiometern ansluten. Spänningen vid stift A0 kommer att mappas till ett tal mellan 0 och 1023, och detta värde kommer att tilldelas variabeln sensorValue.

om du kommer ihåg ovanifrån kommer den faktiska spänningen vid stift A0 att vara mellan 0 och 5 volt, beroende på var din potentiometer justeras – detta värde mappas till intervallet 0 – 1023 med hjälp av analog-till-digital-omvandlaren. Så vi har en variabel som har registrerat värdet på vår potentiometer – vad händer nu? Tja, låt oss titta på värdet. För att göra det måste vi skriva ut det från Arduino till vår dator-och du gissade det, vi kommer att använda Serial library-funktionen println () för att göra just det…

Serial.println(sensorValue);

inga stora överraskningar här-vi skickar som argument sensorValue-variabeln till funktionen Serial.println () och vårt seriella bildskärmsfönster visar de resulterande värdena.

för att avsluta skissen åberopar vi funktionen delay() för en millisekund för att se till att vår nästa läsning är stabil och vi börjar på toppen av slingan() igen. Vi spelar in ett nytt värde med analogRead (), sparar det i variabeln sensorValue och skriver sedan ut det till datorn.

allt detta är bra och bra, kanske du tänker, men vad har en potentiometer att göra med sensorer? En potentiometer känner ingenting! Du har rätt – men intressant nog fungerar många sensorer genom att tillämpa samma princip som en potentiometer gör – justeringsmotstånd. Ta ett foto-resister till exempel – det kan användas för att känna av ljus – eftersom motståndet ändras baserat på ljusets ljusstyrka som det utsätts för-denna förändring i motståndet kommer att justera mängden spänning som en stift på mottagaränden kommer att få. Så nu är bollen i din domstol-vad kan du använda analogRead () för?

prova på egen hand

  • ändra den analoga stiftet till A2. Gör justeringar i koden och kretsen.
  • prova en annan potentiometer i kretsen, påverkar det värdena som visas?

Vidare läsning

  • analogRead()
  • analoga ingångsstift
  • potentiometer handledning-det här är bra

Lämna ett svar

Din e-postadress kommer inte publiceras.