
Programmering av ett trafiksystem: Ändring av ljussignalen

Uppgradera för mer innehåll
Sant eller falskt? Gult ljus betyder kör.
Det här är ett trafikljus. Det styr trafiken i en vägkorsning. Rött för stopp, grönt för kör och gult ljus för att tala om att nu håller trafikljuset på att slå om från antingen rött till grönt eller tvärtom. Nu ska vi göra vårt eget trafikljus. För det behöver vi lite material: En mikrokontroller, som vi kan programmera för att styra trafikljuset.
Lysdioder, som lyser rött, grönt och gult. Några kablar, för att koppla ihop alla delar. När vi har alla komponenterna kan vi sätta igång. Först tar vi en röd lysdiod. Så här ser den ut.
Den har två ben, ett lite längre och ett kortare. Böj försiktigt isär dem lite, så här, och koppla det långa benet till en av pluspolerna på mikrokontrollern. Vi väljer anslutning, eller stift, noll för röd lysdiod. Koppla sen den gula lysdioden till stift ett. Och den gröna lysdioden till stift två.
Koppla sen en kabel från varje lysdiods korta ben till minuspolen. Än så länge lyser ingen av dioderna. Det beror på att kretsarna just nu är brutna. Nu ska vi programmera mikrokontrollern så att vi kan styra när den ska sluta och bryta kretsen. Ett trafikljus tänder och släcker sina lampor i en viss ordning: rött, gult, grönt, gult... och så vidare.
Nu ska vi formulera tydliga instruktioner för hur lamporna ska lysa. Instruktionerna, eller algoritmen är: Tänd rött, tänd gult, tänd grönt, tänd... Oj, nu lyser alla lamporna. Vad har blivit fel? Vi måste tydligen förbättra algoritmen lite grann.
Pausa filmen och fundera på vad som saknas i instruktionerna. Vi gav inga instruktioner när en lampa ska släckas. Så till slut lyser alla tre lamporna hela tiden. Vi justerar algoritmen: Tänd rött, släck rött och tänd gult, släck gult och tänd grönt, släck grönt och tänd gult, släck gult och gör om. Vi testar vår algoritm.
Ja! Nu lyser inte alla lampor samtidigt. Men nu ändras trafikljusets färg väldigt snabbt. Ingen buss hinner köra, innan det växlar om till rött igen. Pausa filmen och fundera på hur algoritmen kan förbättras.
Vi har ju inte talat om hur länge varje färg ska lysa. Ny variant av algoritmen med pauser mellan färgväxlingarna. Lägg till: tre sekunders paus här, så att de som vill korsa gatan hinner över. en sekund här, medan det är gult, så att alla är beredda. tre sekunder här, så att bussen hinner köra genom korsningen.
och en sekund här. Testa igen. Ja, nu funkar det riktigt bra. Pseudokoden är nästan klar. Vi kan använda de här instruktionerna – vår algoritm – som grund när vi ska programmera.
Men vänta nu, ska pseudokoden bara ta slut här? Efter grönt och gult ljus ska vi väl tända rött igen? Nej, det behöver vi inte. Vi har ju skrivit ‘Gör om’. Det är en loop.
En loop i ett program gör att en del av programmet upprepas så länge något villkor är sant. Och vi vill att trafikljuset ska fungera hela tiden, att loopen alltid ska köras. Så vi sätter ett villkor som alltid är sant. Ta ‘ett lika med ett’. Så länge det är sant körs vår loop.
För att visa vilka rader som utförs i loopen, drar vi in de raderna, så här: Sådär, nu har vi gjort pseudokoden, nu är det dags för dig att programmera trafikljuset.