
Programmering av ett trafiksystem: Nedräkningsdisplay

Uppgradera för mer innehåll
Sant eller falskt? Vi visar antal sekunder kvar till grönt ljus med mikrokontrollen.
En buss närmar sig ett trafikljus och det råkar bli grönt. Bussen kör vidare utan att behöva stanna. Nu kommer den fram till nästa trafikljus och det blir också grönt. Vilken tur! Eller är det tur?
någon har planerat för att det ska bli grönt. Nej, Någon vill att bussen inte ska behöva starta och stanna. Det kallas för en “grön våg”. Nej...inte en sån grön våg. Utan en våg av grönt ljus.
Tänk om trafiksignalsystemet kunde veta vilken medelhastighet bussen måste ha för att få en grön våg, och om trafikljusen kunde visa hur många sekunder det är kvar innan det blir grönt ljus. Då kan chauffören anpassa bussens hastighet för att komma fram i rätt tid till varje ljus. Nu ska vi programmera ett sådant trafikljus som talar om när det ska bli grönt. Innan vi börjar programmera behöver vi lite olika saker. 1.
En mikrokontroller. Den styr skärmen som visar hur lång tid det är kvar tills det blir grönt. 2. Tre lysdioder, en röd, en gul och en grön. De är lamporna i trafikljuset.
3. Kablar för att koppla ihop våra komponenter. 4. Och så ett program för hur ett trafikljus fungerar. Vi använder programmet från en annan film.
Vi kopplar trafikljuset precis på samma sätt som i den filmen. Pseudokoden till programmet ser ut så här: När trafikljuset är rött ska det tala om hur lång tid det är kvar tills det blir grönt. Hur kan programmet lista ut det? Pausa filmen och tänk efter. Den här raden talar om att det röda ljuset lyser i tre sekunder, innan den här raden talar om att gult ljus ska tändas.
Sen på nästa rad är det en paus på en sekund innan det gröna ljuset ska tändas. Räknar vi ihop de pauserna när det lyser rött och gult får vi tre sekunder plus en sekund, som tillsammans blir fyra sekunder. Det tar alltså fyra sekunder innan det blir grönt igen från det att det röda ljuset börjar lysa. I koden lägger vi till: “Visa fyra på skärmen” Sen är det paus i tre sekunder och då är det bara en sekund kvar till grönt. Vi visar det genom att lägga till: “Visa ett på skärmen” före pausen på en sekund.
Vi testar vår pseudokod. skärmen hoppar från fyra sekunder till en sekund. Men... Busschauffören vet inte när det är tre och två sekunder kvar till grönt. Hur kan vi förbättra vår pseudokod så att det blir tydligare?
Vi delar upp pausen på tre sekunder till tre pauser på vardera en sekund. Före varje paus visar vi en ny siffra på skärmen. Så här: “Visa tre på skärmen” paus en sekund och “Visa två på skärmen” paus en sekund. Vi testar igen. Fyra, tre, två, ett, grönt.
Det fungerar! Nu får föraren information varje sekund om hur långt det är kvar innan det blir grönt. Busschauffören kan använda informationen till att anpassa hastigheten så att bussen kan åka genom stan utan att behöva stanna. Vi har programmerat en grön våg! Surfa på vågen!