Sketch naar meerdere files compileert niet meer

Hoi Allemaal,

Ik ben net begonnen met het leren te programmeren, en ben bezig met het maken van een verkeerslichtinstallatie.
Er is een sensor en 3 lichten per paal, en deze moeten goed op elkaar werken. De sketch maken is goed gegaan, het werkt.

Ik heb een klasse gemaakt “stoplicht” deze werkt, maar het is een best groot bestand geworden en wil de klasse graag splitsen.
nu wil ik graag de sketch verdelen in 3 bestanden:
het .ino bestand: hierin komt normaal de setup en de loop te staan.
het .h bestand: hierin wordt de klasse gedefinieerd en de functies hierin.
het .cpp bestand: hierin wordt de klasse uitgewerkt.

Volgens mij heb ik het goed gedaan, maar ik krijg de melding dat de lichten niet gedefinieerd zijn in de scope.
Stoplicht.cpp: In member function ‘void Stoplicht::Begin(int)’:
Stoplicht.cpp:18: error: ‘knop’ was not declared in this scope

  • knop = knoppin;*
    ^
    Als ik het goed lees gaat het wel goed in de setup, maar als je bij de loop aankomt is hij ineens “out of scope”.

Kan iemand aangeven of een hint geven wat ik fout doe?

Alvast Bedankt,
Kai

de bestanden heb ik bijgevoegd:
kruispunt_0.1.1 => de enkele file die werkt.
kruispunt_0.2, Stoplicht zijn de bestanden die zouden moeten samenwerken.

kruispunt_0.1.1.ino (3.27 KB)

kruispunt_0.2.ino (640 Bytes)

Stoplicht.cpp (1.88 KB)

Stoplicht.h (215 Bytes)

Ik zie wat er fout is maar dat is niet makkelijk zomaar uit te leggen.
In technische taal kan ik het wel uitleggen:
Je klasse stoplicht gebruikt de variabele knop maar je definieerd ze niet in je klasse. Erger nog je definieerd ze in je constructor waardoor de variabele knop (nadat je ze op klasseniveau hebt gedfineerd) twee maal bestaat in je constructor.
Hetzelfde geld waarschijnlijk voor al je andere klasse variabelen die je definieerd in je setup.

Als je deze code zelf helemaal hebt geschreven en aangepast zonder enige voorkennis en kunde enje snapt het bovenstaande niet; kan ik je alleen maar aanraden om een basis cursus c++ te nemen en dan zal je zelf wel snel snappen waarom het fout gaat.

Met vriendelijke groet
Jantje

Hoi Jantje,

De teminologie is voor mij nog moeilijk maar ik snap wat je bedoeld denk ik.
Ik was in de veronderstelling dat variabelen definieren in de constructor hetzelfde resultaat zouden geven als een klasse variabelen.

Ik heb de variabelen nu rechtstreeks in de Headerfile in de root van de klasse gedefinieerd en nu werkt het wel.

Ik zal zeker nog verder gaan met de cursus, Maar voor nu ben ik 100% geholpen.

Met vriendelijke groet
Kai

:slight_smile:
Goed werk
Jantje