Arduino Forum upgrade scheduled for Monday, October 20th, 11am-4pm (CEST). Sorry for the inconvenience!
Pages: [1] 2   Go Down
Author Topic: Uitleg van de programmeertaal gezocht / Arduino ballen machine  (Read 6487 times)
0 Members and 1 Guest are viewing this topic.
Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dag beste forumleden, onlangs ben ik dan toch begonnen met Arduino en wat jammer dat ik dat niet eerder heb gedaan!

Aangezien ik altijd al gek ben geweest van ballen machines (ballen fabrieken, knikkerbanen, hoe je het ook wilt noemen) heb ik jaren geleden al het plan opgevat om er eentje te maken die door een computer bestuurt zou kunnen worden. Na eerst met Boebot te zijn begonnen ben ik nu (gelukkig) terechtgekomen bij Arduino, maar ik ben een echte beginner.
Ik heb ondertussen de sparkfun starterskit gekocht en het boek 'elektronica voor Dummies' gelezen, dit gaf een hoop inzicht. Ik worstel alleen nog met de programmeertaal. Is er iemand die hier een Nederlandstalige handleiding van heeft?
Als ik de code zie, dan begrijp ik wel ongeveer wat er bedoeld wordt, maar ik snap niet waarom sommige zaken staan zoals ze staan (tussen haakjes bijvoorbeeld). Ik wil het zo graag begrijpen en ik kom er nog niet echt uit. De vraag is dus eigenlijk: hoe werkt de structuur van de taal (bij ons begin je met een hoofdletter en eindig je met een punt). Waarom staat er bijvoorbeeld 'Void' bij 'setup'  en waarom wordt dat gevolgd door '()'. Waarom staan er hoofdletters midden in woorden of eigenlijk waarom? En zo kan ik nog wel even doorgaan.

Je ziet, genoeg vragen maar nog geen antwoorden. Wie kan mij helpen aan het liefst een Nederlandstalige (of anders Engelse) uitleg van de programmeertaal?

Voor degene die mijn project willen volgen arduino-ballenmachine.blogspot.com is de link naar mijn blog.
Logged


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

Hallo
Er wordt veel onwaarheden verkondigt rond de Arduino programmeer taal. Maar eigenlijk is het heel simpel.
Je programeert de arduino in C++.
Omdat C++ een extensie is van C kan je de Arduino ook in C compileren (maar het gaat toch door een C++ compiler).
Omdat C++ geen specifieke hardware functies heeft zoals zet poort 3 hoog heeft het Arduino team de wiring framework in C++ gecodeerd. Dit is de Arduino library.
Behalve de vele extra functies die je kan vinden op http://arduino.cc/en/Reference/HomePage of bij wiring zelf op http://wiring.org.co/reference/ is het grootste verschil dat je in C++ altijd een functie hebt die "int main()" noemt. Bij Wiring heb je er 2 "void setup()" en "void loop()".

