Doel:€250.00
Donaties:€65.00

Per saldo:€-185.00

Steun ons nu!

Laatst bijgewerkt
op 17-03-2020
Algemeen

De stichting

Recente berichten

NL baan: Frotterdam in h0 door Ronald Koerts
Vandaag om 20:05:04
Mijn eerste H0-modeltreinbaan in aanbouw door Wim Vink
Vandaag om 20:00:00
Corona en modelbouw door Hendrik Jan
Vandaag om 19:58:06
Lineas Heroes : wie brengt hem uit ? door Falcon10
Vandaag om 19:51:15
Oersik etsplaat spoor 0 van Erwin, beginnersbouwverslag door 1795
Vandaag om 19:40:56
Vectron in model; hoe verhouden de merken zich tot elkaar? door Fritsprt
Vandaag om 19:40:12
SBB Vectron met Nederlandse bestickering: wie brengt hem uit? door NL-modelspoor
Vandaag om 19:34:50
BMB-Module: "Blackwater Goods Yard" door sdz1976
Vandaag om 19:21:11
NL-baan in Canada door Martin Hornis
Vandaag om 19:14:49
Keerlusmodule aansluiten door Ben
Vandaag om 19:05:55
The Summer of 69 door Eric B
Vandaag om 19:00:44
BMB 00-modulebaan, Algemeen. door St00mboy
Vandaag om 18:37:53
Tal der Eichhörnchen. N door Gerhard64
Vandaag om 18:25:55
Projekt RET ZGT 4/6 801-850 en 6/6 701-750 in H0 door Remco vM
Vandaag om 17:42:18
NTM goederenwagens in Spoor-0 door FritsT
Vandaag om 17:40:21
Mooi weer om buiten te spelen door sncf231e
Vandaag om 17:00:04
Zestiger jaren plastic lijmen? door Reinier Z.
Vandaag om 16:58:12
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
Vandaag om 15:39:26
Kap van Shapeways + chassis van ACME = NS 2000? door Rondje_HO
Vandaag om 15:17:11
Diorama in een Billykast door wouter-
Vandaag om 15:12:48
Nieuwe baan: Dubbelspoor H0 door MS Modelbouw
Vandaag om 15:03:13
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 13:46:42
Treinongeval Rijnstrecke door RICROO
Vandaag om 13:46:40
Bergzolder verbouwen tot hobbykamer door Daniels
Vandaag om 13:37:23
Flinke schade aan de fietsbrug Halve Zolenlijn door Marc tramt
Vandaag om 13:32:15
Nieuwe trein toevoegen aan de ECoS door WillemdeNie
Vandaag om 12:51:05
Heuvelland, een tentoonstellingsbaantje in H0 door Klaas Zondervan
Vandaag om 12:46:58
De bouw van mijn modelbaan in Thailand door Wim Vink
Vandaag om 12:33:08
Spoorhumor door 44
Vandaag om 11:58:38
VERPLAATST: Fleischmann piccolo eindafschakeling wisselaandrijving verwijderen door 44
Vandaag om 11:55:47
  

Auteur Topic: Zonder fouten een Arduino programmeren  (gelezen 3277 keer)

bask185

  • Offline Offline
  • Berichten: 431
Zonder fouten een Arduino programmeren
« Gepost op: 27 februari 2020, 15:42:17 »
Mede hobbyist.

Loop je wel eens tegen de lamp wanneer je je Arduino programmeert? Groeit je .ino uit tot een gigantische draak? Heb je wel eens moeite met het voor elkaar krijgen van sommige taken? En lukt je niet om een programma te bouwen zonder zoveel bugs? Dan heb ik misschien iets wat je zou kunnen helpen.  (y)

Bugs komen in allerlei vormen, je vergeet iets te tikken, een waarde past niet in een variabele, je maakt denkfouten of je doet iets fout zonder dat je weet waarom het fout is  ???

Ik heb voor zowel beginnende als gevorderde programmeurs een korte driedelige cursus geschreven in Nederlands (In Jip en Janneke taal) over het programmeren van een Arduino. De hoofddoelen van deze cursus zijn om jou te helpen in het voorkomen van fouten, je te helpen met het opzetten met ingewikkelde processen en om je te helpen om je code zowel netjes, simpel als leesbaar te houden.

In dit eerste deel, leg ik slechts de meeste relevante elementen van de programmeertaal uit. Ik geloof namelijk dat je als nieuweling al veel fouten kan verkomen als je simpelweg weet wat je aan het doen bent. Dit deel bevat tevens hier en daar ook handige truuks waar je wat kan hebben.

