Doel:€250.00
Donaties:€88.00

Per saldo:€-162.00

Steun ons nu!

Laatst bijgewerkt
op 03-06-2025

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Piko blauwe 1000 door Charles_
Vandaag om 22:20:32
Rondom Charlois door Alewijn
Vandaag om 22:15:38
Lodewickshaven door Sikko
Vandaag om 22:09:57
Esu 51820 SwitchPilot v2 door maartenvdb
Vandaag om 22:09:40
Minibaan Visserskaai H0 door Eric B
Vandaag om 22:09:39
Halte Assel, een nieuw baantje in H0 door Klaas Zondervan
Vandaag om 22:08:47
De bouw van mijn modelbaan in Thailand door Frans
Vandaag om 21:56:22
Welke versies van de Roco 2200 zijn er? door Tedo
Vandaag om 21:32:26
Toon hier je nieuwe (model-) spooraanwinst(en)... door Rick
Vandaag om 21:04:58
Cranicher Altbahn door NS264
Vandaag om 19:29:28
Terschellinger Spoor door Michiel2
Vandaag om 19:12:03
Wat is dit voor component door 008200
Vandaag om 19:03:55
Mooi weer om buiten te spelen door sncf231e
Vandaag om 18:33:19
fotowedstrijd 2025 welk onderwerp? door Rob Ellerman
Vandaag om 18:32:58
Geluid Piko 1000 groen door Luc2000
Vandaag om 17:35:36
Ervaringen met bezorgdiensten (PostNL, DHL, etc) door Charles_
Vandaag om 17:13:05
Industrieel smalspoor inspiratiedraadje door Noordernet
Vandaag om 16:51:43
Mijn geweatherde modellen door spoorijzer
Vandaag om 16:33:42
Plux 16 decoder voor Roco H0 lok door Hasenwald
Vandaag om 16:26:42
3d printen van ns daglichtseinen door weslyr
Vandaag om 16:17:51
Tentoonstelling: Liefs uit Roosendaal door Rsd1000
Vandaag om 16:00:35
De IJmuider spoorlijn - korte geschiedenis en plaatjes door Vislijn
Vandaag om 15:47:22
Fotowedstrijd 2025 door Bob R.
Vandaag om 14:54:23
Trix 22583 digitaal gemaakt, maar wil niet rijden. door Josephes
Vandaag om 14:34:35
Welke kleur groen voor NS bovenleidingportalen door grove den
Vandaag om 14:15:13
Aachenau West door wob
Vandaag om 13:44:05
Baanonderbreking Trix door wielke
Vandaag om 13:29:46
Die Sauerlandbahn - Tijdperk III door Wim Vink
Vandaag om 12:41:23
Ermehuizen, dienstregelingsjaar 1973/1974 door spoorijzer
Vandaag om 11:18:54
Revier Rheinbrenner (H0) door spoorijzer
Vandaag om 09:52:11
  

Auteur Topic: Pret met Arduino  (gelezen 61595 keer)

Ed K.

  • Online Online
  • Berichten: 521
  • Ideale combinatie van mijn hobbies
Re: Pret met Arduino
« Reactie #45 Gepost op: 25 January 2019, 15:55:43 »
Als ik dit allemaal probeer te lezen, vergaat mij bij voorbaat al de pret met Arduino.   ??? ??? ??? ??? ???

Gr. Ed
NS 1930/1958 Stoom en Diesel H0, DCC, MultiMaus, S88ExpressNetLi, Koploper. Lid MSC Zutphen

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Pret met Arduino
« Reactie #46 Gepost op: 25 January 2019, 22:06:41 »
...
void foobar()
{
  const int x = 5;
  x++;
  Serial.println(x); // 6,7,....16
}
Als je deze functie in je programma 10x aanroept, dan heeft x een waarde van 16.  ...

Dat compileert niet in C++, en terecht, geeft foutmelding "increment of read-only variable 'x'". Je probeert een constante te veranderen, het is alsof je pi een andere waarde wil geven dan 3,14.

