Lektion 3: Knapp if ... else
I den här lektionen låter vi Arduino ställa frågor till sig själv.
Så Arduino blir en sorts filosof!
3.1. Knapp if ... else: Anslut
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 ));
}
digitalRead(knapp_stift)
'Ge mig HIGH
om knapp_stift
har spänning. Annars ge LOW
'
digitalWrite(led_stift, digitalRead(knapp_stift))
'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?
'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.
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
.
if (digitalRead(knapp_stift) == HIGH) {}
'Kära dator, om det finns spänning på knapp_stift
, gör det inom parentes'
=
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
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 );
}
}
// ...
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
Du kan skriva flera rader inom måsvingarna i en if
sats. Precis som mellan måsvingarna i setup
och loop
!
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.
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 );
}
/* ... */
betyder också 'koden du redan har där'
3.10. Knapp if ... else: slutuppgift
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
Du kan änvanda mer än en if
sats
För en andra knapp behöver du ett andra motstånd på tio tusen ohm