Doel:€250.00
Donaties:€50.00

Per saldo:€-200.00

Steun ons nu!

Laatst bijgewerkt
op 03-01-2024

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Welke Vallejo kleur voor drijfstangen van een DB stoomlocomotief? door Bahn-AG
Vandaag om 16:42:57
Toon hier je nieuwe (model-) spooraanwinst(en)... door Nullus
Vandaag om 16:29:51
MARDEC, de Multifunctionele ARduino dcc DECoder. door bord4kop
Vandaag om 16:29:12
Gebruik je Arduino zonder te "programmeren" ;) door fleischmann1
Vandaag om 16:18:39
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 15:58:15
Al mijn goede ideeën... door bask185
Vandaag om 15:23:03
US diorama in H0 door VAM65
Vandaag om 15:22:05
Beekdaelen in H0 door VulcanRaven
Vandaag om 15:15:11
Hengelo in 1981-1982, maar dan anders: Kassenberg in N door spoorijzer
Vandaag om 15:08:30
Kleine Baan in H0 (≤ 0.5m²) door Jack Black (NS1220)
Vandaag om 15:06:14
U-vorm beperkte ruimte (H0 C-rails) door Jelmer
Vandaag om 14:58:04
Onlangs gespot - gefotografeerd, de links door Jeroen Water
Vandaag om 14:33:00
N spur scenery elementen maken van gips of klei? door Dave.......
Vandaag om 14:30:06
De overeenkomst tussen een Ovaalramer en een Motorpost. door RK
Vandaag om 14:28:54
Onlangs gespot - gefotografeerd, de foto's door mass am see
Vandaag om 14:18:46
BMB-Module: “Corfe Castle Station” door Hans van de Burgt
Vandaag om 14:07:52
welk jaar ging Marklin OVP voor wagons van blauw naar wit door Railman
Vandaag om 13:40:42
GSS Jubileumbaantje (0e / 0n30) door MacArthur
Vandaag om 12:55:30
NTM P1 in Schaal-1 door MaraNCS
Vandaag om 11:39:38
Mijn eerste H0-modeltreinbaan in aanbouw door Jack Black (NS1220)
Vandaag om 11:33:00
Rio Grande Southern - Lizard Head Pass door Hans GJ
Vandaag om 11:30:20
Bauarbeiten im gange door Dave.......
Vandaag om 10:55:26
Variaties op Station Zetten Andelst in HO door Duikeend
Vandaag om 10:54:40
De IJmuider spoorlijn - korte geschiedenis en plaatjes door Vislijn
Vandaag om 10:42:29
Internationale Spoor 0 en 1 dagen in Gießen, 23 en 24 maart, 2024 door bernhard67
Vandaag om 08:42:53
De Hondsrugbaan door mass am see
Vandaag om 08:15:11
Pfarrerwinkel bahn door Jelmer
Vandaag om 08:00:19
M.s.v. De Percee bouwt aan nieuwe clubbaan door J. Moors
Vandaag om 01:00:05
30 maart Modelspoorbeurs Houten & HCC Kennisdag door WimM
Vandaag om 00:42:50
Raadplaatje door Magic
27 maart 2024, 23:27:03
  

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

bask185

  • Offline Offline
  • Berichten: 4007
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 »
Train-Science.com
Train-Science github
It ain't rocket science ;-)

Reinout van Rees

  • Team forummoderators
  • Offline Offline
  • Berichten: 7361
  • 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: 60
  • Niets is zo waardevol als wijze raad
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)
Groet Dennis

Eric B

  • Offline Offline
  • Berichten: 6810
  • NS tijdperk III (a)b/c
    • Obdam in h0
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.
Fotodijkje en fotodiorama
Obdam
Als alles meeloopt hebben we morgen een optocht.

Bert van Gelder

  • Offline Offline
  • Berichten: 4387
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: 588
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, Martin

Theovh

  • Offline Offline
  • Berichten: 86
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

  • Gast
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: 2083
    • 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
"te dom om te poepen"
MH

ruudns

  • Offline Offline
  • Berichten: 6128
  • ***
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: 1413
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 voor OC32.

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • 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
"te dom om te poepen"
MH

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4656
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: 4007
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 »
Train-Science.com
Train-Science github
It ain't rocket science ;-)

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • 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
"te dom om te poepen"
MH