I den här lektionen kommer vi att lära oss hur man använder en variabel.
| Lektionen kallas ‘knappflipp’ eftersom du programmerar med en så kallad flip-flop :————-:|:—————————————-:
\pagebreak
Vi börjar med denna krets:
| Hej, jag känner igen den här kretsen! :————-:|:—————————————-:
\pagebreak
Och vi använder den här koden:
const int led_stift = 13;
const int knapp_stift = 2;
void setup()
{
pinMode(led_stift, OUTPUT);
pinMode(knapp_stift, INPUT);
}
void loop()
{
if (digitalRead(knapp_stift) == HIGH)
{
digitalWrite(led_stift, HIGH);
}
else
{
digitalWrite(led_stift, LOW);
}
}
| Hej, jag känner igen den här koden! :————-:|:—————————————-:
\pagebreak
Överst i koden, ovanför setup
, lägg till:
boolean ar_pa = false;
I början av loop
, använd ett if
för att se om knappen är
nedtryckt. Om så är fallet, ställ in ar_pa
till true
:
if (/* knappen är nedtryckt */)
{
ar_pa = true;
}
Efter det första if
i loop
, använd ett andra if
för att se om ar_pa
är lika med true
. Om ja, slå på LEDen. Om inte, stäng av LEDen.
if (ar_pa == true)
{
// slå på LEDen
}
else
{
// stäng av LEDen
}
Vad ser du?
\pagebreak
// ...
boolean ar_pa = false;
// ...
void loop()
{
if (digitalRead(knapp_stift) == HIGH)
{
ar_pa = true;
}
if (ar_pa == true)
{
digitalWrite(led_stift, HIGH);
}
else
{
digitalWrite(led_stift, LOW);
}
}
När du trycker på knappen lyser LEDen för alltid.
\pagebreak
Vi ska nu programmera att:
Justera if
som kontrollerar om knappen trycks ned:
if (digitalRead(knapp_stift) == HIGH)
{
if (ar_pa == true)
{
ar_pa = false;
}
else
{
ar_pa = true;
}
}
Ladda upp koden. Vad ser du? Om du ser något konstigt så stämmer det!
| Vad ser du?| | Om du ser något konstigt så stämmer det! :————-:|:—————-:|:————-:|:—————————————-:
\pagebreak
// ...
void loop()
{
if (digitalRead(knapp_stift) == HIGH)
{
if (ar_pa == true)
{
ar_pa = false;
}
else
{
ar_pa = true;
}
}
// ...
}
| När du trycker på knappen dimrar LEDen. När du släpper knappen kommer LEDen antingen att vara tänd eller släckt för alltid :————-:|:—————————————-:
| Detta beror på att Arduino snabbt och ofta tänder och släcker ljuset :————-:|:—————————————-:
\pagebreak
Låt oss finjustera knappen: När knappen trycks ned, låt Arduino vänta 200 millisekunder innan den kör igång loopen igen.
\pagebreak
När knappen trycks ned, lägg till en delay(200);
-regel inuti if
.
Detta kan göras före eller efter if
-satserna med ar_pa
.
// ...
void loop()
{
if (digitalRead(knapp_stift) == HIGH)
{
// ... [if (ar_pa == true) ...]
delay(200);
// ... [if (ar_pa == true) ...]
}
// ...
}
\pagebreak
Vi kommer att ansluta en andra LED. Du kan byta LED genom att trycka på knappen mellan LEDarna.
// led_stift är bortkopplat
const int led_stift_rod = /* stift numret */;
const int led_stift_gron = /* stift numret */;
// ... [knapp_stift ändras inte]
// ar_pa är bortkopplat
int vilken_led_pa = 1;
setup
.loop
, ändra funktionen på knappen:if (/* knappen är nedtryckt */)
{
vilken_led_pa = vilken_led_pa + 1;
if (vilken_led_pa == 3)
{
vilken_led_pa = 1;
}
// ... [vänta 200 millisekunder]
}
loop
, reagerar nu på ‘vilken_led_pa’:if (vilken_led_pa == 1)
{
// Tänder röda LEDen, släcker gröna LEDen
}
if (vilken_led_pa == 2)
{
// Släcker röda LEDen, tänder gröna LEDen,
}
\pagebreak
\pagebreak
const int led_stift_rod = 13;
const int led_stift_gron = 12;
const int knapp_stift = 2;
int vilken_led_pa = 1;
void setup()
{
pinMode(led_stift_rod, OUTPUT);
pinMode(led_stift_gron, OUTPUT);
pinMode(knapp_stift, INPUT);
}
void loop()
{
if (/* knappen är nedtryckt */)
{
vilken_led_pa = vilken_led_pa + 1;
if (vilken_led_pa == 3)
{
vilken_led_pa = 1;
}
// ... [vänta 200 millisecond]
}
if (vilken_led_pa == 1)
{
digitalWrite(led_stift_rod, HIGH);
digitalWrite(led_stift_gron, LOW);
}
if (vilken_led_pa == 2)
{
digitalWrite(led_stift_rod, LOW);
digitalWrite(led_stift_gron, HIGH);
}
}
Vi kommer att ansluta en tredje LED. Du kan byta genom att trycka på knappen från första, till andra, till tredje LED.