In deel twee laat ik je zien hoe je een simpele state diagram kan maken en hoe je dat heel duidelijk en simpel kan omzetten in uiterst simpele code met een zeer geordende structuur. Als voorbeelden laat ik zien hoe we vanuit scratch een AHOB met servo motors programmeren. En in stapjes werken we onze weg naar de top  :D

Deel 3 is misschien voor de meer gevorderde programmeur. Daarin leg ik uit hoe je je computer voor je code kan laten maken. Met een python script kunnen we dan een grafische state diagram omzetten in een code structuur wat slechts een beetje invulling vereist. Een nieuwe projectfolder wordt vervolgens voor je aangemaakt en je kan dan multitasken tot dat je een ons weegt.
We gaan dan van:

Naar:

in slechts een paar seconde en een druk op een knop.

KLIK OP MIJ voor de link naar een de online cursus (je hoeft niks te downloaden).

Aan degene die geinteresseerd zijn, veel lees plezier  ;)

Bas


P.S.
Mocht iemand het niet eens zijn over hoe ik sommige dingen uitleg, schrijf dan je eigen tekst  ;D. Ik ben wel geinteresseerd in dingen die echt fout zijn (hoewel ik die volgens mij niet gemaakt heb) en tik fouten.
« Laatst bewerkt op: 28 februari 2020, 12:04:30 door bask185. Reden: paar typo\'s gefixt »

Reinout van Rees

  • Team forummoderators
  • Offline Offline
  • Berichten: 5454
  • Forummoderator
    • Persoonlijke website + weblog
Re: Zonder fouten een Arduino programmeren
« Reactie #1 Gepost op: 27 februari 2020, 15:47:31 »
Ziet eruit als best een lap werk. Heeeeeel snel doorgebladerd.
Ik zal 'em gaan lezen. Ik *ben* eruit gekomen toen ik twee jaar geleden aan het arduino-en ging, maar ik heb een python achtergrond en mis dus bakken met vingervlugheid qua types declareren enzo :) Er staat vast spul in je document dat ik niet weet.

Reinout
Bouw v/d EifelBurgenBahn (h0, zijlijn in de Eifel)
Eifelgeschiedenis (verhalen en video's over de Eifelburgenbahn)

luutjelewis

  • Offline Offline
  • Berichten: 45
  • Alles zuiver!!!
Re: Zonder fouten een Arduino programmeren
« Reactie #2 Gepost op: 27 februari 2020, 15:52:37 »
Top Bas ik ga je topic volgen en de cursus door nemen  (y)
Groeten Dennis

Eric B

  • Offline Offline
  • Berichten: 3746
  • NS tijdperk III b/c
    • Obdam in H0 op Facebook
Re: Zonder fouten een Arduino programmeren
« Reactie #3 Gepost op: 27 februari 2020, 16:22:27 »
Interessant Bas, ik ga het eens doorlezen en op me in laten werken ...

Ik ben wel geinteresseerd in dingen die echt fout zijn (hoewel ik die volgens mij niet gemaakt heb) en tik fouten.
De eerste: §2.4 eindigt abrupt, zonder het bereik van een long long te vermelden.
Fotodijk(je)
Obdam
Als alles meeloopt hebben we morgen een optocht.

Bert van Gelder

  • Team forummoderators
  • Offline Offline
  • Berichten: 3750
Re: Zonder fouten een Arduino programmeren
« Reactie #4 Gepost op: 27 februari 2020, 16:25:48 »
.....en tik fouten.

“Tikfouten”... is één woord...  ;)

Gr, Bert

MartinH0

  • Offline Offline
  • Berichten: 196
Re: Zonder fouten een Arduino programmeren
« Reactie #5 Gepost op: 27 februari 2020, 18:14:11 »
Interessant  (y) zou misschien zelfs iets kunnen zijn voor mensen met een blinde vlek voor software zoals ik...

De interesse was alweer weg na bladzijde 6. Dit is echt niets voor mij. Ik krijg er de kriebels van.
« Laatst bewerkt op: 27 februari 2020, 18:32:04 door MartinH0 »
Met vriendelijke groet, MartinH0

Als je 't niet probeert wordt het nooit wat.

Theovh

  • Online Online
  • Berichten: 15