Ik heb 35 jaar geleden leren programmeren in Pascal en ook dat je variabelen een zinvolle naam moet geven en het juiste type. C is niet zo strikt, daarom vind ik het ook geen prettige programmeertaal.
« Laatst bewerkt op: 25 January 2019, 22:10:19 door 72sonett »
El Carrilet
"te dom om te poepen"
MH

RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
Pret met Arduino 09 variabelen byte int long unsigned
« Reactie #47 Gepost op: 27 January 2019, 10:44:22 »
Voor we verder werken aan onze User Interface nemen we even een moment om iets dieper in te gaan op variabelen en data types. In de komende video's gaan we namelijk steeds meer variabelen gebruiken ... en ... we kijken naar een valkuil met betrekking tot data types die maakte dat de code uit de vorige video 8 niet altijd goed werkte.


Link naar Fun with Arduino 09 Variables byte int long unsigned




« Laatst bewerkt op: 28 January 2019, 13:15:31 door RudyB »

meino

  • Offline Offline
  • Berichten: 2375
Re: Pret met Arduino
« Reactie #48 Gepost op: 27 January 2019, 12:14:33 »
Al hoewel ik zelf een hekel heb aan het geven van kritiek, want ik vindt deze training voor de Arduino erg goed, heb ik toch een kleine opmerking. Je gebruikt hier de "int" als een 16 bit integer. Het probleem is dat in C en C++ de grootte van de int niet gespecificeerd is, dat hangt af van de hardware en keuzes die gemaakt zijn tijdens de compiler generatie (GNU C-C++). Die kan in theorie varieren van 8-32 bits. Op de arduino UNO en Mega is de "int" inderdaad 16bits, maar ik durf niet te beweren dat het voor alle Arduino's geldt, daar zitten ook een aantal exoten tussen met bijv. Cortex cpu's. Ik denk dan ook dat je de "short"  moet opnemen, want die is wel een eenduidig gedefinieerd.

Groet Meino

RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
Re: Pret met Arduino
« Reactie #49 Gepost op: 27 January 2019, 12:23:36 »
Dat klopt Meino, bij verschillende typen microprocessoren kan een int een ander aantal bytes beslaan. De getoonde tabel is voor de UNO die we hier gebruiken. Feit blijft dat een 'automatische upgrade' van int naar long op plaatsen waar je dat wellicht impliciet verwacht niet plaats vindt.
« Laatst bewerkt op: 27 January 2019, 12:25:16 door RudyB »

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Pret met Arduino
« Reactie #50 Gepost op: 27 January 2019, 14:36:06 »
In je tabel gebruik je een punt (.) voor scheiding van duizendtallen. Áls je die scheiding al wil aangeven moet dat met een komma (,) of een spatie. Een punt gebruik je als decimaalteken voor reële getallen in de typen float en double.
El Carrilet
"te dom om te poepen"
MH

Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4655
Re: Pret met Arduino
« Reactie #51 Gepost op: 28 January 2019, 13:05:23 »
Goed, terug van een lekker lang weekendje weg. Weer een gewone lunchpauze op kantoor dus tijd voor een reactie :angel: De volgorde daarvan is redelijk willekeurig.

Als ik dit allemaal probeer te lezen, vergaat mij bij voorbaat al de pret met Arduino.   ??? ??? ??? ??? ???
Daar moet je denk ik reacties bij de tutorial los zien van hier. Mijn idee is als je het hier op het forum zet onder "Vraag en antwoord" dat je er ook commentaar op wilt. En zeker als er fouten in een voorbeeld zit is dat enorm vervelend voor een beginner.

Ik vind het opvallend dat je eigenlijk nu pas met variabelen komt.
Ik ook. Niet zo zeer dat er mee begonnen moest worden om het helemaal uit te bouwen maar als beginner is het net zo duidelijk om een echte variabele aan te namen als een macro. En die vormen een moderner, veiliger en doelbewuster alternatief. Waarom eerst slechte dingen aanleren? En het gaat gepaard met "probeer niet slimmer te zijn dan de compiler" (tenzij je dat echt bent ;D).

