Die Medien konnten nicht geladen werden.Habe diese Knöpfe für einen Geocache an einen Arduino angeschlossen. Arbeiten sehr gut auch an 5V. Hier ein Senso Spiel …/************************************************** Public Constants*************************************************/#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41#define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52#define NOTE_A1 55#define NOTE_AS1 58#define NOTE_B1 62#define NOTE_C2 65#define NOTE_CS2 69#define NOTE_D2 73#define NOTE_DS2 78#define NOTE_E2 82#define NOTE_F2 87#define NOTE_FS2 93#define NOTE_G2 98#define NOTE_GS2 104#define NOTE_A2 110#define NOTE_AS2 117#define NOTE_B2 123#define NOTE_C3 131#define NOTE_CS3 139#define NOTE_D3 147#define NOTE_DS3 156#define NOTE_E3 165#define NOTE_F3 175#define NOTE_FS3 185#define NOTE_G3 196#define NOTE_GS3 208#define NOTE_A3 220#define NOTE_AS3 233#define NOTE_B3 247#define NOTE_C4 262#define NOTE_CS4 277#define NOTE_D4 294#define NOTE_DS4 311#define NOTE_E4 330#define NOTE_F4 349#define NOTE_FS4 370#define NOTE_G4 392#define NOTE_GS4 415#define NOTE_A4 440#define NOTE_AS4 466#define NOTE_B4 494#define NOTE_C5 523#define NOTE_CS5 554#define NOTE_D5 587#define NOTE_DS5 622#define NOTE_E5 659#define NOTE_F5 698#define NOTE_FS5 740#define NOTE_G5 784#define NOTE_GS5 831#define NOTE_A5 880#define NOTE_AS5 932#define NOTE_B5 988#define NOTE_C6 1047#define NOTE_CS6 1109#define NOTE_D6 1175#define NOTE_DS6 1245#define NOTE_E6 1319#define NOTE_F6 1397#define NOTE_FS6 1480#define NOTE_G6 1568#define NOTE_GS6 1661#define NOTE_A6 1760#define NOTE_AS6 1865#define NOTE_B6 1976#define NOTE_C7 2093#define NOTE_CS7 2217#define NOTE_D7 2349#define NOTE_DS7 2489#define NOTE_E7 2637#define NOTE_F7 2794#define NOTE_FS7 2960#define NOTE_G7 3136#define NOTE_GS7 3322#define NOTE_A7 3520#define NOTE_AS7 3729#define NOTE_B7 3951#define NOTE_C8 4186#define NOTE_CS8 4435#define NOTE_D8 4699#define NOTE_DS8 4978#define CHOICE_OFF 0 //Used to control LEDs#define CHOICE_NONE 0 //Used to check buttons#define CHOICE_RED (1 Servo myservo; // create servo object to control a servo#define UNLOCK_POS 0#define LOCK_POS 90void setup(){myservo.attach(11); // attaches the servo on pin 9 to the servo object//Setup hardware inputs/outputs. These pins are defined in the hardware_versions header file//Enable pull ups on inputspinMode(BUTTON_RED, INPUT_PULLUP);pinMode(BUTTON_GREEN, INPUT_PULLUP);pinMode(BUTTON_BLUE, INPUT_PULLUP);pinMode(BUTTON_YELLOW, INPUT_PULLUP);pinMode(LED_RED, OUTPUT);pinMode(LED_GREEN, OUTPUT);pinMode(LED_BLUE, OUTPUT);pinMode(LED_YELLOW, OUTPUT);pinMode(BUZZER1, OUTPUT);pinMode(BUZZER2, OUTPUT);//Mode checkinggameMode = MODE_MEMORY; // By default, we’re going to play the memory game// Check to see if the lower right button is pressedif (checkButton() == CHOICE_YELLOW) play_beegees();// Check to see if upper right button is pressedif (checkButton() == CHOICE_GREEN){gameMode = MODE_BATTLE; //Put game into battle mode//Turn on the upper right (green) LEDsetLEDs(CHOICE_GREEN);toner(CHOICE_GREEN, 150);setLEDs(CHOICE_RED | CHOICE_BLUE | CHOICE_YELLOW); // Turn on the other LEDs until you release buttonwhile(checkButton() != CHOICE_NONE) ; // Wait for user to stop pressing button//Now do nothing. Battle mode will be serviced in the main routine}// play_winner(); // After setup is complete, say hello to the world}void loop() {attractMode(); // Blink lights while waiting for user to press a button// Indicate the start of game playsetLEDs(CHOICE_RED | CHOICE_GREEN | CHOICE_BLUE | CHOICE_YELLOW); // Turn all LEDs ondelay(1000);setLEDs(CHOICE_OFF); // Turn off LEDsdelay(250);if (gameMode == MODE_MEMORY){// Play memory game and handle resultif (play_memory() == true)play_winner(); // Player won, play winner toneselseplay_loser(); // Player lost, play loser tones}if (gameMode == MODE_BATTLE){play_battle(); // Play game until someone losesplay_loser(); // Player lost, play loser tones}}//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=//The following functions are related to game play only// Play the regular memory game// Returns 0 if player loses, or 1 if player winsboolean play_memory(void){randomSeed(millis()); // Seed the random generator with random amount of millis()gameRound = 0; // Reset the game to the beginningwhile (gameRound (buzz_delay_us * 2)){buzz_length_us -= buzz_delay_us * 2; //Decrease the remaining play time// Toggle the buzzer at various speedsdigitalWrite(BUZZER1, LOW);digitalWrite(BUZZER2, HIGH);delayMicroseconds(buzz_delay_us);digitalWrite(BUZZER1, HIGH);digitalWrite(BUZZER2, LOW);delayMicroseconds(buzz_delay_us);}}// Play the winner sound and lightsvoid play_winner(void){setLEDs(CHOICE_GREEN | CHOICE_BLUE);winner_sound();}// Play the winner sound// This is just a unique (annoying) sound we came up with, there is no magic to itvoid winner_sound(void){myservo.write(LOCK_POS);myservo.write(UNLOCK_POS);delay (1000);myservo.write(LOCK_POS);// Toggle the buzzer at various speedsfor (byte x = 250 ; x > 70 ; x–){for (byte y = 0 ; y < 3 ; y ){digitalWrite(BUZZER2, HIGH);digitalWrite(BUZZER1, LOW);delayMicroseconds(x);digitalWrite(BUZZER2, LOW);digitalWrite(BUZZER1, HIGH);delayMicroseconds(x);}}// wait 1/2 second for door to opendelay(500);}// Play the loser sound/lightsvoid play_loser(void){setLEDs(CHOICE_RED | CHOICE_GREEN);buzz_sound(255, 1500);setLEDs(CHOICE_BLUE | CHOICE_YELLOW);buzz_sound(255, 1500);setLEDs(CHOICE_RED | CHOICE_GREEN);buzz_sound(255, 1500);setLEDs(CHOICE_BLUE | CHOICE_YELLOW);buzz_sound(255, 1500);}// Show an "attract mode" display while waiting for user to press button.void attractMode(void){while(1){setLEDs(CHOICE_RED);delay(100);if (checkButton() != CHOICE_NONE) return;setLEDs(CHOICE_BLUE);delay(100);if (checkButton() != CHOICE_NONE) return;setLEDs(CHOICE_GREEN);delay(100);if (checkButton() != CHOICE_NONE) return;setLEDs(CHOICE_YELLOW);delay(100);if (checkButton() != CHOICE_NONE) return;}}//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=// The following functions are related to Beegees Easter Egg only// Notes in the melody. Each note is about an 1/8th note, "0"s are rests.int melody[] = {NOTE_G4, NOTE_A4, 0, NOTE_C5, 0, 0, NOTE_G4, 0, 0, 0,NOTE_E4, 0, NOTE_D4, NOTE_E4, NOTE_G4, 0,NOTE_D4, NOTE_E4, 0, NOTE_G4, 0, 0,NOTE_D4, 0, NOTE_E4, 0, NOTE_G4, 0, NOTE_A4, 0, NOTE_C5, 0};int noteDuration = 115; // This essentially sets the tempo, 115 is just about right for a disco groove :)int LEDnumber = 0; // Keeps track of which LED we are on during the beegees loop// Do nothing but play bad beegees music// This function is activated when user holds bottom right button during power upvoid play_beegees(){//Turn on the bottom right (yellow) LEDsetLEDs(CHOICE_YELLOW);toner(CHOICE_YELLOW, 150);setLEDs(CHOICE_RED | CHOICE_GREEN | CHOICE_BLUE); // Turn on the other LEDs until you release buttonwhile(checkButton() != CHOICE_NONE) ; // Wait for user to stop pressing buttonsetLEDs(CHOICE_NONE); // Turn off LEDsdelay(1000); // Wait a second before playing songdigitalWrite(BUZZER1, LOW); // setup the "BUZZER1" side of the buzzer to stay low, while we play the tone on the other pin.while(checkButton() == CHOICE_NONE) //Play song until you press a button{// iterate over the notes of the melody:for (int thisNote = 0; thisNote 70 ; x–){for (byte y = 0 ; y 3) LEDnumber = 0; // Wrap the counter if needed}