Re: Zonder fouten een Arduino programmeren
« Reactie #6 Gepost op: 27 februari 2020, 19:57:40 »
Hoi Bas,
mooi initiatief!
Ben benieuwd naar deel 2 en 3!!
Theo

Ronald1974

  • Offline Offline
  • Berichten: 845
Re: Zonder fouten een Arduino programmeren
« Reactie #7 Gepost op: 27 februari 2020, 20:20:36 »
Bas,

 (y) (y)

Mvg Ronald Hofmeester.

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1523
    • El Carrilet
Re: Zonder fouten een Arduino programmeren
« Reactie #8 Gepost op: 27 februari 2020, 20:38:13 »
“Tikfouten”... is één woord...
Programmeertaal, codestructuur, driedelige en projectfolder ook...
Engelse ziekte heet dat.
« Laatst bewerkt op: 28 februari 2020, 00:08:20 door 72sonett »
El Carrilet

Not sent from my Pocketline Swing 380, Xperia Z2, iPhone, C5503, ALE-L21 or SM-G900F using Tapatalk.

MH

ruudns

  • Offline Offline
  • Berichten: 5426
  • ***
Re: Zonder fouten een Arduino programmeren
« Reactie #9 Gepost op: 27 februari 2020, 22:54:27 »
 (y) leuk initiatief, kom ik er misschien ook nog eens achter hoe het zelf te programmeren is.
ps:
.....misschien zo zelfs wel te begrijpen door de vele houtnerf fotografen en Neerlandicus op dit voor speelgoedtreinjes met al zijn facetten bedoelde forum ;D (y).
Ho, NS periode III tot V. Artitec, Roco, Hamo, FM, Piko, Rivarossi en Liliput.
Verwerken van NS H0 modellen in de NSinmodel treinenlijst (https://forum.beneluxspoor.net/index.php?topic=67158.0).

Martin Hornis

  • Offline Offline
  • Berichten: 1049
Re: Zonder fouten een Arduino programmeren
« Reactie #10 Gepost op: 28 februari 2020, 00:48:28 »
Engelse ziekte heet dat.
Daardoor haak ik vaak na drie zinnen af. Ik moet veel te veel nadenken wat er eigenlijk bedoeld wordt. En dan ben ik de draad van het verhaal kwijt.
Märklin K-rails met boogstralen > 500 mm; NS-lichtseinen met cijferbak: 4, 6 en 8 in één bak; iTrain; Intellibox I; OC32; eigen treindetectiesysteem aangesloten op OC32; controleprogramma's voor iTrain en OC32.

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1523
    • El Carrilet
Re: Zonder fouten een Arduino programmeren
« Reactie #11 Gepost op: 28 februari 2020, 09:48:10 »
.....misschien zo zelfs wel te begrijpen door de vele houtnerf fotografen en Neerlandicus op dit voor speelgoedtreinjes met al zijn facetten bedoelde forum
Bask185 vraagt er zelf om.
Op github zie ik op mijn telefoon alleen maar een grijze vlek op de plaats van de .pdf. Als ik het bestand download, zie ik de tekst wel.
Behalve tikfouten zie ik ook nog een paar d/t fouten. Als de vorm niet goed is, komt de inhoud ook niet over.
Ik geloof er niet in dat je programmeren van een Arduino met C++ in jip-en-janneketaal kan uitleggen. Ik begrijp je tekst, maar ik heb in een grijs verleden (1984) wel computerkunde gestudeerd.
El Carrilet

Not sent from my Pocketline Swing 380, Xperia Z2, iPhone, C5503, ALE-L21 or SM-G900F using Tapatalk.

MH

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4670
Re: Zonder fouten een Arduino programmeren
« Reactie #12 Gepost op: 28 februari 2020, 11:53:35 »
Hoi Bas!

Mooi compact document! Tenminste, compact voor wat je allemaal vertelt. Maar ik denk dat de snelheid daardoor voor een nieuweling misschien wel wat hoog ligt. Maar zeker wel een nuttig verhaal (y)

Nu heb ik de tekst niet geheel gelezen (eigenlijk vooral het begin waar de nieuwelingen instromen). Een paar zaken waar misschien iets meer aandacht aan gegeven mag worden die jij "vanzelf" goed doet maar ik vaak mis zie gaan bij beginnelingen. Ik zou het dus verder naar voren halen voor de slechte gewoontes af te leren voor ze erin slijten ;D Ik schrijf het hier maar op als "eigen tekst" als aanvulling voor anderen ;)

