[GlovePie] Quiz systeem met wiimote

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Hallo Allemaal,

Ik ben voor een quiz een systeem aan het maken die kan zien wie er het eerste op de knop gedrukt heeft. Klinkt best simpel, maar ik kom er echt niet uit...
Ik ben aan het stoeien met GlovePie, dat is een programmaatje waarmee je met behulp simpele code verschillende in en uitgang hardware kan bedienen. In mijn geval dus twee wiimotes en een midi sampler.

De bedoeling
Er zijn 2 teams met elk een wiimote in hun hand.
Ze krijgen een vraag, en bij de gene wie het eerst drukt moeten de ledjes op de wiimote branden.
Tegelijkertijd word er een midi signaal naar een sampler gestuurd voor een buzzer geluid.
Dat moet ik dan weer met een knop kunnen resetten.

Alle communicatie werkt, ik kan vanuit Glovepie ledjes laten branden op de wiimote en een midi signaal uitsturen voor de sampler.

Alleen nu zit ik met de code.

wat ik heb:
code:
1
2
3
4
5
6
7
8
9
10
11
if wiimote1.a = 1 then{
  Midi.channel1.d4 = 1;
  Midi.channel1.d5 = 1;
  wiimote1.leds & wiimote2.leds = 3;
  wiimote2.a = 0;
}elseif wiimote2.a = 1 then{
  Midi.channel1.d6 = 1;
  Midi.channel1.d7 = 1;
  wiimote1.leds & wiimote2.leds = 12;
  wiimote1.a = 0;
};


Als ik op remote 1 op de knop druk gaan de ledjes van team A branden(eerste 2 op de wiimote), en als ik op de knop van remote 2 druk dan gaan de ledjes van team B branden(laatste 2 op de wiimote).
Alleen als bijvoorbeeld team a heeft gedrukt, kan team b ook nog gewoon drukken. Zo kan ik dus nooit zien wie er als eerste heeft gedrukt :S. Dus de knop van team B moet worden gedisabled als team A gedrukt heeft, en zo ook andersom.

Ik heb er al uren over na zitten denken en dingen uitgeprobeerd en opgezocht maar ik kom er echt niet uit. Hoe kan ik zoiets maken?
Een kant en klaar script hoeft natuurlijk niet, als ik maar achter de logica kan komen over hoe je zo'n script opbouwd.

Alvast bedankt, hoop dat jullie het snappen :P

Hallo!


Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 14:40

Gonadan

Admin Beeld & Geluid, Harde Waren
Allereerst: ik heb geen ervaring met GlovePie dus ik antwoord vanuit standaard programmeerlogica. ;)

Hoe wordt die code precies aangeroepen? Ik gok via een event(handler) of iets dergelijks.
Dat zou betekenen dat elke keer als er een knop ingedrukt wordt de code opnieuw uitgevoerd wordt.
Dan zal je dus ergens in één of andere variabele een status moeten bijhouden die aangeeft dat er al gedrukt is.
Je kunt dan bijvoorbeeld zorgden dat als het team dat als eerste drukte nogmaals drukt (of een derde remote gebruiken) de variabele weer gereset wordt en je een volgende vraag kunt spelen.

Als het niet mogelijk is om een variabele op te slaan die buiten het event (waar ik nog steeds vanuit ga) beschikbaar is dan kan je misschien de status van de lampjes gebruiken.
Ofwel: Als A drukt gaan de lampjes van A aan, drukt B dan alsnog dan controleer je eerst of de lampjes van A al aan zijn.

