Gevaar Ring-in knoppen met ingebouwde regels (5 / 7 stap)

Stap 5: uploaden

//
Deze sketch implementeert een "Gevaar" stijl deelnemer reactie tiebreak.
//
Elke deelnemer heeft een drukknop schakelaar.
Nadat Setup is voltooid, wordt de functie waitingForQuestion aangeroepen. Deze maakt gebruik van een
aansluitnet, in plaats van de Arduino lus, te wachten op de moderator
om te beginnen. Terwijl we wachten, is de speler lichten in jachtwijze verlicht.

Wanneer de moderator persen de schakeloptie S6 knop, de QUESTION_READING
staat begint. Er is hier geen tijdslimiet. In deze fase de speler
LEDs zullen licht in chase modus. Gedurende deze tijd, als een speler knop is
ingedrukt, wordt een boete van 0,25 seconden toegepast voor de volgende fase. Wanneer
de moderator de tuimelschakelaar S5 indrukt en weer loslaat, de
READY_FOR_ANSWER_LIGHT is ingeschakeld, speler LEDs zullen vervallen en
het spel zal overgaan tot de WAITING_FOR_RING_IN staat.

In WAITING_FOR_RING_IN is de READY_FOR_ANSWER_LIGHT
verlicht. Er is een vijf tweede timeout die op de vervaldatum,
oorzaken van het spel te resetAll variabelen, de waitingForQuestion wissen
functie wordt aangeroepen en de status wordt gewijzigd naar QUESTION_READING. Wanneer
een speler op een knop drukt, als de speler niet wordt geblokkeerd van een voorafgaande
fout antwoord en vertragingstijd opgelegd in de QUESTION_READING fase,
dat de speler is gedraaid en READY_FOR_ANSWER_LIGHT is uitgeschakeld.
Het spel gaat aan de WAITING_FOR_ANSWER staat.

In WAITING_FOR_ANSWER, na een vijf tweede time-out of
een speler een fout antwoord geven, overgaat het spel tot
WAITING_FOR_RING_IN, als er spelers gonsde nog niet. Als een
speler geeft een correct antwoord of alle spelers hebben geprobeerd om te beantwoorden,
resetAll wist variabelen, de waitingForQuestion-functie wordt aangeroepen
en de status wordt gewijzigd naar QUESTION_READING.
//

Opmerking: Dit programma is ingesteld om maximaal vier spelers. Als er minder
spelers, het zal omgaan met hen, hoewel wanneer die spelers hebben gebeld en
onjuist beantwoord, zal het programma time out, in plaats van onmiddellijk
ERKENNENDE dat er geen overgebleven spelers zijn. Voor de traditionele drie
speler puristen of degenen die niet kunnen met de extra vijf seconden, MAX_PLAYERS wachten
kan worden veranderd in drie en het programma recompilied en geüpload. Het zal dan
herkennen alleen spelers één tot en met 3.

2012.12.18 eerste versie.

/*
* Milieu definities
*/
#define MAX_PLAYERS 4
#define TIMEOUT_PERIOD 5000
#define DELAY_TIME 250
#define NO_ANSWER 0
#define CORRECT_ANSWER 1
#define WRONG_ANSWER -1

/*
* Hardware definities
*/
#define TOP_LED 13
#define TOP_SWITCH 9
De CORRECT_ANSWER_BUTTON is schakelen S6
#define CORRECT_ANSWER_BUTTON 3
De WRONG_ANSWER_BUTTON is schakelen S5
#define WRONG_ANSWER_BUTTON 4
#define READY_FOR_ANSWER_LIGHT 5

/*
* Schoonmaak definities
*/
int buzzedInPlayer = -1;
int buzzedInPlayerCount = 0;
niet-ondertekende lange wachttijd = 0;
int blockedPlayers = 0;
int moderator;

char ESC_CHAR = 27;
#define PUT_CURSOR_MIDSCREEN\
Serial.Print (ESC_CHAR); \
Serial.Print ("[2J"); \
vertraging (2); \
Serial.Print (ESC_CHAR); \
Serial.Print("[10;1h");

/*
* Knop pers definities
*/
#define NOT_PUSHED hoog
#define GEDUWD laag
#define geblokkeerd -1

/*
* LED staat definities
*/
#define LED_ON hoog
#define LED_OFF laag

/*
* Spel Staten
*/
#define QUESTION_READING 1
#define WAITING_FOR_RING_IN 2
#define WAITING_FOR_ANSWER 3
int fase = QUESTION_READING;
#define DEBOUNCE_TIME 10

struct player_t {}
int licht;
int buttonPin;
int de knop;
niet-ondertekende timePenalty;
} ;// Einde struct playerStruct_t

struct player_t speler [MAX_PLAYERS];

