Go Down

Topic: Hoe het beste programeren ond er de knie te krijgen (Read 4 times) previous topic - next topic

robtillaart

@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)
Rob Tillaart

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

Cor_

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


robtillaart

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: [Select]

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: [Select]

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: [Select]

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: [Select]

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

Rob Tillaart

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

Go Up