Naamgeving
De compiler kan naamgeving en variabelen geen sikkepit schelen. Het is een hulpmiddel voor ons mensen. Het heeft daarom weinig zin om voor korte namen te gaan omdat het zo lekker kort is. Gebruik liever een langere naam die exact aangeeft wat het is en waardoor de code direct duidelijk is. Vaak kan dit ervoor zorgen dat je code al duidelijk is zonder dat je commentaar toe hoeft te voegen. Scheelt het je dus toch typen ;D

Dus 'errorLedPin' in plaats van 'led2' of 'l2' bijvoorbeeld. Of 'buttonUpPin' in plaats van 'up'.

Syntax
Hoe geef je de code weer? Ook hier geld, de compiler is niet zo kieskeurig. Die heeft eigenlijk maar twee eisen: elke statement eindigt met een ; en elk openend haakje ( { [ heeft een sluitend haakje. De rest is weer is het vooral gereedschap voor de mens om het leesbaar te houden, grijp dat gereedschap met beide handen aan!

Ik denk dat () en [] vrij snel duidelijk zijn waarvoor ze dienen. Als je nieuw begint is {} misschien iets onduidelijker. Het groepeert een blok code zodat je het bijvoorbeeld als één blok wel of niet kan doen.

Consistent
Zag dat je dit later wel aanhaalt maar vind het oooo zo belangrijk. C/C++ geeft je veel vrijheid in hoe je de code neerzet. Maar gebruik dit als voordeel. Spring bijvoorbeeld consistent in (of juist niet). Gebruik dezelfde schijfwijze, taal en notatie voor variabelen. Dus niet 'aantalTreinen' en 'Number_of_Wissels' want dan blijf je opzoeken hoe je het ook al weer moest schrijven.

Wel kan het zijn dat als je heel erg je eigen stijl maakt dat als je een vraag erover op een forum stelt dat mensen je vraag links laten liggen omdat ze het te complex leesbaar vinden. De als "standaard" geaccepteerde regels bij Arduino zijn
  • Niets volgt na een ; (uitzondering in een for())
  • Na een { spring je in, na een } spring je terug
  • Variabelen schrijfJeCamelCase en UpperCamelCaseVoorClasses (en MisschienVoorConstanten)
  • Niets volgt na een { of } (uitzondering voor het sluiten van een definitie) (sorry Bas ;))

Zeg dus niet dat iedereen zich er aan moet houden, maar alleen dat je wel in de minderheid bent en mensen het dus als "onleesbare code" kunnen ervaren als je van veel punten afwijkt. Maar belangrijkste voor jezelf is om consistent te zijn in hoe je het doet. Dan vallen jou fouten sneller op.

Compiler heeft gelijk!
Veel beginners komen er al vaak mee dat de compiler iets fout doet of dat ze niet snappen waarom de compiler het niet met ze eens is. Maar echt waar, de compiler doet het goed en vertelt je zelfs in de foutmelding waar je een fout hebt gemaakt. Erg handig om te gebruiken dus :angel: En je kan nog meer hulp krijgen als je in de Arduino IDE bij instellingen "compiler warnings" op "All" zet.

Okay, heel af en toe maakt de compiler (of de Arduino IDE laag) een foutje. Maar echt, die kans is heeel klein, ga daar in ieder geval maar net vanuit. :police:

Arduino is C++11
Vergeleken met gewoon C kent C++ een aantal handige stukken gereedschap. Zo kan je 'const' gebruiken als veilig alternatief (het is echt een variabele en dus reageert zo, ook in de errors/warning) van een macro (#define) voor dingen die tijdens het draaien van het programma (runtime) niet wijzigen.


Timo

PS [Plaag modus aan ;)] Ja ik vind dat zo'n hele trap aan accolades zeker wat toevoegt daar je in één oogopslag kunt zien of je (sluitende) haakjes mis. De discussie of haakjes of instappen beter is is een andere. Maar aangezien ze in C/C++ nodig zijn geef ik ze liever overzichtelijk weer. Het echte probleem is natuurlijk de hoeveelheid geneste blokken code.
Verzonden vanaf mijn desktop met Firefox

bask185

  • Offline Offline
  • Berichten: 431
Re: Zonder fouten een Arduino programmeren
« Reactie #13 Gepost op: 28 februari 2020, 13:34:35 »
De eerste: §2.4 eindigt abrupt, zonder het bereik van een long long te vermelden.
noted!  (y)
aangepast en een verkeerd getal geupload (moest er nog 1 van aftrekken) er kloppen nog meer dingen niet. Dus deze komt nog.

Citaat van: Timo
Ja ik vind dat zo'n hele trap aan accolades zeker wat toevoegt daar je in één oogopslag kunt zien of je (sluitende) haakjes mis
Dat is enigszins waar, maar elke editor heeft tegenwoordig standaard bracket highlighting, zelfs die IDE van arduino heeft het. De editor Kate deed zelfs hele blokken highlighten. Dat is echt de fijnste tool die ik ooit gebruikt heb. Ik heb in Vs code nog niet gevonden hoe dit moet met die ellendige Json files. Ben jij misschien zo'n diehard die in VIM programmeert?

Het tikt soms ook enigszins wat vervelender, want ik vergeet er ook wel eens eentje, maar ik vind het zo fijn lezen. Het lijkt zo net op Python  :P. Ik heb overigens in meeste code voorbeelden er geen gebruik van gemaakt.
Citaat
Maar ik denk dat de snelheid daardoor voor een nieuweling misschien wel wat hoog ligt.
Mowa, je moet zo denken. Je hoeft niet alles in een keer te onthouden. Dat is onmenselijk. Ik heb mijn C++ boek ook niet in een dag gelezen.
Citaat
Niets volgt na een { of } (uitzondering voor het sluiten van een definitie) (sorry Bas ;))
Ik heb ook wel eens gehoord dat het ook geaccepteerd wordt als er er een else achter een } wordt gezet... :'(