Zelfde geldt voor delay(). Meer dan de helft van de problemen op het Arduino forum komen door het gebrek aan uitleg over de limitatie daarvan. Of eigenlijk nog algemener, het probleem met blocking code. Er worden steeds leuke voorbeelden bedacht waar het geen probleem is maar het eerste eigen project wat mensen doen willen ze "meerdere loop()'s" hebben :-\ Leren coden is dan ook niet het precies onthouden wat alles betekend maar vooral de manier van denken. En dat is precies wat ik mis bij de meeste tutorials.*

C is niet zo strikt, daarom vind ik het ook geen prettige programmeertaal.
Oefffff, dan moet je heeeeeeeel ver weg blijven van alle moderne talen! :o Vergeleken met Python, Java, JavaScript, PHP, Lua, Swift etc is C++ enorm strict...

Ik heb ff gecheckt met arduino, maar je kan een defined waarde ook geen waarde toewijzen. Als je doet #define x 5  en later x = 7; dan krijg je ook een compiler fout. Dus daarvoor maakt het niet uit wat je kiest.
Maar wel in de duidelijkheid van de error die je daarmee krijgt :)

Maar dan alsnog. Als je gewoon de syntax aanhoudt en hoofdletters gebruikt voor constantes dan zou je zeggen dat het bijna niet mis kan gaan.
Dat je een foutje maakt met programmeren is dan ook niet zo erg. Je code zo maken dat de compiler goed kan aangeven waar je welke fout gemaakt hebt wel!

@RudyB
En even inhakende op de naamgeving, je wijkt inderdaad aardig af van wat "gebruikelijk" is binnen Arduino. Dat is standaard camelCaseVoorVariabelenEnFuncties en UpperCamelCase voor classes en ook redelijk gebruikelijk voor constantes. Staat je natuurlijk vrij maar kan extra verwarring zijn.

Ik had nog iets geprobeerd en daarmee een argument gevonden om geen const te gebruiken.
Wat zonder fouten compileert is de volgende code. Een lokale variabele, const of geen const, kan dezelfde naam hebben als een globale variabele.
Dat heeft absoluut niets met const te maken ;) Dat is variabele scope. Je kan ook twee niet const variabelen hebben of zelfs ander type met dezelfde naam. Vandaar dat twee dingen belangrijk zijn:
1) Maak alleen dingen global als je dat nodig hebt.
2) Geeft variabele donders duidelijke namen, zeker global.

Overigens is de global variabele ook nog te benaderen door de scope operator te gebruiken:
int x = 5;

void setup(){
  char x = 'a';

  x = 'b'; // kan gewoon
  ::x = 5; //voor de global
}

Ik heb nog een 2e argument om geen const te gebruiken.
In C++ weet ik het niet, maar bij ansi C heeft const bij lokaal gebruik in een functie body een compleet andere functie dan als een globale variabele.
Uhmm, nee :angel: Daar verwar je const met static ;)

Met andere woorden, geen redenen om const te schrappen. Ook al kan ik er inkomen dat je die niet gelijk vanaf het begin gebruikt maar later pas uitlegt. Zeker in het begin moet je nu eenmaal wat dingen "voor waar" aannemen.

Voor we verder werken[...]
Zullen we maar niet proberen 128 in een char te schrijven? ;)

In je tabel gebruik je een punt (.) voor scheiding van duizendtallen. Áls je die scheiding al wil aangeven moet dat met een komma (,) of een spatie.
Eens, niet zo zeer omdat het in de code zo is maar omdat je Engels als taal gebruikt. Daar is een punt het decimaalteken.

En zullen we String ook weg laten ::) Dat is denk ik na delay() het grootste pijnpunt op het Arduino forum :-X


Timo



