Doel:€250.00
Donaties:€128.00

Per saldo:€-122.00

Steun ons nu!

Laatst bijgewerkt
op 16-04-2024

Vacature: secretaris bestuur
Algemeen

De stichting

Recente berichten

Mijn eerste H0-modeltreinbaan in aanbouw door bigboynl
Vandaag om 01:23:06
Decals voor een Roco 64892 DSG Speisewagen door frits959
Vandaag om 01:22:36
Einde Koemo ballast ??? door Ronald69
Vandaag om 01:14:28
Keerlusmodule Digikeijs DR5013 gaat na willekeurig aantal rondes op kortsluiting door Bert_Apd
Vandaag om 00:57:40
Frans/Belgisch H0e baantje door NS264
Vandaag om 00:44:46
Kleine Baan in H0 (≤ 0.5m²) door NS264
Vandaag om 00:19:08
LS Models 2024 door Albert.H0
Vandaag om 00:17:47
h0 diorama USA “The Paintshops” door Whis
Vandaag om 00:08:34
Ronald en Wanda's "Southern Comfort" swamp layout! door class 37
Vandaag om 00:06:03
Nederland jaren 50 op basis van mijn roots door defender
19 april 2024, 23:05:17
Haandrecht materieel door orientexpress
19 april 2024, 23:02:39
EifelBurgenBahn door Frank 123
19 april 2024, 23:01:42
Mallnitzer Tauernbahnstrecke ÖBB N Spoor door Schachbrett
19 april 2024, 23:00:45
Traintastic - modelbaan besturingssoftware (gratis en open source) door bask185
19 april 2024, 22:27:47
Hengelo in 1981-1982, maar dan anders: Kassenberg in N door raymond erdtsieck
19 april 2024, 22:23:17
Laag-Baarlo door Benelux795
19 april 2024, 22:22:31
Een stukje Odsherreds Jernbane (OHJ) door gdh
19 april 2024, 21:51:42
US diorama in H0 door Wim Vink
19 april 2024, 21:38:59
IC-trein naar Berlijn in model, welke rijtuigen? door Michiel 80
19 april 2024, 20:49:29
Toon hier je nieuwe (model-) spooraanwinst(en)... door johanw
19 april 2024, 20:31:36
La Fabrique (1:87, 0,16m2) door tothebeach
19 april 2024, 20:02:10
Cranicher Altbahn door Arjen52
19 april 2024, 19:47:50
BMB 00-Modulebaan, BMB-Rijdagen en BMB-Deelname aan Beurzen & Evenementen door Hans van de Burgt
19 april 2024, 19:41:34
Van Biervliet/B Models 2019, nieuws van de fabrikant door Sicco Dierdorp
19 april 2024, 18:55:04
Aachenau West door MichielB
19 april 2024, 18:48:39
Jeugdsentiment (show je oude treintjes) door thonis
19 april 2024, 18:36:00
Openen Lima Hondekop door Mispoes
19 april 2024, 17:59:32
Piko 2200 (52686)+ uhlenbrock 76420(?) door Ben
19 april 2024, 16:14:12
Onlangs gespot - gefotografeerd, de foto's door dh3201
19 april 2024, 15:30:48
ACME 2024 met NS ICNG! door Daan!
19 april 2024, 14:09:36
  

Auteur Topic: Pret met Arduino  (gelezen 53014 keer)

Ed K.

  • Offline Offline
  • Berichten: 517
  • Ideale combinatie van mijn hobbies
Re: Pret met Arduino
« Reactie #45 Gepost op: 25 januari 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 januari 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 januari 2019, 22:10:19 door 72sonett »
El Carrilet
"te dom om te poepen"
MH

RudyB

  • Offline Offline
  • Berichten: 630
  • EMV
    • RudysModelRailway
Pret met Arduino 09 variabelen byte int long unsigned
« Reactie #47 Gepost op: 27 januari 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 januari 2019, 13:15:31 door RudyB »

meino

  • Offline Offline
  • Berichten: 2098
Re: Pret met Arduino
« Reactie #48 Gepost op: 27 januari 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
A clean desk is a sign of an empty mind

Kranenberg
De CanBus komt naar Kranenberg

RudyB

  • Offline Offline
  • Berichten: 630
  • EMV
    • RudysModelRailway
Re: Pret met Arduino
« Reactie #49 Gepost op: 27 januari 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 januari 2019, 12:25:16 door RudyB »

72sonett

  • Team encyclopedie
  • Offline Offline
  • Berichten: 2083
    • El Carrilet
Re: Pret met Arduino
« Reactie #50 Gepost op: 27 januari 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: 4656
Re: Pret met Arduino
« Reactie #51 Gepost op: 28 januari 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 januari 2019, 13:06:54 door Timo »
Verzonden vanaf mijn desktop met Firefox

RudyB

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

bask185

  • Offline Offline
  • Berichten: 4051
Re: Pret met Arduino
« Reactie #53 Gepost op: 28 januari 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: 630
  • EMV
    • RudysModelRailway
Pret met Arduino 10 Show Cycle Status and Time with Serial.print
« Reactie #54 Gepost op: 31 januari 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: 630
  • EMV
    • RudysModelRailway
Video 10 weer bereikbaar
« Reactie #55 Gepost op: 31 januari 2019, 15:41:54 »
Blijkbaar was video 10 een tijdje niet bereikbaar, maar dat is nu hersteld.

RudyB

  • Offline Offline
  • Berichten: 630
  • EMV
    • RudysModelRailway
Pret met Arduino 11 Keyboard Input via Serial Read and ParseInt
« Reactie #56 Gepost op: 03 februari 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: 630
  • EMV
    • RudysModelRailway
Pret met Arduino 12 Analog Input, analogRead(), Change Range, map()
« Reactie #57 Gepost op: 07 februari 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: 630
  • EMV
    • RudysModelRailway
Pret met Arduino 13 Timer with millis(), no delay(), Multitasking
« Reactie #58 Gepost op: 10 februari 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: 4656
Re: Pret met Arduino
« Reactie #59 Gepost op: 10 februari 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