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

EifelBurgenBahn door Reinout van Rees
Vandaag om 22:06:32
Vergelijkings-/conversietabel modelverven door ruudns
Vandaag om 22:00:00
"Nederlandse" modellen door Marc tramt
Vandaag om 21:56:41
Bouw van materieel 40 treinstellen door FRIE
Vandaag om 21:50:17
25 jaar geleden door 1200blauw
Vandaag om 21:36:30
Aachenau West door Wim Vink
Vandaag om 21:33:52
Ronald en Wanda's "Southern Comfort" swamp layout! door Wim Vink
Vandaag om 21:29:56
Onlangs gespot - gefotografeerd, de foto's door Thom
Vandaag om 21:24:49
US diorama in H0 door basjuh1981
Vandaag om 21:19:01
Pfarrerwinkel bahn door Eric v C
Vandaag om 21:16:29
Bouw NS C 8605, BC 6012 en C 6820 door prutser
Vandaag om 21:09:01
PB Models, ICR-rijtuigen door MartinMarklin
Vandaag om 20:56:12
Een stukje Odsherreds Jernbane (OHJ) door Noordernet
Vandaag om 20:44:22
BMB-Module: “Corfe Castle Station” door MichielB
Vandaag om 20:24:46
Mijn eerste H0-modeltreinbaan in aanbouw door MichielB
Vandaag om 20:05:30
Stationsplein Baden Baden door Dion
Vandaag om 19:04:45
20 en 21 april MobExpo door renenstimpie
Vandaag om 18:53:42
Bisonkit verdunner door Pauldg
Vandaag om 18:39:40
LS Models 2024 door 4020 281-4
Vandaag om 18:03:40
Ervaringen met bezorgdiensten (PostNL, DHL, etc) door roco
Vandaag om 17:54:18
Ombouw/Pimpen Bolle neuzen door bollen neus
Vandaag om 17:48:50
"Litter Bin" voor Brits spoor en Britse modelspoorprojecten door Hans van de Burgt
Vandaag om 17:09:15
Kleine Baan in H0 (≤ 0.5m²) door Jack Black (NS1220)
Vandaag om 17:02:09
Frans/Belgisch H0e baantje door Jack Black (NS1220)
Vandaag om 16:49:52
NS 8400 van Werps door Ivo tB
Vandaag om 16:40:16
Toon hier je nieuwe (model-) spooraanwinst(en)... door Pauldg
Vandaag om 16:03:04
Micromotor inbouwen in fleischmann tandradlok? door Besselspoor
Vandaag om 15:22:30
Oude metalen trafo's gebruiken....... door Benelux795
Vandaag om 14:17:23
Grenzbahnhof Ellrich ( DDR ) in schaal TT door spoorzeven
Vandaag om 14:07:57
Een diorama in TT (VEB Schwellenrost) door RK
Vandaag om 12:10:27
  

Auteur Topic: Pret met Arduino  (gelezen 52970 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

  • Online Online
  • Berichten: 4049
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