* En dat lijkt hier niet anders ::) (duikt snel onder de tafel ;D

@RudyB, maar waardeer je werk! Heb er zelf niet de tijd voor om een cursus te schrijven dus daar heb je zeker een streepje voor! Maar denk alleen dat weinig anders doet dan de meeste tutorials:-\ en dat is denk ik jammer voor de moeite die je er in steekt. (y)
« Laatst bewerkt op: 28 January 2019, 13:06:54 door Timo »
Verzonden vanaf mijn desktop met Firefox

RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
punt of komma ...
« Reactie #52 Gepost op: 28 January 2019, 13:19:58 »
Het plaatje is aangepast. Wil er verder geen punt van maken.  :D

bask185

  • Offline Offline
  • Berichten: 5172
Re: Pret met Arduino
« Reactie #53 Gepost op: 28 January 2019, 15:15:06 »
@ Timo,

Klopt ik had const idd door de war gehaald met static, nu bad
Train-Science.com
Train-Science github
It ain't rocket science ;-)

RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
Pret met Arduino 10 Show Cycle Status and Time with Serial.print
« Reactie #54 Gepost op: 31 January 2019, 13:14:43 »

Nu we de code werkend hebben, door het juiste gebruik van data types en/of via typecasting, kunnen we verder werken aan onze User Interface. Doel voor deze video is om de status van de dag / nacht cylus weer te geven, aangeschakeld of uitgeschakeld, en om ook de huidige waarde van de dag en nacht tijden weer te geven ... alles dynamich ververst.


Link naar Fun with Arduino 10 Show Cycle Status and Time with Serial.print



RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
Video 10 weer bereikbaar
« Reactie #55 Gepost op: 31 January 2019, 15:41:54 »
Blijkbaar was video 10 een tijdje niet bereikbaar, maar dat is nu hersteld.

RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
Pret met Arduino 11 Keyboard Input via Serial Read and ParseInt
« Reactie #56 Gepost op: 03 February 2019, 09:31:21 »
De User Interface werkt, we worden op ons beeldscherm op de hoogte gehouden van de huidige status waarin de dag / nacht verlichtingsmodule zich bevindt. Nu gaan we de mogelijkheid toevoegen om de cyclustijd te wijzigen via het toetsenbord. De functies die we gaan gebruiken zijn Serial.available(), die vertelt ons dat er nieuwe input is, en Serial.read() of Serial.parseInt() om de ingetikte karakters te lezen.

Link naar Fun with Arduino 11 Keyboard Input via Serial Read and ParseInt




RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
Pret met Arduino 12 Analog Input, analogRead(), Change Range, map()
« Reactie #57 Gepost op: 07 February 2019, 11:25:31 »
Nu we de User Interface via keyboard input werkend hebben gaan we kijken naar een hardware oplossing: een draaiknop. We sluiten een potentiometer aan op een analoge ingang en we lezen hem uit met de analogRead() instructie. Om de range van 0-1023 te converteren naar een range van zeg 1-9 (minuten) voor onze cycle time gebruiken we het map() commando.

Link naar Fun with Arduino 12 Analog Input, analogRead(), Change Range, map()



RudyB

  • Offline Offline
  • Berichten: 629
  • EMV
    • RudysModelRailway
Pret met Arduino 13 Timer with millis(), no delay(), Multitasking
« Reactie #58 Gepost op: 10 February 2019, 10:24:07 »

Tot nu toe hebben we de delay() instructie gebruikt om dag en nacht tijden te generen. De Arduino blokkeert tijdens een delay(), waardoor we geen feedback krijgen als we aan onze potmeter draaien of als we een tijd opgeven via het keyboard. Gelukkig is er een oplossing … we kunnen de interne klok van de Arduino gebruiken, deze telt de milliseconden vanaf het moment dat de Arduino gestart werd. Met de millis() instructie kunnen we zien 'hoe laat het is' waarna we kunnen we besluiten of het tijd is voor actie.

Link naar Fun with Arduino 13 Timer with millis(), no delay(), Multitasking



Timo

  • Team encyclopedie
  • Offline Offline
  • Berichten: 4655
Re: Pret met Arduino
« Reactie #59 Gepost op: 10 February 2019, 11:05:30 »
En daarmee leer je precies aan hoe nooit millis() te gebruiken voor timing ::) Daar komen dus alle horror verhalen van millis() en overflow vandaan... Gebruik, zoals Blink without delay ook doet:
if(millis() - previousMillis >= Interval){
  previousMillis += Interval;
  //of
  previousMillis = millis();
  //beide hebben voor en nadelen
}
En tadaaa, de overflow speelt geen rol meer.


Timo
Verzonden vanaf mijn desktop met Firefox