Deel of subprogramma en hoofdprogramma.

algemene C code
Berichten: 340
Geregistreerd: 23 Okt 2016, 20:29

Deel of subprogramma en hoofdprogramma.

Berichtdoor benvo » 23 Okt 2016, 20:55

Hallo allemaal,

Ik vraag me af of een Arduino deel/subprogramma's kent. Hopelijk kan ik omschrijven wat ik bedoel. In bijvoorbeeld Basic kennen we de opdracht, "Gosub". Met deze opdracht kun je een deelprogramma laten uitvoeren dat je vaker nodig bent. Nadat het deelprogramma is uitgevoerd springt de code terug naar het Hoofdprogrammadeel waar het oorspronkelijk vandaan komt. Anders omschreven; stel ik wil een aantal ledbalken op verschillende tijden dimmen en weer laten opkomen. Als de dimtijd ed. gelijk is elke keer zou het toch vreemd zijn dat je zo'n zelfde programmadeel vaker in je programma tegenkomt? Het zou handiger zijn wanneer er dan ook zo'n "Gosub" vorm als in basic is waar je je benodigde deel doorloopt en dan weer terugkeert naar waar je vandaan komt? Hopelijk maak ik een beetje duidelijk wat ik bedoel?

Dank voor de informatie, alvast!

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Deel of subprogramma en hoofdprogramma.

Berichtdoor nicoverduin » 23 Okt 2016, 21:45

Dat noemen ze een functie. setup() en loop() zijn zelf ook functies dus je maakt er al gebruik van.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 340
Geregistreerd: 23 Okt 2016, 20:29

Re: Deel of subprogramma en hoofdprogramma.

Berichtdoor benvo » 24 Okt 2016, 17:27

Ok, een functie dus?
Stel ik wil een led balk verlichting s'morgens om 8:00 uur laten opkomen. In de middag wil ik balk B met de zelfde snelheid aan laten gaan en een uur later balk C ook weer met de zelfde versnelling de leds laten aangaan. Eigenlijk moet ik dan drie keer het programmadeel of functie(?) aan kunnen roepen die dat gaat verzorgen. En elke keer moet na deze handeling het programma weer terugkeren naar, laten we zeggen, het hoofdprogramma. Nu zoek ik dus eigenlijk dat commando dat dit kan verzorgen. Hopelijk maak ik mijn bedoeling een beetje duidelijk?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Deel of subprogramma en hoofdprogramma.

Berichtdoor nicoverduin » 24 Okt 2016, 18:11

Nou net als in basic.....
Daar had je:
cpp code
if tijd = 08:00 then
gosub balkAan (balkA)
else
if tijd = 12:00 then
gosub balkAan(balkB)
else
if tijd = 13:00 then
gosub balkAan(balkC)
endif
endif
endif


In C/C++ zou je krijgen
cpp code
if (uren == 8) {
balkAan(balkA);
} else {
if (uren == 12) {
balkAan(balkB);
} else {
if (uren == 13){
balkAan(balkC);
}
}
}


en dan jouw functie
cpp code
void balkAan(uint8_t balk) {
digitalWrite(balk, HIGH); // er vanuitgaande dat een digital pin het moet doen. PWM kan ook maar dan moet je ff naar blink_without_delay kijken
}


Dit is absoluut niet de beste oplossing maar je zou er goed aan doen om eens met die blinkWithoutDelay alsmede de PWM tutorial te lezen.

De rest kun je zelf wel verder uit zoeken.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 340
Geregistreerd: 23 Okt 2016, 20:29

Re: Deel of subprogramma en hoofdprogramma.

Berichtdoor benvo » 26 Okt 2016, 17:47

Hartelijk dank, dit idee zocht ik. In het programmeren van een Arduino, maar dat had u vast al gezien, ben ik nieuw. Wel ben ik mij al aan het inlezen. Zodra ik mijn bestellingen binnen heb kan ik ook daadwerkelijk dingetjes uit gaan proberen. Dat is zonder materiaal wat lastig. Het is m'n bedoeling om zoveel mogelijk in herbruikbare blokken te programmeren, als dus in het door u aangegeven voorbeeld. Er zullen vast wel allerlei voorbeelden zijn die ik ook graag tot me neem, het lijkt me echter leuk om zoveel mogelijk zelf te doen. We gaan zien hoe ver ik kom. In ieder geval, nogmaals, mijn dank!

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Deel of subprogramma en hoofdprogramma.

Berichtdoor nicoverduin » 26 Okt 2016, 18:20

Er zijn legio verschillende libraries beschikbaar. Helaas werken ze niet altijd naar behoren. Dus hoe meer ervaring je opbouwt, hoe gemakkelijker je onderscheidt kan maken tussen prut en goede code. Het platform Arduino blijft zich uitbreiden. STM heeft nu ook 2 bordjes opgeleverd die gewoon met de IDE ontwikkeld kunnen worden. Die bordjes kosten tegenwoordig iets van 3-10 euro met 48 IO lijnen. Zie wel dat ik een change ga doorgeven aan STM. Ze hebben niet alle pinnen gedefinieerd. Gaan we ff regelen :)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten