Pages: [1]   Go Down
Author Topic: Hoe het beste programeren ond er de knie te krijgen  (Read 3668 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo ,

Als modelbouwer zocht ik een probleem voor iets , iemand wees me op Arduino. Ik ben erg onder de indruk. Afgelopen week heb ik een 6-tal boeken doorgelezen, de meeste gaan over het basis programmeren van de arduino. De codes in een programma begrijp ik inmiddels redelijk , maar om zelf iets te schrijven vanaf nul ... ja hallo ... dat gaat nog ff niet lukken , maar dat is wel het doel.

Mijn vraag is , wat is de juiste manier om C++ , maar dan het relevante gedeelte voor Arduino onder de knie te krijgen?

Meteen een vraagje, ik ben een aantal keren het woord Boolean tegengekomen, ook in 3D tekenen kom ik het tegen , alhoewel ik weet wat het ongeveer zou moeten betekenen, zou ik graag willen weten wat de exacte betekenis is.

*edit* : ik heb de boeken "Programming Principles and Practice Using.C++"  van Bjarne Stroustrup en "Ivor Horton's Beginning Visual C++ 2010"   ... is dat een goede start , of ben ik helemaal verkeerd?

bedankt ,
Cor
« Last Edit: November 07, 2012, 05:01:00 pm by Cor_ » Logged

BELGIUM
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hoi,

Ik kom bool vaak tegen bij het programmeren van plc´s .
Hier betekend het iets dat een 1 of een 0 kan in of uitgeven.
Dus een contact dat hoog of laag kan worden .
Nu weet ik niet of het identiek is aan wat je bij arduino kan ingeven.

groeten pieter
Logged

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13734
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bool komt van boolean, een logische waarde die true of false kan zijn waarbij de waarde 0 false is en alles wat niet 0 is is true.

Pieter heeft gelijk, heel vaak worden 0 en 1 gebruikt, maar zoals boven gezegd andere waarden kunnen ook.

boolean expressies zie je terug in condities  bv x<10

if (conditie) ....
while (conditie)...

je kunt een conditie aan een boolean var toekennen

bool b = (x<10);
if (b) ...

en er ook mee rekenen

bool b = b1 ^ b2;  // ^= xor,   & = and, | = or

Note: soms kom je de constructie tegen (in C) 

bool b = !!(x);

dit is een dubbele not die ervoor zorgt dat de waarde van de boolean b zeker 1 is, als x de waarde true heeft (indien als boolean geinterpreteerd)

Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 68
Posts: 1920
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bool b = !!(x);

dit is een dubbele not die ervoor zorgt dat de waarde van de boolean b zeker 1 is, als x de waarde true heeft (indien als boolean geinterpreteerd)
He die kende ik niet.
Jaren C++ gedaan en toch weer iets geleerd dat aan een beginner uitgelegd wordt.
Met vriendelijke groet.
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13734
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Cor
terugkomend op je titel vraag,

 ik heb zelf Arduino leren programmeren door de eerste paar weken alle voorbeelden op de tutorial pagina na te bouwen die ik kon met de elektronica die ik had. Doen dus, fouten maken, voltmeter kopen, lezen, nog meer fouten maken, grenzen opzoeken bv de snelheid van analogread() bepalen, lezen, soldeerbout kopen, nog meer sensoren en breadboards bestellen, LCD opblazen, forum afstropen, I2C leren, fouten maken, lezen, LED opblazen, interrupts, etc . En na een paar weken ga je heel voorzichtig een eerste antwoord posten omdat je iets terug kunt doen naar het forum. EN dan weer bouwen en lezen en bloemen kopen voor de vrouw smiley-wink

Kortom, lezen is zilver, maar bouwen is goud! 
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13734
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Jantje
Quote
bool b = !!(x);
...
He die kende ik niet.

voor meer zie ook - http://www.amazon.de/Hackers-Delight-Henry-S-Warren/dp/0321842685/ -
ik heb 1st edition al een paar jaar op grijphoogte staan, ben wel benieuwd naar de aanvullingen van 2nd edition

en deze - http://graphics.stanford.edu/~seander/bithacks.html - (wat goedkoper)
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik heb inmiddels al een heleboel boeken over Arduino en "dingen" maken doorgelezen, nog niets zelfs gemaakt. Ik hoop dat de Arduino Uno en starterspakket komende week binnenkomt.
Het bouwen van de hardware en "copy-paste" van code , daar zie ik niet tegenop , de meeste code die ik in de boeken tot nu toe heb gelezen is me redelijk duidelijk en ik snap wat het doe.

Maar om vanaf 0 iets zelfs te gaan schrijven , ik heb het gevoel dat deze boeken me daarmee niet veel op weg helpen.

Ik heb nu een beginnetje gemaakt met het boek "Programming Principles and Practice Using.C++"  van Bjarne Stroustrup". Ik hoop dat het te doen is met zelf studie zonder voorkennis van programmeren. Het doel is om zelf iets te kunnen programmeren , zonder copy-paste te gebruiken :-)

Gelukkig heb ik op zich tijd om er een studie bij te pakken... eens kijken wat het gaat geven de komende maanden.

Cor

 
Logged

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 217
Posts: 13734
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Maar om vanaf 0 iets zelfs te gaan schrijven , ik heb het gevoel dat deze boeken me daarmee niet veel op weg helpen.

Waar jij op doelt is analysis & design / ontwerpen.

Pen en papier (whiteboard!) is belangrijkste gereedschap, teken de sensoren en de hardware die je denkt nodig te hebben.
- Teken de connecties. Gebruik kleurstiften om bv =5V lijntjes rood en GND zwart te maken. I2C heeft weer eigen kleuren
   // stiften 5 eur bij de hema, kun je vandaag nog halen, met een schrijfblok zodat je al je schetsen makkelijk bewaard.

Hetzelfde kun je doen voor software. makkelijkste in het begin in top down
- beschrijf op hoofdlijnen je programma
Code:
setup:
initialiseer seriele poort
initialiseer poorten voor sensoren, leds en ventilator
initaliseer sensoren

loop:
lees temperatuur
lees humidity
bereken dauwpunt
als dauwpunt > temperatuur dan zet ventilator aan
als dauwpunt < temperaturr zet ventilator uit
 
uit deze tekst destileer je je hulp functies

Quote
float t = getTemperature();
float h = getHumidity();
float dew = calcDewPoint(t, h);
duik in de functies op een gelijke manier

Code:
getTemperature:
1) lees analoge poort
2) reken om vaar volts
3) zoek op in tabel volts naar temeratuur
4) return de waarde
OP dit moment krijg je het gevoel dat kan ik wel coderen. Dan moet je dat doen.

En als je dan de functie getTemperature() geschreven hebt maak je een testsketch om de functie te testen
Code:
void setup()
{
  serial.begin(115200);
}
void loop()
{
    float t = getTemperature();
    Serial.println(t,1); // 1 decimal
    delay(100); // optional;
}

de dewpoint functionheeft een zwaardere test nodig
Code:
void testDewPoint()
{
  for (int i=0; i<10; i++)
  {
    float d = calcDewPoint(temp[i], hum[i]);  // you need to prepare a test table with values from a reference source
    if (abs(d - dew[i]) > 0.1)
    {
      Serial.print(d);
      Serial.print("<>");
      Serial.print(dew[i]);
      Serial.println();
    }
  }
}
Dit is best veel werk dat testen, maar je zorgt hiermee dat je de bouwblokken van je programma tot op zeker nivo vertrouwd.

Voor complexere programmas:
- maak een schets van de informatie stromen die je hebt ook met pen en papier, en verfijn zoals bovenstaand tot je blokken kunt implementeren.
   (of een tool als DIA - http://dia-installer.de/shapes/renewable_energy/index.html - )

Het leuke van documenteren is dat je over een paar maanden een schrijfblok vol hebt over hoe je hebt leren ontwerpen en zo.
sofar 2 cents

Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Pages: [1]   Go Up
Jump to: