Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int pinKey1 = 3; // установим пины для кнопок
- const int pinKey2 = 4;
- const int pinKey3 = 5;
- const int pinKey4 = 6;
- const int pinKey5 = 7;
- const int pinKey6 = 8;
- const int pinKey7 = 9;
- const int pinKey8 = 10;
- const int pinLed1 = 11; // установим пины для сетодиодов
- const int pinLed2 = 12;
- const int pinLed3 = 14;
- const int pinLed4 = 15;
- const int pinLed5 = 16;
- const int pinLed6 = 17;
- const int pinLed7 = 18;
- const int pinLed8 = 19;
- int modeWork = 1; // зададим переменные режимам работы
- const int modePiano = 1;
- const int modeTask = 2;
- const int modeGame = 3;
- const int modeLightForwardBack = 4;
- const int modeLightForwardWhenPressKey = 5;
- const int modeLightForwardBackwardFromKey = 6;
- const int modeLightUpDownWhenPressKey = 7;
- int resetStep = 1 ; //переменная сброса шагов
- int currentStep = 1 ; // переменная номера шага алгоритма
- void setup() {
- // attachInterrupt(0, changeModeFunction, RISING); // прерывание на ножке 2 - кнопка смены режима
- // put your setup code here, to run once:
- pinMode(pinKey1, INPUT_PULLUP); //установим все пины кнопок на вход
- pinMode(pinKey2, INPUT_PULLUP);
- pinMode(pinKey3, INPUT_PULLUP);
- pinMode(pinKey4, INPUT_PULLUP);
- pinMode(pinKey5, INPUT_PULLUP);
- pinMode(pinKey6, INPUT_PULLUP);
- pinMode(pinKey7, INPUT_PULLUP);
- pinMode(pinKey8, INPUT_PULLUP);
- pinMode(pinLed1, OUTPUT); //установим все пины светодиодов на выход
- pinMode(pinLed2, OUTPUT);
- pinMode(pinLed3, OUTPUT);
- pinMode(pinLed4, OUTPUT);
- pinMode(pinLed5, OUTPUT);
- pinMode(pinLed6, OUTPUT);
- pinMode(pinLed7, OUTPUT);
- pinMode(pinLed8, OUTPUT);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- Serial.println("loop");
- if (resetStep == 1) { currentStep=1 ; resetStep=0; }
- //switch (modeWork) { // выполним функцию в зависимости от текущего режима работы
- // case 1: MusicMode(modePiano); break;
- // case 2: MusicMode(modeTask); break;
- // case 3: MusicMode(modeGame); break;
- // case 4: LightMode(modeLightForwardBack); break;
- // case 5: LightMode(modeLightForwardWhenPressKey); break;
- // case 6: LightMode(modeLightForwardBackwardFromKey); break;
- // case 7: LightMode(modeLightUpDownWhenPressKey); break;
- // }
- checkKeyFunction();
- delay(50);
- currentStep++; //увеличим шаг на единицу
- }
- //тут мои функции:
- void playingFunction(int pressedKey){ //функция получает номер нажатой кнопки и воспроизводит соответствующий сэмпл и включает соответствующий диод, и гасит остальные диоды
- switch(pressedKey) {
- case pinKey1: digitalWrite(pinLed1, HIGH); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW); break;
- case pinKey2: digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, HIGH); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW); break;
- case pinKey3: digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, HIGH); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW); break;
- case pinKey4: digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, HIGH); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW); break;
- case pinKey5: digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, HIGH); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW); break;
- case pinKey6: digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, HIGH); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW); break;
- case pinKey7: digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, HIGH); digitalWrite(pinLed8, LOW); break;
- case pinKey8: digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, HIGH); break;
- }
- return;
- }
- void checkKeyFunction() // функция проверяет какая кнопка нажата и вызывает соответствующую нажатой кнопке функцию, если не одна - то тушит все диоды
- {
- if (digitalRead(pinKey1) ==LOW) playingFunction(pinKey1);
- else if (digitalRead(pinKey2) == LOW) playingFunction(pinKey2);
- else if (digitalRead(pinKey3) == LOW) playingFunction(pinKey3);
- else if (digitalRead(pinKey4) == LOW) playingFunction(pinKey4);
- else if (digitalRead(pinKey5) == LOW) playingFunction(pinKey5);
- else if (digitalRead(pinKey6) == LOW) playingFunction(pinKey6);
- else if (digitalRead(pinKey7) == LOW) playingFunction(pinKey7);
- else if (digitalRead(pinKey8) == LOW) playingFunction(pinKey8);
- else { digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW);}
- return;
- }
- int LightMode(int checkLightMode)
- {
- if (checkLightMode == modeLightForwardBack) {
- switch (currentStep) { // выполним функцию в зависимости от текущего режима работы
- case 1: digitalWrite(pinLed1, HIGH); digitalWrite(pinLed2, LOW); break;
- case 2: digitalWrite(pinLed2, HIGH); digitalWrite(pinLed1, LOW); break;
- case 3: digitalWrite(pinLed3, HIGH); digitalWrite(pinLed2, LOW); break;
- case 4: digitalWrite(pinLed4, HIGH); digitalWrite(pinLed3, LOW); break;
- case 5: digitalWrite(pinLed5, HIGH); digitalWrite(pinLed4, LOW); break;
- case 6: digitalWrite(pinLed6, HIGH); digitalWrite(pinLed5, LOW); break;
- case 7: digitalWrite(pinLed7, HIGH); digitalWrite(pinLed6, LOW); break;
- case 8: digitalWrite(pinLed8, HIGH); digitalWrite(pinLed7, LOW); break;
- case 9: digitalWrite(pinLed7, HIGH); digitalWrite(pinLed8, LOW); break;
- case 10: digitalWrite(pinLed6, HIGH); digitalWrite(pinLed7, LOW); break;
- case 11: digitalWrite(pinLed5, HIGH); digitalWrite(pinLed6, LOW); break;
- case 12: digitalWrite(pinLed4, HIGH); digitalWrite(pinLed5, LOW); break;
- case 13: digitalWrite(pinLed3, HIGH); digitalWrite(pinLed4, LOW); break;
- case 14: digitalWrite(pinLed2, HIGH); digitalWrite(pinLed3, LOW);
- default: currentStep =1;
- }
- }
- }
- int MusicMode(int checkLightMode){ delay(1); }
- void changeModeFunction(){ //функция срабатывает по прерыванию и меняет режим на следующий
- modeWork++;
- resetStep = 1 ;
- digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); digitalWrite(pinLed4, LOW); digitalWrite(pinLed5, LOW); digitalWrite(pinLed6, LOW); digitalWrite(pinLed7, LOW); digitalWrite(pinLed8, LOW);
- if (modeWork>=8) modeWork =1;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement