Eerste probeersel. Werkt niet zoals verwacht. Waar ga ik fout

Ik reageer even terwijl ik lees:

FTMZ:
Ik begrijp dat je een variabele kunt maken (Int),

Een variabele is niet per definitie een int! In C/C++ ken je een hele verzameling aan verschillende type variabelen en je kan ze zelfs zelf definiëren. Dit maakt het en mogelijk andere taken te doen met verschillende variabele (tekst anders behandelen dan een nummer bijvoorbeeld) en het geheugen gebruik ligt vast.

FTMZ:
waar meteen een "alias" aan gehangen wordt (middels Const) en een vooringestelde waarde...

Dat is geen alias, maar een type qualifier. Het geeft iets extra's aan voor de variabele. In dit geval dat hij niet te wijzigen valt.

FTMZ:
Ik kan in de voorbeeldsketches waar ik mijn eigen sketch uit schrijf niet meteen opmaken waar de koppeling of verwijzing van RXLED naar een bepaalde poort wordt gemaakt.

Zoals gezegd gebeurd dat als je een functie aan roept die iets met een pin (niet poort!) doet. Binnen Arduino zijn de meest gebruikte digitalRead() en digitalWrite().

FTMZ:
Even tussendoor een antwoord op Septilion's vraag... Ik heb de ProMicro. Om nog niet nader te noemen redenen. :slight_smile: In ieder geval zit daar poort 17(?) verbonden met de RXLED.

Ahh, kijk. Ben niet heel bekend met de Pro Micro maar dat lijkt inderdaad te kloppen.

FTMZ:
Met Die Const int key = 5, wilde ik aangeven dat Key op poortje 5 zat.

Dat kan. Maar variabelen hebben alleen voor jou een betekenis, niet voor de compiler. Pas als jij de variabele gaat gebruiken om ergens een pin mee aan te passen zal het ook een functie krijgen voor de compiler.

Tipje voor goed programmeren, geef een variabele een duidelijke en beschrijvende naam en gebruik het kleinst mogelijke datatype wat alle mogelijke waardes kan bevatten. Zou dus hier

const byte KeyPin = 5;

FTMZ:
Tot slot, Mas3, weet ik niet waarom men een variabele wilde hangen aan een gegeven wat toch nooit veranderde. Ik snap nu je uitleg over het gebruik van kostbaar geheugen.

Vooral voor de duidelijkheid voor jezelf :slight_smile: Ook kan je zo op één plek het ook ooit veranderen naar bijvoorbeeld pin 7. Door const toe te voegen laat je de compiler weten dat de waarde nooit wordt aangepast. Dit helpt jou dat als je dat ergens in je programma toch probeert je een error krijgt (immers is dat iets wat je dus niet wilt) maar de compiler weet daarmee ook dat hij die waarde niet in het "kostbare" werkgeheugen hoeft te zetten.

FTMZ:
Maar wat C niet leek te slikken was een poging om een oneindige loop te maken met "While 1 = 1". Dat trok hij niet. Maar wel wanneer ik er "While 1 == 1" van maakte.

Dat is ook logisch als je het verschil tussen = en == snapt. a = b staat voor het toewijzen van een waarde b aan variabele a (a is nu dezelfde waarde als b). a == b is de controle op gelijkheid (is a gelijk aan b?).

FTMZ:
Ik zou zo niet weten hoe ik andere loops kan bouwen, waar ik onder bepaalde condities uit kan springen.
Middels een Break of wanneer er andere zaken spelen.
Even los ervan dat ik die condities in de While loop kan plaatsten, wil ik wel weten hoe je simpele, oneindige loops kunt maken.

Even los van het feit dat er nog een paar andere type loops zijn. Maar voornaamste is dat je zelden(!!!) een oneindigen loop wilt hebben! In de regel heb je er genoeg aan één om je hele programma maar te herhalen. En deze is er al! Dat is namelijk loop() :slight_smile: Laat voor de rest het herhalen van het programma over aan loop() en sluit je programma niet ergens anders op een een oneindige loop.

MAS3:
Zoals shooter al aangaf, kun je hetzelfde bereiken door "define" te gebruiken.

Gebruik van define hiervoor raad ik ten strengste af. Grootste nadeel, zeker voor een beginner, is de vaak wazige errors die je krijgt als er een fout in zit. Naast dat je wat andere gekke effecten kunt krijgen als je dingen niet in haakjes hebt en het feit dat het niet type safe is. Dingen die een beginner niet gelijk snapt (of hoeft te snappen) maar hem juist wel kan helpen (aan de hand van nuttige errors) betere code te schrijven.