En Arduino Uno har seks pinner som kan måle analoge verdier. Disse pinnene heter A0 til A5. I mikrokontrolleren ligger det en 10-bits analog-til-digital-konverter (ADC). Det vil si at spenningene vi måler på disse pinnene gjøres om til verdier fra 0 til 1023, hvor (i utgangspunktet) 0 tilsvarer 0V og 1023 tilsvarer 5V. Det er fullt mulig å bruke andre referansespenninger for å få mer nøyaktige målinger på et mindre område, men det vil vi ikke komme inn på her.
Veldig mange målinger vi tar, bruker prinsippet med spenningsdelere. Spenningsdelere kan lages med veldig mange typer komponenter, men den enkleste vil være et potensiometer. Her kobler vi GND og 5V til de ytterste (faste) tilkoblingene, og måler resultatet på den midterste tilkoblingen. (Det samme prinsippet brukes også på eksempelet under "Serial plotter", da med to potensiometer, ett for X-aksen og ett for Y-aksen)
Figuren under viser prinsippet. Potensiometeret (den variable motstanden) til venstre står i midtstilling, og vil tilsvare de to faste motstandene til høyre. Spenningen som kan måles på A0 og A1 blir den samme, ganske nøyaktig 2,5V, forutsatt at forsyningsspenningen er 5V. Det vil si at verdien vi måler på mikrokontrolleren blir ca. 512.
I dette eksempelet bruker vi et 10 kOhms potensiometer, som vi kobler til 5V, GND og A0. Vi gjør eksempel-programmet så enkelt som mulig. Verdier leses fra pinnen A0 med funksjonen analogRead() og skriver direkte til serieporten. På denne måten kan vi se resultatet både på Serial monitor og Serial plotter Her er et eksempel på resultat vi får på Serial Monitor: Dette er tilsvarende eksempel vist på Serial Plotter:
Oppgave 1: Se koblingen over med spenningsdeler med R1 og R2. Bytt ut R1 med en LDR og les av spenningen på samme måte som i eksempelet. Oppgave 2: Bytt om i koblingen fra oppgave 1, slik at den faste motstanden er koblet til 5V, og LDR'en er koblet til jord. Beskriv effekten av dette. Oppgave 3: Koble til en lysdiode med seriemotstand på pinne 8. Skriv om programmet slik at lysdioden tenner når det blir (ganske) mørkt. Oppgave 4: Koble til en lysdiode til, også med seriemotstand, på pinne 9. Skriv verdiene du leser fra A0 til denne lysdioden med analogWrite.Oppkobling
Når vi kobler er det veldig greit om en holder seg til røde ledninger til 5V, og svarte til jord.
Dette gjør feilsøking MYE enklere!
Program
void setup() {
pinMode(A0, INPUT); //Setter pinnen A0 til inngang
Serial.begin(9600); //Starter serieporten med hastighet på 9600 baud
}
void loop() {
Serial.println(analogRead(A0)); //Leser verdien på A0 og skriver til serieporten i samme operasjon.
delay(100); // Liten pause for at vi skal se hva som skjer
}Resultat
Oppgaver
Du kan fremdeles skrive til serieporten samtid, så det er ikke noe behov for å ta bort dette.
Husk å sette denne pinnen til utgang.
- Detaljer
- Skrevet av: Per Sigbjørn
- Kategori: Lese analoge verdier
- Treff: 5926