[ Voor 20% gewijzigd door Gonadan op 13-01-2009 08:57 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou een mutex gebruiken die geset wordt als er een ( willekeurige ) knop wordt ingedrukt. Dan bepalen welke knop wordt ingedrukt en je lichtjes en sampler aansturen. Als je klaar bent met aansturen kun je kiezen of de mutex gereset wordt (in de code) of dat de 'spelleider' de reset handmatig doet.

Op deze manier kan er maar een de eerste ( en enige ) zijn.

suc6
- dm

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Welk synchronisatie mechanisme je gebruikt is natuurlijk nogal afhankelijk van je ontwikkel omgeving. Ik ken GlovePie niet, maar mischien is het wel gegarandeerd single-threaded.

Maar het is wel een goed idee om ieder geval even na te denken over concurrency.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Het is gelukt!, bedankt jongens voor de reacties.

Hoe ik het gedaan heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
if wiimote1.a = 1 then{
  if wiimote2.leds = 12 then{ //kijken of B niet al gedrukt heeft
    //doe niks
  }else{
    Midi.channel1.d4 = 1;
    Midi.channel1.d5 = 1;
    wiimote1.leds & wiimote2.leds = 3;
    wiimote2.a = 0;
  };
};
if wiimote2.a = 1 then{
  if wiimote1.leds = 3 then{ //kijken of A niet al gedrukt heeft
    //doe niks
  }Else{
    Midi.channel1.d6 = 1;
    Midi.channel1.d7 = 1;
    wiimote1.a = 0;
    wiimote1.leds & wiimote2.leds = 12;
  };
};

if key.R = 1 then{  //reset als er op R gedrukt is
  wiimote1.leds = 0;
  wiimote2.leds = 0;
};

Als a gedrukt heeft gaan de ledjes van Team A branden, als team B dan alsnog wilt drukken gaat dat niet omdat de ledjes van Team A branden. En zo ook andersom.

Bedankt!

Hallo!


Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat een mutex inderdaad een beetje zwaar is, maar met een gewone boolean zou het ook moeten lukken, als het gegarandeerd single threaded is.

hmm, boter na de maaltijd.

Je maakt trouwens lange dagen?

suc6
- dm

[ Voor 20% gewijzigd door Verwijderd op 13-01-2009 10:28 ]


Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
offtopic:
Als ergens mee bezig ben, moet het af :P En ik heb vrij vandaag dus het maakte niet zoveel uit

Hallo!


Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
en wat als team a al drukt nadat je op reset drukt maar voordat je begonnen bent met je vraag te stellen ?
dan heeft team b niet eens de mogelijkheid af te drukken, want met je script is hun wiimote nu buitenspel gezet.
(je kan ze dan natuurlijk dwingen te antwoorden op een ongestelde vraag om dan na het stellen van de vraag alsnog team b te laten antwoorden - zonder dat afdrukken nodig is)

dus een quiz-master-wiimote zou ook handig zijn vermoed ik.
zodat je op diens knop moet drukken om het afdrukken door de teams mogelijk te maken, maar ook te voorkomen dat ze afdrukken voordat er begonnen is met een vraag te stellen, en ev. als melder naar de quizmaster zodat de teams niet altijd met hun wiimote moeten gaan wuiven van 'wij waren eerst'.
(of zitten die mogelijkheden in de verdere delen van het script al ingebakken?)

edit: is me bekend dat je enkel dit aan 't werk wou hebben, maar 't zijn natuurlijk wel opmerkingen waar je rekening mee kunt houden eh ;) en welke eigenlijk in dat gedeelte van je script zouden moeten verwerkt zitten. mensen die weten hoe het systeem werkt, durven er namelijk soms ook wat misbruik van de maken, als er iets te winnen valt. (en quizzers gaan dat ook vrij rap door hebben hoe het systeem werkt)
hoe dan ook: veel plezier ermee, en ik ga ook eens spelen met die glovepie en enkel wiimote's. eens kijken wat ik ermee kan doen.

[ Voor 35% gewijzigd door soulrider op 13-01-2009 11:56 ]


Acties:
  • 0 Henk 'm!

  • Yoram
  • Registratie: Augustus 2004
  • Laatst online: 05-08 14:22
Dat is geen probleem. Ik kan het zo maken dat ze pas kunnen drukken als de vraag is gesteld. Maar het word bedient door mensen die weten hoe het werkt dus daar vertrouw ik ook een beetje op.

In de show word alles geautomatiseerd met behulp van midi. Als er iemand op de knop druk gaat er een lamp branden bij dat desbetreffende team. Quizmaster mote is opzich wel een goede, maar dat is iets voor later. Het ging er even om dat dit werkt.

