heb even een frisse blik nodig om dit op te lossen.
C:\Users\rwobb\AppData\Local\arduino\sketches\7E627F0188FA596F45FA6EEBA9DC532E\sketch\traffic_light_with_different_files.ino.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `pinsTL'
C:\Users\rwobb\AppData\Local\arduino\sketches\7E627F0188FA596F45FA6EEBA9DC532E\sketch\lights.cpp.o (symbol from plugin):(.text+0x0): first defined here
C:\Users\rwobb\AppData\Local\arduino\sketches\7E627F0188FA596F45FA6EEBA9DC532E\sketch\traffic_light_with_different_files.ino.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `pinsPL'
C:\Users\rwobb\AppData\Local\arduino\sketches\7E627F0188FA596F45FA6EEBA9DC532E\sketch\lights.cpp.o (symbol from plugin):(.text+0x0): first defined here
C:\Users\rwobb\AppData\Local\arduino\sketches\7E627F0188FA596F45FA6EEBA9DC532E\sketch\traffic_light_with_different_files.ino.cpp.o (symbol from plugin): In function `setup':
(.text+0x0): multiple definition of `buttonList'
C:\Users\rwobb\AppData\Local\arduino\sketches\7E627F0188FA596F45FA6EEBA9DC532E\sketch\button.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Compilation error: exit status 1
Je hebt een .h bestand waarin je pinsTL en pinsPL definieert. Deze include je in verschillende bestanden en als een resultaat heb twee verschillende sets van variabelen en C/C++ houdt daar niet van.
#pragma once voorkomt dat niet, det heeft slechts invloed op één compilatie unit (.cpp, .ino). Het voorkomt problemen als je twee keer hetzelfde bestand include (direct of indirect).
In één van je oudere topics hebben we extern gebruikt, kijk eens of dat de oplossing kan brengen.
Ik ben bezig met een volledig herschrijven van je huidige verkeerslicht. Voor zover ik het kan zien zou dat vele malen makkelijker zijn om aan te passen.
Ik heb het (denk ik) werkend met een testprogramma, ik zal proberen morgen dat te veranderen naar het verkeerslicht.
Als dat werkt kan ik het presenteren (met beschrijving); het zal wel wat tijd in beslag nemen om de beschrijving te maken.
Het programma schakelt LED_BUILTIN; off, blink en on.
Er zijn vier knoppen (dat is mijn opstelling) maar slechts één wordt op dit moment gebruikt (pin 3)
3 states
Overgangen
Je kunt van stOff naar stBlink gaan door de knop in te drukken.
Als je de knop binnen 4 seconden loslaat ga je terug naar stOff.
Als je de knop niet loslaat gaat het programma na 4 seconden verder naar stON.
stOn wordt verlaten na 3 seconden.
Als je de knop niet losgelaten hebt gedurende deze cyclus moet je de knop loslaten en weer indrukken om naar stBlink te gaan.
Eerste oefening
In plaats van een timer voor stOn de knop gebruiken. De functie daarvoor (stOn_stOff_Button()) is al geschreven, je hoeft slechts één ding te veranderen in het .ino bestand.
Tweede oefening
stOn verlaten als de knop veranderd is EN de timer afgelopen is; volgorde maakt niet uit. Daarvoor moet je bool stOn_stOff_ButtonAndTimer() invullen en er later in het .ino bestand voor zorgen dat die inderdaad wordt aangeroepen (zie eerste oefening).
Als je extra variabelen nodig hebt mag je die alleen in de functie declareren, nergens anders.
libFsmA bevat de daadwerkelijke FSM. Je kunt hier in principe een echte bibliotheek van maken en in de libraries directory van de sketchbook directory plaatsen, vandaar de naam beginnend met lib. Je hoeft niets te veranderen aan libFsmA.
Alle andere bestanden zijn bestanden die jij schrijft voor de benodigde functionaliteiten.
Je hebt voor het programma zoals het is maar één knop nodig. Er zitten echter vier knoppen in (pinnen 2..5); dat is mijn opstelling en je hebt er later in je verkeerslicht met voetgangersoversteekplaats en fietsersoversteekplaats in ieder geval twee nodig.
Die moet je proberen maar ik denk niet dat dat gaat werken zoals ik bedoelde. De bedoeling was dat beide voorwaarden ooit eens waar geweest zijn terwijl je in stOn bent.