logica - Alberdingk-Thijm-College/4-vwo-arduino-2018-2019-muffin-time GitHub Wiki

De logica achter het stoplichtensysteem:

We gaan het in deze pagina hebben over:

  • Algemene informatie
  • Indeling stoplichten
  • Indeling van stoplichtenvolgorde
  • Werking van het voetgangerssysteem
  • Werking van het buslijnsysteem
  • Pin-outs van de Arduino

Algemene informatie

In dit project zullen arrays gebruikt worden. Bij aanvang was er een idee dat er ook objecten gebruikt kunnen worden om zo de stoplichten in te delen. Objecten waren geen keuzes, omdat je dan een apart bestand zou moeten maken om de objecten te definiëren. Een array is een lijst waarin data staat. Daarin kun je getallen en zinnen opslaan. Je kunt makkelijk de data terug uit de array halen, maar dat is makkelijker bij een object.

Indeling stoplichten

De indeling van de stoplichten zal opgeslagen worden in een array. Dit is makkelijk, omdat we zo heel erg snel en overzichtelijk kunnen zien welke pinIn en pinOut we moeten gebruiken per stoplicht.

Indeling van stoplichtenvolgorde

De volgorde van welk stoplicht aangaat wordt ook in een array opgeslagen. Op plek 0 van de array zal het eerstvolgende stoplicht staan dat aan de beurt is. Op plek 1 het stoplicht daarna, enzovoort.

Werking van het voetgangerssysteem

De voetgangersopdracht gebruikt één knop. Elke keer dat er van stoplicht verandert wordt, checkt het systeem of de voetgangersknop ingedrukt is. Het systeem zet dan voetgangermodus aan. Wanneer voetgangermodus niet aan staat, zullen de stopplichten elkaar afwisselen. Wanneer voetgangermodus geactiveerd is, dan zullen alle stoplichten op rood staan, behalve het voetgangerstoplicht, wat op groen staat. Dit betekent dat alle voetgangers in één keer over kunnen steken.

voetgangerssysteem

Werking van het buslijnsysteem

Net als bij de voetgangersopdracht, wordt hier maar één knop gebruikt. Bij meneer vd Weiden werd gespecifeerd dat er twee knoppen bestaan moeten. Dit is bij ons niet het geval, omdat dit niet tegen ons gezegd is en niet in de opdracht staat. Elke keer dat er een stoplicht verandert wordt, checkt het systeem of de buslijnknop is ingedrukt. Het zal alle stoplichten op rood zetten, behalve het stoplicht dat als volgende aan de beurt is. Stel, stoplicht 3 is als volgende aan de beurt, en je moet via stoplicht 3 naar je eindbestemming komen als bus, dan houd je na stoplicht 2 de knop ingedrukt. Wanneer de knop ingedrukt wordt, zal de buslijnmodus aangezet worden. Wanneer de buslijnmodus uit staat, dan zullen alle stoplichten normaal functioneren zoals er van ze verwacht wordt. Wanneer de buslijnmodus aan is, dan zullen alle stoplichten rood kleuren, behalve één. Ook zal het buslijnstoplicht op groen gaan.

buslijnsysteem

Pin-outs van de Arduino

Pinouts zijn de nummers waar kabels aangesloten zijn op de Arduino. Aan het begin van onze code worden variabelen aangemaakt voor de pinouts. Op deze manier kun je de variabelen makkelijk wijzigen, en hoef je niet door de hele code te zoeken.

 int stoplicht[4][2] = {
    {3, 2},   //Stoplicht 1
    {5, 4},   //Stoplicht 2
    {7, 6},   //Stoplicht 3
    {9, 8}};  //Stoplicht 4

De pinouts staan ineen array in een array, ook wel een matrix genoemd. Elk getal aan de linkerkant(bijv. stoplicht[0][0]) is een rood stoplicht. Elk stoplicht aan de rechterkant(bijv. stoplicht[3][1]) is groen.

⚠️ **GitHub.com Fallback** ⚠️