I projekt 003 såg vi hur man läser in digitala händelser utifrån, dvs något som är aktivt eller inte. I det här projektet ska vi lära oss hur man läser in analoga värden, dvs ett värde som kan vara vad som helst, inte bara ett eller noll, t.ex. vattennivå, ljusstyrka eller avstånd. För att börja enkelt kommer vi att göra en dimmer som läser av positionen av ett vridmotstånd och sätter sedan ljusstyrkan på en lysdiod till motsvarande värde.

Koppling

Kopplingen vi behöver är lik den från projekt 001, men har även ett vridmotstånd inkopplat till en av de analoga ingångarna. Vridmotståndets värde är inte särskilt viktigt i det här fallet, men bör vara någonstans mellan 1KΩ och 100 KΩ.

Arduino-projekt 004 – Dimmer

Beskrivning

Koden är ganska enkel – vi läser in spänningen på den analog ingången A0 med analogRead() som ett heltal mellan 0 och 1023 och detta använder vi sedan för att sätta ljusstyrkan på lysdioden. Eftersom Arduinos utgångar arbetar med värden mellan 0 och 255 så använder vi oss av map()-funktionen för att skala om värdet. Till skillnad från projekt 003 så aktiverar vi inte pull-up-motståndet på ingången. Vridmotståndet är kopplad till både plus och minus vilket innebär att dess utgång och därmed Arduinons ingång kommer alltid att ha en bestämd spänning och kommer inte att fånga upp störningar. Notera också att det är enbart de dedikerade analoga ingångarna A0-A5 som kan mäta spänning. Alla andra ingångar är digitala och kan därför bara se om spänningen är hög eller låg, dvs logisk etta eller nolla.

Koden

// Reservera minne för variabler att lagra data i
int varde_in;
int varde_ut;

void setup() {
  // Ställ om pinne 2 till till att vara en utgång.
  pinMode(2, OUTPUT);
  // Ställ om pinne A0 till att vara en ingång.
  pinMode(A0, INPUT);
}


void loop() {
  // Läs av vridmotståndets position. Detta ger ett värde mellan 0 och 1023.
  varde_in = analogRead(A0);
  // Skala om värdet så att det är mellan 0 och 255.
  varde_ut = map(varde_in, 0, 1023, 0, 255);
  // Sätt lysdiodens ljusstyrka.
  analogWrite(2, varde_ut);
}

Pin It on Pinterest

Share This