Hallo!


Acties:
  • 0 Henk 'm!

Verwijderd

Hallo, ik moet voor een quiz een systeem zien te vinden om te zien wie het eerst afdrukt en dit lijkt me wel wat. Helaas weet ik van al dit niets af. Kunnen jullie misschien helpen?

Dit is wat ik moet doen:
-Er zijn zes deelnemers.
-vanaf de eerste afdrukt kunnen de anderen niet meer.
-Op de een of andere manier moeten mensen in de zaal dit kunnen zien (projectie ofzo)

Ik hoop dat jullie me kunnen helpen,

Groeten, felix

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wat heb je zelf al geprobeerd? Het is de bedoeling dat het in dit forum over het zelf programmeren gaat. Wat je wil is goed mogenlijk.

Ik heb zelf ooit eens een applicatie gemaakt om met een ongelimiteerd aantal Buzz Buzzers een quiz te doen.

Je zult moeten beginnen met het aansturen van de controllers. Zowel de Buzz Buzzers als de Wii controllers kun je in windows gewoon als HID device aanspreken.

Als je concrete vragen hebt over hoe je dit moet implementeren, kan dat hier best besproken worden. Maar als je een kant-en-klare oplossing wil, ben je hier verkeerd

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Sorry, maar ik kan van programmeren echt niets, ik weet totaal niet hoe ik aan zo iets moet beginnen, laat staan om gewoon die controllers op een pc aan te sluiten.
Ik ben dus wel degelijk aan het verkeerde adres :)
Kan je me anders links geven waar ik geholpen kan worden?

Groeten.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ieder geval niet hier op het forum. Je zou eens met google kunnen zoeken of er al bestaande software is die aan je eisen voldoet.

Anders zul je contact op moeten nemen met iemand die wel verstand van programmeren heeft, die kan dan een oplossing voor je programmeren.

Een andere optie is om zelf te leren programmeren ;). Als je dan problemen tegen komt bij het leren ben je hier natuurlijk altijd welkom om je vragen te stellen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Ok, ik heb me even verdiept in het coderen en heb nu het volgende:
Ik vond een buzzerprogramma dat werkt met de cijfertoetsen (1 is bijv. speler 1, 2 is speler 2, etc.)
Het enige wat ik dus nog moest doen is een knop op elke wiimote verbinden aan een cijfer.
Dit is mijn code (gemaakt in GlovePie):

NumPad1 = Wiimote1.B or Wiimote.Classic.b
NumPad2 = Wiimote2.B or Wiimote.Classic.b
NumPad3 = Wiimote3.B or Wiimote.Classic.b
NumPad4 = Wiimote4.B or Wiimote.Classic.b
NumPad5 = Wiimote5.B or Wiimote.Classic.b
NumPad6 = Wiimote6.B or Wiimote.Classic.b

Normaalgezien zou dit moeten werken, maar het lukt alleen bij de eerste wiimote, wanneer ik op de B-toets duw verschijnt er inderdaad het cijfer 1, bij de andere wiimote (heb er nu nog maar twee) flashen de ledjes gewoon en gebeurd er helemaal niets.

Ligt dit aan de code of iets anders?

Groeten,
Felix

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik heb totaal geen kennis van GlovePie, maar in de code die je post zie ik alleen dat je aan NumPad1 t/m NumPad6 toekent of Wiimote1 t/m Wiimote6 B of Classic.b true is.

Ik zie nergen in je code dat je verder wat aan de WiiMote's ledjes doet of iets op het scherm toont.

Lees ook even Wij tweakers doen elkaar permanent de groeten en gebruik voor je code voortaan code tags

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Bedankt voor de reactie, ik zal er rekening mee houden.

De ledjes heb ik in principe niet nodig want ik vond dit:
http://www.buzzers.com/de...ck_with_double_timer.html
Het werkt met de numpads dus moet ik ook alleen die knoppen van de controllers kunnen linken aan de numpads, wat me bij 1 controller dus al gelukt is.

De tweede controller is wel verbonden met de computer maar GlovePie ziet hem kennelijk op de één of andere manier niet.
Pagina: 1