Offline
Newbie
Karma: 0
Posts: 28
|
 |
« on: January 13, 2013, 03:22:47 pm » |
Hoi,
Ben een tijdje geleden met Arduino begonnen (basis met ledjes e.d.). Weet iemand nu iets simpels en leuks om te maken?
Groeten, Bram
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 101
Posts: 9553
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #1 on: January 13, 2013, 04:07:54 pm » |
met een paar LEDS en evenzoveel buttons kun je het spel SIMON SAYS maken.
laat de leds in een random steeeds moeilijker patroon knipperen en de gebruiker moet dan de knoppen in dezelfde volgorde indrukken.
goed nadenken voordat je begint te koderen !!
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #2 on: January 14, 2013, 04:50:57 am » |
Ahja dat is inderdaad wel iets leuks om te maken! Thanks. Nu een vraag waar ik ook al een tijdje mee zit. Als je bv spullen nodig hebt naast de arduino componenten waar koop je die dan? Zie bv: http://www.miniclip.com/games/simon-says/en/Van dat soort knoppen + ronde schijf waar zou je zoiets kunnen kopen? EDIT: Ik heb deze gevonden: http://www.pieterfloris.nl/shop/product.php?id_product=751 Wel wat prijzig maar zijn wel de gene die ik zoek. Ik heb een lijstje gemaakt met benodigdheden: - 4x dome push button (rood, groen, blauw, geel) - arduino uno - jumpwires - speaker - weerstandjes - connectors / kroonsteen Ik weet waar ik alles kan krijgen behalve de connectors. Ik wil een connector met 2x female zodat ik aan de ene kan de LED erin kan steken en aan de andere kant het jumpwire. Ik kan ze bij conrad niet vinden, iemand een idee?
|
|
|
|
« Last Edit: January 14, 2013, 06:47:45 am by thabram »
|
Logged
|
|
|
|
|
The Netherlands
Offline
Sr. Member
Karma: 10
Posts: 383
|
 |
« Reply #3 on: January 14, 2013, 10:27:13 am » |
Misschien ook nog een speakertje of buzzer zodat je ook geluid kunt maken (naar het voorbeeld) ?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #4 on: January 14, 2013, 11:06:58 am » |
Had ik al in het lijstje staan! Thanks
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 101
Posts: 9553
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #5 on: January 14, 2013, 12:54:46 pm » |
voor spullen moet je bij eenrecycle winkel gaan shoppen, die hebben vaak oud speelgoed, kistjes, oude electronica (met knoppen) etc Daarmee is voor weinig geld iets leuks te maken. OK soms moet je poetsen of dingen doorzagen of beknutselen (whatever that may be).
gr. Rob
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #6 on: January 14, 2013, 03:30:30 pm » |
Goede tip dankjewel.
Weet iemand toevallig hoe die female-femaile connectors heten? Headers / connectors / kroonsteentjes? Het is dus om 2 dingen aan elkaar te verbindingen (zonder te solderen) gewoon dezelfde functie als een kroonsteen maar dan met een klik systeem ipv schroef.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #7 on: January 16, 2013, 06:30:47 am » |
Ik heb ze nog steeds niet kunnen vinden, iemand?
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 101
Posts: 9553
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #8 on: January 16, 2013, 01:19:50 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #9 on: January 21, 2013, 12:37:54 pm » |
Nog een vraagje (omdat het met dit projectje te maken heeft): De delay functie. Als ik bv een functie aan maken welke een LED laat knipperen: void randLed() { iRandomNum = random(8, 11); digitalWrite(iRandomNum, HIGH); delay(500); }
En ik heb in de void loop nog andere code (functie) staan die checkt of een button wordt ingedrukt, dan werkt die delay ook op die functie. Hoe zorg ik ervoor dat de delay werkt enkel in de functie (of een stuk code) waar ik hem voor wil gebruiken? Hele code: int ledRed = 8; int ledGreen = 9; int ledBlue = 10; int buttonRed = 5; int buttonGreen = 6; int buttonBlue = 7; int aRandom[] = {}; int iRandomNum = 0;
void setup() { pinMode(ledRed, OUTPUT); pinMode(ledGreen, OUTPUT); pinMode(ledBlue, OUTPUT); pinMode(buttonRed, INPUT); pinMode(buttonGreen, INPUT); pinMode(buttonBlue, INPUT); }
void pressButton(int button, int led) { if(digitalRead(button) == HIGH) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } }
void randLed() { iRandomNum = random(8, 11); digitalWrite(iRandomNum, HIGH); delay(500); }
void loop() { pressButton(buttonRed, ledRed); pressButton(buttonGreen, ledGreen); pressButton(buttonBlue, ledBlue); randLed(); }
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 101
Posts: 9553
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #10 on: January 21, 2013, 04:22:24 pm » |
Je moet helemaal geen delay gebruiken, lees de tutorial "blink without delay" - http://arduino.cc/en/Tutorial/BlinkWithoutDelay - voor iedere functie die je wilt schedulen maak je een dergelijke constructie.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #11 on: January 21, 2013, 04:44:11 pm » |
Dankjewel! Inmiddels heb ik de tutorial gedaan. Echter blinkt de led geen 1 seconden lang maar 1 milli sec ofzo (net genoeg om waar te nemen). Weet iemand waarom dit is? Er staat toch duidelijk 1000 in de code: unsigned long iTimer = 0; unsigned long iTimerCurrent = 0; int ledState = LOW;
void randLed() { iRandomNum = random(8, 11); iTimerCurrent = millis(); if(iTimerCurrent-iTimer > 1000) { iTimer = iTimerCurrent;
// if the LED is off turn it on and vice-versa: if (ledState == LOW) ledState = HIGH; else ledState = LOW;
// set the LED with the ledState of the variable: digitalWrite(iRandomNum, ledState); } }
void loop() { pressButton(buttonRed, ledRed); pressButton(buttonGreen, ledGreen); pressButton(buttonBlue, ledBlue); randLed(); }
|
|
|
|
|
Logged
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 101
Posts: 9553
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #12 on: January 22, 2013, 12:29:36 pm » |
change this line iRandomNum = random(8, 11); to iRandomNum = 8;
You use one state for 3 different leds, that should be three states I guess.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #13 on: January 22, 2013, 01:03:25 pm » |
Hoi Rob,
Ik ben erachter gekomen wanneer ik de functies: pressButton(buttonRed, ledRed); pressButton(buttonGreen, ledGreen); pressButton(buttonBlue, ledBlue);
Uit de code verwijder hij wel de ledjes laat branden. En inderdaad je opmerking klopt over 3 leds ipv 1.
Ik snap nu ook waarom hij maar 1 milli sec brandt. Hij voert de pressButton functie uit en ziet dat de knop niet is ingedrukt en zet de LED dus op LOW. Hoe kan ik dit omzeilen?
|
|
|
|
« Last Edit: January 22, 2013, 01:12:12 pm by thabram »
|
Logged
|
|
|
|
|
Netherlands
Offline
Tesla Member
Karma: 101
Posts: 9553
In theory there is no difference between theory and practice, however in practice there are many...
|
 |
« Reply #14 on: January 22, 2013, 03:10:27 pm » |
je moet pressbutton niet de led veranderen, maar een variabele zetten en onthouden dat je de knop ingedrukt hebt. Later als je de led veranderd kijk je of de knop ingedrukt was.
voldoende? Wat ik bijna altijd doe is op papier de gewenste werking simuleren, zelf ben ik dan de processor en vraag me af welke stappen ik moet doen en wanneer.
|
|
|
|
|
Logged
|
|
|
|
|
|