Reset de speler tijd.
VOID resetPlayerTime()
{
int i;

voor (ik = 0; ik < MAX_PLAYERS; i ++)
{
speler [i] .timePenalty = 0;
};
} / / Einde van resetAll

Reset naar de oorspronkelijke toestand.
VOID resetAll()
{
int i;
Moderator = NO_ANSWER;

fase = QUESTION_READING;

voor (ik = 0; ik < MAX_PLAYERS; i ++)
{
digitalWrite (speler [i] .light, LED_OFF);
speler [i] .button = NOT_PUSHED;
resetPlayerTime();
};
buzzedInPlayer = -1;
buzzedInPlayerCount = 0;
} / / Einde van resetAll

int readModerator()
{
Knop release is de trigger voor een knop hebben geduwd.
Ontdendering wordt gebruikt om de vrijlating van de knop.
Als (digitalRead(CORRECT_ANSWER_BUTTON) == PUSHED) {}
for(;;) {
delay(DEBOUNCE_TIME);
Als (digitalRead(CORRECT_ANSWER_BUTTON) == NOT_PUSHED) {}
breken;
}
}
Return CORRECT_ANSWER;
} else if (digitalRead(WRONG_ANSWER_BUTTON) == PUSHED) {}
for(;;) {
delay(DEBOUNCE_TIME);
Als (digitalRead(WRONG_ANSWER_BUTTON) == NOT_PUSHED) {}
breken;
}
}
Return WRONG_ANSWER;
} else {}
Return NO_ANSWER;
}
}

VOID readPlayers()
{
Staten van alle knoppen van de speler worden opgeslagen in de array van de speler.
int i;
voor (ik = 0; ik < MAX_PLAYERS; i ++)
{
Als (speler [i] .button! = geblokkeerd) {}
Als (digitalRead(player[i].buttonPin) == PUSHED) {}
speler [i] .button = PUSHED;
} else {}
speler [i] .button = NOT_PUSHED;
}
}
}
}

VOID waitingForQuestion()
{
int i;

digitalWrite (READY_FOR_ANSWER_LIGHT, LED_OFF);
Serial.println ("\tModerator, druk op de S6 en te beginnen lezing");
Serial.println ("\tModerator, pers S5 wanneer u klaar bent met de vraag");
terwijl (! () readModerator() == CORRECT_ANSWER)) {}
voor (ik = 0; ik < MAX_PLAYERS; i ++) {}
digitalWrite (speler [i] .light, LED_ON);
delay(250);
digitalWrite (speler [i] .light, LED_OFF);
}
}
PUT_CURSOR_MIDSCREEN
Serial.println ("\tPlayers, wachten op vraag tot finish");
}
VOID Setup
{
int i;
voor (ik = 0; ik < MAX_PLAYERS; i ++) {}

Toewijzen van de LED's, kathoden aangesloten op grond
speler [i] .light = TOP_LED - i;
pinMode (speler [i] .light, OUTPUT);

Toewijzen van de drukknop schakelaars; Sluit de ingang aan de grond wanneer gesloten.
speler [i] .buttonPin = TOP_SWITCH - i;
pinMode (speler [i] .buttonPin, INPUT);
digitalWrite (speler [i] .buttonPin, hoge);  Pullup inschakelen

}

pinMode (READY_FOR_ANSWER_LIGHT, uitvoer);

pinMode (WRONG_ANSWER_BUTTON, INPUT);
digitalWrite (WRONG_ANSWER_BUTTON, hoge);    Pullup inschakelen

pinMode (CORRECT_ANSWER_BUTTON, INPUT);
digitalWrite (CORRECT_ANSWER_BUTTON, hoge);    Pullup inschakelen

resetAll();

Serial.begin(9600);           instellen van seriële bibliotheek 9600 bps

PUT_CURSOR_MIDSCREEN
waitingForQuestion();
}

void loop
{
int i;

schakelaar (fase) {}
kast QUESTION_READING: {}
Moderator heeft de reset-knop gedrukt
of de ondervraagde geweest answeredd
of alle spelers hebben onjuist beantwoord.
Geen tijdschema voor deze fase.
Elke Buzz-ins zal 0,25 seconden vertraging lijden als volgende land ingevoerd.
readPlayers();
Straf solliciteren enthousiast knop persen
voor (ik = 0; ik < MAX_PLAYERS; i ++) {}
Als ((speler [i] .button == PUSHED) & &
(speler [i] .timePenalty == 0)) {
speler [i] .timePenalty = DELAY_TIME;
Serial.Print ("\tPlayer");
Serial.Print(i+1);
Serial.println ("krijgt een boete");
}
}
Moderator = readModerator();
Als (moderator == WRONG_ANSWER) {}
fase = WAITING_FOR_RING_IN;
timeout = millis() + TIMEOUT_PERIOD;
digitalWrite (READY_FOR_ANSWER_LIGHT, LED_ON);
voor (ik = 0; ik < MAX_PLAYERS; i ++) {}
speler [i] .timePenalty += millis();
}
PUT_CURSOR_MIDSCREEN
Serial.println ("\tWaiting voor Ring In");
Serial.println();
blockedPlayers = 0;
}
breken;
} / / Beëindigen geval QUESTION_READING

kast WAITING_FOR_RING_IN: {}
Moderator heeft aangedrongen op de enige knop terwijl in QUESTION_READING staat.
Vijf seconden voor deze fase.
Als (blockedPlayers > = MAX_PLAYERS) {}
PUT_CURSOR_MIDSCREEN
Serial.println ("\tAll spelers hebben gebeld in");
Serial.println ("\tModerator, lees de volgende vraag");
fase = QUESTION_READING;
resetAll();
waitingForQuestion();
breken;
} else {}
buzzedInPlayer = -1;
Als (time-out > = {millis())}
readPlayers();
voor (ik = 0; ik < MAX_PLAYERS; i ++) {}
Als ((speler [i] .timePenalty < = millis()) & &
speler [i] .button == PUSHED) {}
buzzedInPlayer = i;
buzzedInPlayerCount += 1;
digitalWrite (player [buzzedInPlayer] .light, LED_ON);
digitalWrite (READY_FOR_ANSWER_LIGHT, LED_OFF);
fase = WAITING_FOR_ANSWER;
timeout = millis() + TIMEOUT_PERIOD;
speler [i] .button = geblokkeerd;
blockedPlayers += 1;
PUT_CURSOR_MIDSCREEN
Serial.Print ("\tPlayer nummer");
Serial.println(i+1);
}
}
} else {}
Serial.println ("\tTimed te wachten op een RING_IN");
Serial.println ("\tModerator, lees de volgende vraag");
fase = QUESTION_READING;
resetAll();
waitingForQuestion();
breken;
}
breken;
} / / End anders
} / / Beëindigen geval WAITING_FOR_RING_IN

kast WAITING_FOR_ANSWER: {}
Een speler heeft GEDUWD de knop terwijl in WAITING_FOR_RING_IN staat.
Vijf seconden voor deze fase.
Als (time-out < millis()) {}
Als (buzzedInPlayerCount < = MAX_PLAYERS) {}
PUT_CURSOR_MIDSCREEN
Serial.println("\tWAITING_FOR_RING_IN");
timeout = millis() + TIMEOUT_PERIOD;
digitalWrite (player [buzzedInPlayer] .light, LED_OFF);
digitalWrite (READY_FOR_ANSWER_LIGHT, LED_ON);
fase = WAITING_FOR_RING_IN;
PUT_CURSOR_MIDSCREEN
Serial.Print ("\tPlayer nummer");
Serial.Print(buzzedInPlayer+1);
Serial.println ("time-out te wachten een antwoord");
}
}
Moderator = readModerator();
Als (moderator == CORRECT_ANSWER) {}
digitalWrite (player [buzzedInPlayer] .light, LED_OFF);
PUT_CURSOR_MIDSCREEN
Serial.Print ("\tPlayer nummer");
Serial.Print(buzzedInPlayer+1);
Serial.println (", dat klopt");
Serial.println ("\tModerator, lees de volgende vraag");
fase = QUESTION_READING;
resetAll();
waitingForQuestion();
} else
Als (moderator == WRONG_ANSWER) {}
fase = WAITING_FOR_RING_IN;
timeout = millis() + TIMEOUT_PERIOD;
digitalWrite (player [buzzedInPlayer] .light, LED_OFF);
digitalWrite (READY_FOR_ANSWER_LIGHT, LED_ON);
Serial.println ("\tOooo, sorry, dat is fout");
Serial.println ("\tWaiting voor Ring In");
resetPlayerTime();
}
breken;
} / / Beëindigen geval WAITING_FOR_ANSWER

standaard: {}
Serial.Print ("standaard: fase =");
Serial.println(Phase);
}

} / / Einde van de schakelaar (fase)
}

Gerelateerde Artikelen

Router Dado Jig met ingebouwde klemmen

Router Dado Jig met ingebouwde klemmen

Dit is mijn versie van een router dado mal. Terwijl het aandelen veel gemeen met anderen dado mallen, denk ik dat mijn wijzigingen in het algemene ontwerp maakt het eenvoudiger en sneller te gebruiken dan de meeste anderen. In deel, dit is omdat de m
Bureau met ingebouwde PC

Bureau met ingebouwde PC

dit is een bureau die ik gebouwd vanaf nul met ingebouwde pc. Het Bureau wordt momenteel gebruikt als een server, een 8 kanaals dvr, maar heeft ook twee diaplays tonen live nyc trafieken camera's in ons kantoor verzending (niet in foto's). Ik gebruik
Hoe maak je een paar Jump Ring kroonluchter oorbellen met parels