Technisch heeft het Arduino team dit als volgt opgelost
Code:
int main(int argc, char *argv[])
{
    arduino_init();
    setup();
    while(1)
    {
        loop();
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
merk op dat de laatste 2 lijnen nooit kunnen aangeroepen worden en dus overbodig zijn.
Code:
    system("PAUSE");
    return EXIT_SUCCESS;
}
Daarnaast heeft het Arduino team ook nog een paar vervelende C/C++ taken van je overgenomen die het leven echt wel makkelijker maken.
Zo werkt dit stukje code in Arduino
Code:
void setup()
{
doeIets();
}
 void doeIets()
{
}
Maar zal dit niet werken in mij Eclipse plugin of in gelijk welke C/C++ omgeving. Daar moet het zijn zoals hieronder:
Code:
void doeIets();
void setup()
{
doeIets();
}
 void doeIets()
{
}
Met andere woorden een object moet gedeclareerd zijn voor je het kan gebruiken. De Arduino IDE maakt die declaraties voor jou met soms onaangename gevolgen maar voor de gemiddelde gebruiker veel handiger.

Dus om de Arduino tool te leren kan je best een C++ cursus erbij nemen. Bijvoorbeeld http://nl.wikibooks.org/wiki/Programmeren_in_C%2B%2B/Basis of een echt boek.
Zo een boek beantwoord al je vragen behalve :
Quote
Waarom staan er hoofdletters midden in woorden
Er zijn 4 grote strekkingen in "naming convention". "Naming convention" is de afspraak hoe je variabelen methodes en andere zaken neerschrijft in een programmeer taal.
Hungarian notatie is een in onbruik geraakt sinds de object georiënteerd talen zijn verschenen. Als je een variabele van het type geheel getal (int in C C++) die je Aantal zou noemen Zou je die in hungarian schrijven als iAantal. Dus met andere woorden eerst het type gevolgd door de naam.
Camal casing wordt nog heel vaak gebruikt voor klasses (bijoorbeeld de standaard bij java voor klassen). Bij camel casing schrijf je elke eerste letter van een woord als een hoofdletter. Vb AantalLeerlingen
Pascal casing komt van de programmeer taal Pascal en is hetzelfde als Camel casing met dit verschil dat het eerste woord een kleine letter is. Pascal casing wordt heel veel gebruikt. Bij in Java is het de standaard voor variabelen en methodes. V aantalLeerlingen
Underscore (ik ken de naam niet) wordt ook vaak gebruikt zeker als namen allemaal in hoofdletters staan. VB AANTAL_LEERLINGEN

Veel plezier ermee.
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 -

Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dank jantje, dit helpt mij al weer wat verder. Verder is het leren door doen denk ik. En ook de 'reference' is een goede.
Ook heb ik op het Nederlandse forum (valk na het plaatsen van deze post) een beknopte Nederlandstalige beginnershandleiding gevonden. Ik kan elke beginner die aanraden!

Laat ik verder hier ook de vraag stellen die ik daar al stelde: weet iemand voor mijn project een goede Color-sensor waarmee ik mijn knikkers op kleur kan herkennen? Ik houd mij aanbevolen.
Logged


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

Blacktree
Ik ben blij te zien dat je weer wat verder bent.
Als je iets aanraad is het altijd handig om een directe link te zetten.  smiley-cool
Ik vermoed dat dit het document is http://lemio.nl/files/arduino_cursus.pdf
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 -

Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jantje, het was niet dat document, hoewel ook deze zeer welkom is.
Ik had deze gevonden: http://www.kompanje.nl/arduino/Arduino%20manual%201_0%20NL.pdf
Logged


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

Das inderdaad een goed document.
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 -

Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Beste mensen, de eerste stap op weg naar een combinatie van een Arduino met een ballenbaan is gezet. En ook al is het een test, ik ben zeer tevreden over het resultaat. Hier kan alles lezen/zien/volgen: http://arduino-ballenmachine.blogspot.com.
Logged


Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 390
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Fijn project.

Als je gewoon ballen wil tellen ongeacht de kleur, moet je eens kijken hoe het scrollwieltje van een muis werkt. Je kan zelfs een oude muis uitelkaar halen en de onderdelen gebruiken. Het komt neer op het uitzenden van een IR signaal en dit signaal te ontvangen. Elke keer als het onderbroken wordt, kan je tellen.

Veel plezier.
Logged


Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, en nu moet ik dus gaan tellen. De setup van de ballenbaan is in orde, de vraag is, welke code heb ik nodig. Kan iemand we in de goede richting 'duwen'? Ik begrijp hoe ik de sensor (photoresistor) kan gebruiken. Hoe ik dat via serial kan weergeven, maar hoe laat je de 'sketch' dan tellen? Ooit wel eens iets over gezien of gelezen, ik weet het iig niet. Wie kan mij helpen?
Logged


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

Zo iets als

Code:
int aantalBallen;
int AlleBallen;

void setup()
{
aantalBallen=0; //Er is nog geen 1 bal gepasseert
AlleBallen=10;  //er moeten 10 ballen passeren
}
void loop()
{

if (bal_passeert) aantalBallen++; //tel de bal als de bal passeert
if (aantalBallen==AlleBallen) //Als alle ballen zijn gepasseert
{
Serial.print("AlleBallen zijn gepasseert");
}

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 -

Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jantje, je bent geweldig. Op deze manier leer ik een hoop van de taal. Ik bedoel met tellen alleen iets anders: telkens als een knikker de phitoresistor passeert wil ik dat deze geteld wordt en dat het totaal aantal getelde knikkers wordt weergegeven, liefst als 1 (nieuw) getal. Dus als er 24 knikkers gepasseerd zijn staat er '24'. En als de 25ste knikker passeert gaat de 24 weg en komt er 25 te staan. Ik begrijp dat je dan een variable in moet stellen waarbij er steeds eentje wordt opgeteld, maar ik weet niet orecies hoe dit in code te vatten. Tevens vraag ik me af hoe je de analoge waarde van de photoresistor omzet in 'ja' (de knikker is gepasseerd) of 'nee' (er is nog geen knikker gepasseerd). Bij 'geen knikker' is de analoge waarden ongeveer 650 en als een knikker passeert is dit ongeveer 670. Ik neem aan dat je dit dan moet converteren naar 'ja' en 'nee'?
Logged


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

Wat je vraagt ligt heel dicht bij de code hoor. Behalve het zien van de bal dan.
Code:
int aantalBallen;
int AlleBallen;

void setup()
{
aantalBallen=0; //Er is nog geen 1 bal gepasseert
AlleBallen=10;  //er moeten 10 ballen passeren
}
void loop()
{

if (bal_passeert)
{
aantalBallen++; //tel de bal als de bal passeert
Serial.print("Er zijn nu ");
Serial.print(aantalBallen );
Serial.println(" gepasseert");
}
if (aantalBallen==AlleBallen) //Als alle ballen zijn gepasseert
{
Serial.println("AlleBallen zijn gepasseert");
}
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 -

Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jantje, dank, het werkt! Ik zal de code hier later posten, voor de liefhebbers.
Toch nog ene vraag: je krijgt nu in Serial Monitor een hele lijst met 'Er zijn er nu X gepasseerd'. Is er ook code om de vorige lijn steeds weg te halen als de nieuwe lijn wordt 'geprint'? Zodat het een soort teller lijkt ipv een lijst met opsomming? Alvast dank!
Logged


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

Blacktree
Toch nog ene vraag: je krijgt nu in Serial Monitor een hele lijst met 'Er zijn er nu X gepasseerd'. Is er ook code om de vorige lijn steeds weg te halen als de nieuwe lijn wordt 'geprint'?
Niet met de serial monitor van Arduino.
Er zijn al discussies hierover geweest. Ik snap het nut niet want als het mooi moet zijn ga je toch geen serial monitor tonen?
Och ja Ik zal wel oud zijn  smiley-cool
Met Belgische frieten
Jan
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 -

Uithoorn, Nederland
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oke Jantje, ik snap het. Toch bedankt!
Logged


Pages: [1] 2   Go Up
Arduino Forum upgrade scheduled for Monday, October 20th, 11am-4pm (CEST). Sorry for the inconvenience!
Jump to: