Skip to content

Lektion 3: Knapp if ... else

I den här lektionen låter vi Arduino ställa frågor till sig själv.

Smiley med solglasögon Så Arduino blir en sorts filosof!

3.1. Knapp if ... else: Anslut

Strömkretsen

Smiley med solglasögon Motståndet till jord kallas ett 'Pull Down'-motstånd

3.2. Knapp if ... else: Kod

Här är koden för att få LEDen att tändas, när knappen trycks in:

const int led_stift = 13;
const int knapp_stift = 2;

void setup()
{
  pinMode(led_stift, OUTPUT);
  pinMode(knapp_stift, INPUT);
}

void loop()
{
  digitalWrite(led_stift, digitalRead(knapp_stift));
}
Dator digitalRead(knapp_stift)
Smiley 'Ge mig HIGH om knapp_stift har spänning. Annars ge LOW'
Dator digitalWrite(led_stift, digitalRead(knapp_stift))
Smiley 'Ger spänning till led_stift om knapp_stift har spänning'

3.3. Knapp if ... else: Fråga

När du trycker på knappen, släcks eller tänds LEDen?

Smiley med fluga 'Pull Down'-motståndet ser till att stift 2 är anslutet till GND när knappen inte trycks in

3.4. Knapp if ... else: Svara

LEDen tänds när du trycker på knappen.

Smiley med solglasögon LEDen tänds när du trycker på knappen

3.5. Knapp if ... else: if

Med en if-sats kan du få Arduino att göra något, t.ex. så här:

if (digitalRead(knapp_stift) == HIGH)
{
  digitalWrite(led_stift, HIGH);
}
else
{
  digitalWrite(led_stift, LOW);
}

Denna kod kontrollerar om det finns spänning på knapp_stift. Om ja, ge Arduino spänning på led_stift. Annars (else) stänger Arduino av spänningen på led_stift.

Dator if (digitalRead(knapp_stift) == HIGH) {}
Smiley 'Kära dator, om det finns spänning på knapp_stift, gör det inom parentes'
Smiley med solglasögon = kan tolkas som "blir". "==" kan tolkas som "är det lika med?"

3.6. Knapp if ... else: Uppgift 1

Detta är exempelkoden, som inte är helt färdig:

void setup()
{
  pinMode(4, INPUT );
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
}

void loop()
{

  if (digitalRead(4) == HIGH)
  {
    digitalWrite(5, HIGH);
  }
  else
  {
    digitalWrite(6, LOW);
  }
}

Ändra koden så att:

  • När du trycker på knappen tänds lampan
  • om du inte trycker på knappen förblir lampan släckt
  • använd variabler för att namnge stiften
Smiley med fluga Det används inget semikolon efter de runda parenteserna för if.

3.7. Knapp if ... else: Lösning 1

// ...

void setup()
{
  // ...
}

void loop()
{
  if (digitalRead(knapp_stift) == HIGH)
  {
    digitalWrite(led_stift, HIGH);
  }
  else
  {
    digitalWrite(led_stift, LOW);
  }
}
Smiley med solglasögon // ... betyder 'koden du redan har där'

3.8. Knapp if ... else: Uppgift 2

Anslut en andra grön LED. Ändra koden så att:

  • när du trycker på knappen tänds den första LEDen och den andra LEDen släcks
  • om du inte trycker på knappen slocknar den första LEDen och den andra LEDen tänds
  • Namnge variabeln för stiftet på den röda LEDen led_stift_rod, för grön LED led_stift_gron
Smiley med solglasögon Du kan skriva flera rader inom måsvingarna i en if sats. Precis som mellan måsvingarna i setup och loop!
Smiley med fluga Glöm inte else ('annars')!

3.9. Knapp if ... else: Lösning 2

Bild Lösning för 'Knapp med två LEDer' visar hur man ansluter detta.

Lösning för 'Knapp med två LEDer'

Det här är koden:

const int led_stift_rod = 13;
const int led_stift_gron = 12;
// ...


void setup()
{
  pinMode(led_stift_rod, OUTPUT);
  pinMode(led_stift_gron, OUTPUT);
  // ...
}

void loop()
{
  if (/* ... */)
  {
    digitalWrite(led_stift_gron, LOW);
    digitalWrite(led_stift_rod, HIGH);
  }
  else
  {
    digitalWrite(led_stift_gron, HIGH);
    digitalWrite(led_stift_rod, LOW);
  }
  delay(10);
}
Smiley med fluga /* ... */ betyder också 'koden du redan har där'

3.10. Knapp if ... else: slutuppgift

Avsluta uppdrag

Anslut en andra knapp. Ändra koden så att

  • om du trycker på den första knappen tänds den första LEDen
  • om du släpper första knappen ska första LEDen slockna
  • om du trycker på den andra knappen slocknar den andra LEDen
  • om du inte trycker på den andra knappen tänds den andra LEDen
Smiley med solglasögon Du kan änvanda mer än en if sats
Smiley med fluga För en andra knapp behöver du ett andra motstånd på tio tusen ohm