Hoe maak je een paar Jump Ring kroonluchter oorbellen met parels

In deze tutorial leert u hoe maak je een paar jump ring kroonluchter oorbellen met parels. Volg mij en hebben een leuk geprobeerd.Stap 1: Leveringen in het maken van de kroonluchter oorbellen:10 MM blauw glas kralen6MM glaskralen met licht blauw4 MM
Hoe maak je Jack Sparrow's Coat knoppen met hars.

Hoe maak je Jack Sparrow's Coat knoppen met hars.

Gebruikte materialen:Hout en houten deuvel stukkenLegobakstenenSuper sculpeyEpoxyhars,vaselineSiliconen rubberKoperen draad (2mm),Gips,Schrijvers goud grootte,Bronze poederAcrylverfDunne draden (voor het ophangen van knoppen)Natuurlijke spons (klein
Vaststelling van mobiele telefoon knoppen met SUGRU.

Vaststelling van mobiele telefoon knoppen met SUGRU.

Gebroken Fixing mobiele telefoon knoppen met sugru, op de SUGRU avond in Cairo Hackerspace bouwen.
Gevormde knoppen met verwerking

Gevormde knoppen met verwerking

ik probeer om een kiosk-systeem met een touchscreen. Het programmeertaal dat ik koos is verwerking van Java.De knoppen op het scherm mag niet alleen rechthoekige, ze moeten worden gevormd.Als u ooit geprobeerd om de gevormde knoppen met elke programm
DIY knoppen met de Machine Tecre knop

DIY knoppen met de Machine Tecre knop

Full Disclosure: Ja, ik ontwerp en verkoop van mijn eigen lijn van knoppen op de kant.Zoals ik trok mijn knop machine en begon met het maken van de voorraad voor dit jaar Valentijnsdag rush, herinnerde ik me hoe slechts een paar jaar geleden ik wist
Raspberry Pi muziekserver met ingebouwde Crossover en DSP

Raspberry Pi muziekserver met ingebouwde Crossover en DSP

Hallo ' iblers ik wil dit project met u delen: uw raspberry pi draaien in een krachtige muziekserver die hoge resolutie audiobestanden kunt afspelen, scheiden van de audio-signalen door frequentie (crossover), en bieden spreker en kamer DSP corrigere
Telefoon zaak met ingebouwde MicroSD kaartlezer

Telefoon zaak met ingebouwde MicroSD kaartlezer

De introductie hieronder is mijn rant over het gebrek aan opslagruimte op mijn telefoon en hoe ik geïnspireerd en gemotiveerd om dit project te maken. Voel je vrij om overslaan en duik in de instructie die bij stap 1 beginnen.Cellphone is een essenti
Multimedia bureau met ingebouwde subwoofer

Multimedia bureau met ingebouwde subwoofer

ik woon in een klein appartement en een bureau nodig voor mijn woonkamer. Het had weinig eisen:1) heeft te mooi2) geschikt voor zowel werk als entertainment2) behoeften naar het huis van alle geassocieerd apparaten* printer* de kabelmodem* WiFi route
Draagbare partij Toque met ingebouwde versterker en visualisatie LED

Draagbare partij Toque met ingebouwde versterker en visualisatie LED

maken een toque met een ingebouwde versterker en LED orgel voor het houden van warm en verwarming dingen omhoog. De partij te beginnen en jou vandaag maken!Laat ik beginnen met te zeggen dat ik in Canada woon. De grote witte noorden. Ik weet een ding
Kerstkaart met ingebouwde retro video game voor onder $10

Kerstkaart met ingebouwde retro video game voor onder $10

Hallo allemaal en Welkom bij mijn tweede Kerst in verband project.Hebt u ooit een echt saai kerstkaart ontvangen? U hebben ooit zat daar en dacht aan jezelf "als alleen er waren een beetje videospel op deze kaart die ik spelen kon..." Nou denken
Boek plank met ingebouwde boek einde.

Boek plank met ingebouwde boek einde.

Soms uw boekenplank is niet zeer volledige... en al uw boeken houden instorten!...Zo dacht ik aan het maken van een boekenplank met een ingebouwde boek einde die afneembaar is wanneer uw plank vol is!Stap 1: materialen Voor het boek zelfA = 2 8 "x 6&
Fase Prop met ingebouwde Tiny Fogger en de mist Chiller (op de goedkope)

Fase Prop met ingebouwde Tiny Fogger en de mist Chiller (op de goedkope)

aka "Low Budget kleine grond Fogger - Part 2"Dit is een fase prop voor het toneelstuk "Killerinstinkt", die haar première op het podium in ongeveer twee weken zal hebben. Het zal wel het centrum stuk op een mooie moderne tafel die moet