Ik heb overigens in paragraaf §6.5.2 camelCase en underscores een klein woordje gedaan over naampjes. Misschien dat ik de paragraaf beter kan hernoemen naar 'naamgeving'. Dat vind ik wel een goede.

Programmeertaal, codestructuur, driedelige en projectfolder ook...
Engelse ziekte heet dat.
Tik fouten is legit een woordgrapje van me geweest. Dit komt van iemand die wel eens in zijn code zet:
bool PIGS_CAN_FLY = true;

while(PIGS_CAN_FLY == true) {
projectfolder twijfelde ik aan omdat folder mij een Engels wordt lijkt. En ik vind onze taal verre van perfect. Er zitten overbodige elementen in, er ontbreken elementen en er zit onlogica in. Ik vind het zelf stom dat we zo veel aan elkaar schrijven. Ik heb het in ieder geval aangepast. En bedankt voor het aanwijzen.

Slim dat ik ben   ??? had ik natuurlijk niet eerst een spelling check gedaan. Ik heb er zelf ook een paar uitgepikt. Er staat ook ergens 'unsiged', 'intellingen'. Ik had hem ook uitgezet vanwege de rode kringels onder alle Engelse woorden.

Behalve tikfouten zie ik ook nog een paar d/t fouten. Als de vorm niet goed is, komt de inhoud ook niet over.
Wees dan tenminste zo vriendelijk om de paragraaf nummers te vermelden. Ik kan hier niet zo veel mee. :-\

Normaliter maak ik geen dergelijke fouten... wanneer ik schrijf. Mijn basisschoollerares heeft me goed opgevoed en ik ben bekend met alle regels. Wanneer ik tik echter merk ik dat mijn taal gevoel het toch laat afweten daarom ontglippen me toch nog een paar d/t. + ik heb nooit geen tik cursus gevolgd niet. Dat zal ongetwijfeld ook geen positieve bijdrage leveren. Programmaren kan ik, maar tikken.....  :'(

Ik ben nu bezig met een meer uitgebreidere 'scan' van m'n docu op foutjes. Is best veel werk. ::) En ik wil §6.5.2 updaten met wat van Timo's advies.

Ik zal deel 2 beter controleren, mijn excuses.

Bas

EDIT:
Ik heb denk ik de meeste fouten er uit gevist. Het waren er verdomd veel :-(
« Laatst bewerkt op: 28 februari 2020, 14:19:13 door bask185 »

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 1523
    • El Carrilet
Re: Zonder fouten een Arduino programmeren
« Reactie #14 Gepost op: 28 februari 2020, 21:15:42 »
... Wees dan tenminste zo vriendelijk om de paragraafnummers te vermelden. Ik kan hier niet zo veel mee.
Als je me een e-mailadres pb't, stuur ik je een geredigeerde .pdf
El Carrilet

Not sent from my Pocketline Swing 380, Xperia Z2, iPhone, C5503, ALE-L21 or SM-G900F using Tapatalk.

MH