Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /************************
- * Author:
- * Kolpakov Vladimir aka Al'Ninyo
- * http://alninyo.ru
- * 25.08.2016
- ************************/
- #define greenLed 19 // пин подключения зелёного светодиода A5
- #define redLed 18 // пин подключения красного светодиода A4
- #define push HIGH // на какое состояние кнопки реагировать HIGH или LOW
- #define relay1 A0 // пин подключения реле 1
- #define relay2 A1 // пин подключения реле 2 (не используется в этой версии)
- #define buzzerPin A3 // пин подключения пищалки
- #define checkButton A2 // пин подключения кнопки проверки кода
- int buttonPins[] = {2,3,4,5,6,7}; // пины подключения кнопок
- boolean buttonState[] = {0,0,0,0,0,0}; // состояние кнопок. 0 = не нажата, 1 = нажата
- int rightCode[] = {1,1,1,0,1,0}; // правильное состояние тумблеров
- int ledPins[] = {8,9,10,11,12,13}; // пины подключения светодиодов над тумблерами
- int S; // служебная переменная
- int melody[] = {
- 262, 196, 196, 220, 196, 0, 247, 262
- };
- int noteDurations[] = {
- 4, 8, 8, 4, 4, 4, 4, 4
- };
- void winMusic() {
- for (int thisNote = 0; thisNote < 8; thisNote++) {
- int noteDuration = 1000 / noteDurations[thisNote];
- tone(buzzerPin, melody[thisNote], noteDuration);
- int pauseBetweenNotes = noteDuration * 1.30;
- delay(pauseBetweenNotes);
- noTone(buzzerPin);
- }
- }
- void setup() {
- for (int i = 0; i < 6; i++) {
- pinMode(buttonPins[i], INPUT);
- pinMode(ledPins[i], OUTPUT);
- digitalWrite(ledPins[i], LOW);
- }
- pinMode(checkButton, INPUT);
- pinMode(relay1, OUTPUT);
- pinMode(relay2, OUTPUT);
- pinMode(buzzerPin, OUTPUT);
- pinMode(greenLed, OUTPUT);
- pinMode(redLed, OUTPUT);
- digitalWrite(greenLed, LOW);
- digitalWrite(redLed, HIGH);
- digitalWrite(relay1, LOW);
- }
- void loop() {
- for (int i = 0; i < 6; i++) {
- digitalWrite(ledPins[i], digitalRead(buttonPins[i]));
- }
- if (digitalRead(checkButton) == HIGH) {
- delay(20);
- for (int i = 0; i < 6; i++) {
- if (digitalRead(buttonPins[i]) == push) {
- buttonState[i] = 1;
- delay(10);
- }
- }
- for (int i = 0; i < 6; i++) {
- if (buttonState[i] == rightCode[i]) {
- S = S+1;
- }
- else {
- S = S-1;
- }
- }
- if (S == 6) {
- for (int i = 0; i < 6; i++) {
- buttonState[i] = 0;
- }
- S = 0;
- digitalWrite(greenLed, HIGH);
- digitalWrite(redLed, LOW);
- winMusic();
- delay(500); //горит зелёный
- digitalWrite(relay1, HIGH);
- delay(1000);
- digitalWrite(relay1, LOW);
- delay(10000);
- digitalWrite(greenLed, LOW);
- digitalWrite(redLed, HIGH);
- for (int i = 0; i < 6; i++) {
- digitalWrite(ledPins[i], LOW);
- }
- } else {
- S = 0;
- tone(buzzerPin, 200, 1000);
- delay(500);
- noTone(buzzerPin);
- for (int i = 0; i < 5; i++) {
- digitalWrite(redLed, HIGH);
- delay(300);
- digitalWrite(redLed, LOW);
- delay(300);
- }
- digitalWrite(redLed, HIGH);
- delay(5000); //ожидание после неправильного кода
- for (int i = 0; i < 6; i++) {
- digitalWrite(ledPins[i], LOW);
- buttonState[i] = 0;
- }
- digitalWrite(greenLed, HIGH);
- delay(500);
- digitalWrite(greenLed, LOW);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement