I den här lektionen låter vi Arduino ställa frågor till sig själv.
| Så Arduino blir en sorts filosof! :————-:|:—————————————-:
| Motståndet till jord kallas ett ‘Pull Down’-motstånd :————-:|:—————————————-:
\pagebreak
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’ |
\pagebreak
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 :————-:|:—————————————-:
LEDen tänds när du trycker på knappen.
| LEDen tänds när du trycker på knappen :————-:|:—————————————-:
\pagebreak
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?”
:————-:|:—————————————-:
\pagebreak
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:
| Det används inget semikolon efter de runda parenteserna för if
.
:————-:|:—————————————-:
\pagebreak
// ...
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’
:————-:|:—————————————-:
\pagebreak
Anslut en andra grön LED. Ändra koden så att:
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’)!
:————-:|:—————————————-:
\pagebreak
Bild Lösning för 'Knapp med två LEDer'
visar hur man ansluter detta.
\pagebreak
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’
:————-:|:—————————————-:
\pagebreak
Anslut en andra knapp. Ändra koden så att
| Du kan änvanda mer än en if
sats
:————-:|:—————————————-:
| För en andra knapp behöver du ett andra motstånd på tio tusen ohm :————-:|:—————————————-: