You need:
Arduino UNO R3
4 digits 7-segments display with TM1637 driver
Buzzer
2 Leds - green and red with 2 risistors
Button
wires
Sketch
/*Автор Saftik Bomba_v1.0муляж бомбы для фильма.ИДЕОЛОГИЯ:Изначально на дисплее 30 минут.кнопкой Btn_+minute прибовляю + 1 минуту.кнопкой Btn_-minute убираю - 1 минуту.кнопкой Start запускаем таймер.провод Stop = остановкапровод Speed = ускоряет отсчетпровод Provod_minus_polovina= половина минут убрать*/#define Btn_plus_minute 7#define Btn_minus_minute 6#define Btn_Start_minute 8#define Provod_Stop A3#define Provod_Speed A4#define Provod_minus_polovina A5#define ledPin 13#define greenLed 9#define redLed 10#define BUZZER_PIN 3int timerFlag = 0;int duration = 5;int uskorenie = 1;boolean polovinaFlag = 0;//===================================================== display#include "TM1637.h" // библиотека дисплея#define DISPLAY_CLK_PIN 11 // на других пинах криво работает#define DISPLAY_DIO_PIN 12TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);unsigned char hour = 0;unsigned char minute = 30; // первоначальное времяunsigned char second = 0;unsigned char milisecond = 0;unsigned char halfsecond = 0;//=====================================================unsigned long timeTimer = 0;unsigned long startTimer = 0;//=====================================================void setup() {display.set(3); //Включаем и настраиваем индикатор в скобках (яркость 0-7)display.init(); //Получаем число из строки, зная номер первого символа// Serial.begin(9600);pinMode(Btn_plus_minute, INPUT_PULLUP);pinMode(Btn_minus_minute, INPUT_PULLUP);pinMode(Btn_Start_minute, INPUT_PULLUP);pinMode(ledPin, OUTPUT);pinMode(greenLed, OUTPUT);pinMode(redLed, OUTPUT);// пин с пьезопищалкой — выход...pinMode(BUZZER_PIN, OUTPUT);beep(50);beep(50);beep(50);}void loop() {opros_knopok();timer();displey();}void opros_knopok() {if (digitalRead(Btn_plus_minute) == LOW) {delay (250), duration++;}if (digitalRead(Btn_minus_minute) == LOW) {delay (250), duration--;if (duration == 0) {duration = 60;}}if (digitalRead(Btn_Start_minute) == LOW) {delay (250); timerFlag = 1; digitalWrite(redLed, HIGH); digitalWrite(greenLed, LOW);uskorenie = 500; polovinaFlag = 0; startTimer = millis();}if (analogRead(Provod_Stop) > 20) {delay (150), timerFlag = 0;digitalWrite(redLed, LOW);digitalWrite(greenLed, HIGH);playmario();}if (analogRead(Provod_Speed) > 20) {uskorenie = 15;}if (analogRead(Provod_minus_polovina) > 20 && duration > 2 && polovinaFlag == 0) {delay (50);duration /= 2; polovinaFlag = 1;}}void timer() {if (timerFlag == 1) {timeTimer = (millis() - startTimer);if (timeTimer >= uskorenie) {halfsecond ++;startTimer = millis();}if (halfsecond == 2) {halfsecond = 0, second-- ;beep(100);}if (second == 0) {second = 59, duration--;}}if (timerFlag == 1 && duration == -1) {second = 0;startTimer = 0;duration = 0;timeTimer = 0;timerFlag = 0;digitalWrite(ledPin, HIGH);polovinaFlag = 0;analogWrite(BUZZER_PIN, 1);}}void displey() {hour = duration / 60;minute = duration - (hour * 60);if (duration >= 60) {int8_t timeDisp[4];timeDisp[0] = hour / 10;timeDisp[1] = hour % 10;timeDisp[2] = minute / 10;timeDisp[3] = minute % 10;display.display(timeDisp);if (halfsecond == 1) {display.point(POINT_ON);beep(100);}else{ display.point(POINT_OFF);}// display.point(halfsecond ==1 ? POINT_OFF : POINT_ON);}if (duration < 60 && duration >= 1) {int8_t timeDisp[4];timeDisp[0] = minute / 10;timeDisp[1] = minute % 10;timeDisp[2] = second / 10;timeDisp[3] = second % 10;display.display(timeDisp);display.point(halfsecond == 1 ? POINT_OFF : POINT_ON);}if (duration < 1) {milisecond = (timeTimer - hour * 3600 - minute * 60 - second) % 100;// Serial.println (milisecond);int8_t timeDisp[4];timeDisp[0] = second / 10;timeDisp[1] = second % 10;timeDisp[2] = milisecond / 10;timeDisp[3] = milisecond % 10;display.display(timeDisp);display.point(halfsecond == 1 ? POINT_OFF : POINT_ON);}}void beep(unsigned char delayms) {analogWrite(BUZZER_PIN, 200); // Almost any value can be used except 0 and 255// experiment to get the best tonedelay(delayms); // wait for a delayms msanalogWrite(BUZZER_PIN, 0); // 0 turns it offdelay(delayms); // wait for a delayms ms}void playmario() {tone(BUZZER_PIN,1318,150);delay(150);tone(BUZZER_PIN,1318,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1318,300);delay(300);tone(BUZZER_PIN,1568,600);delay(600);tone(BUZZER_PIN,784,600);delay(600);tone(BUZZER_PIN,1046,450) ; // 2й тактdelay(450);tone(BUZZER_PIN,784,150);delay(450);tone(BUZZER_PIN,659,300);delay(450);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,987,150);delay(300);tone(BUZZER_PIN,932,150);delay(150);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,784,210); // 3й тактdelay(210);tone(BUZZER_PIN,1318,210);delay(210);tone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1750,300);delay(300);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1568,150);delay(300);tone(BUZZER_PIN,1318,300);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);tone(BUZZER_PIN,987,450);delay(450);tone(BUZZER_PIN,1046,450); // 4й тактdelay(450);tone(BUZZER_PIN,784,150);delay(450);tone(BUZZER_PIN,659,300);delay(450);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,987,150);delay(300);tone(BUZZER_PIN,932,150);delay(150);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,784,210); // 5й тактdelay(210);tone(BUZZER_PIN,1318,210);delay(210);tone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1750,300);delay(300);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1568,150);delay(300);tone(BUZZER_PIN,1318,300);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);tone(BUZZER_PIN,987,450);delay(600);tone(BUZZER_PIN,1568,150); // 6ой Спуск внизdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);delay(300); // 7ойtone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,2093,300);delay(300);tone(BUZZER_PIN,2093,150);delay(150);tone(BUZZER_PIN,2093,600);delay(600);tone(BUZZER_PIN,1568,150); // 6ой Спуск вниз ПОВТОРdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(450);tone(BUZZER_PIN,1244,300);delay(450);tone(BUZZER_PIN,1174,450);delay(450);tone(BUZZER_PIN,1046,600);delay(1200 );tone(BUZZER_PIN,1568,150); // 6ой Спуск внизdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);delay(300); // 7ойtone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,2093,300);delay(300);tone(BUZZER_PIN,2093,150);delay(150);tone(BUZZER_PIN,2093,600);delay(600);tone(BUZZER_PIN,1568,150); // 6ой Спуск вниз ПОВТОРdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(450);tone(BUZZER_PIN,1244,300);delay(450);tone(BUZZER_PIN,1174,450);delay(450);tone(BUZZER_PIN,1046,600);delay(1200);tone(BUZZER_PIN,1046,150); // 8ой тактdelay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1318,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,784,600);delay(600);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1318,150);delay(150);delay(1200);tone(BUZZER_PIN,1046,150); // 8ой тактdelay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1318,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,784,600);delay(600);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1318,150);delay(150);delay(1200);tone(BUZZER_PIN,1046,450) ; // 2й тактdelay(450);tone(BUZZER_PIN,784,150);delay(450);tone(BUZZER_PIN,659,300);delay(450);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,987,150);delay(300);tone(BUZZER_PIN,932,150);delay(150);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,784,210); // 3й тактdelay(210);tone(BUZZER_PIN,1318,210);delay(210);tone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1750,300);delay(300);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1568,150);delay(300);tone(BUZZER_PIN,1318,300);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);tone(BUZZER_PIN,987,450);delay(450);tone(BUZZER_PIN,1046,450); // 4й тактdelay(450);tone(BUZZER_PIN,784,150);delay(450);tone(BUZZER_PIN,659,300);delay(450);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,987,150);delay(300);tone(BUZZER_PIN,932,150);delay(150);tone(BUZZER_PIN,880,300);delay(300);tone(BUZZER_PIN,784,210); // 5й тактdelay(210);tone(BUZZER_PIN,1318,210);delay(210);tone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1750,300);delay(300);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1568,150);delay(300);tone(BUZZER_PIN,1318,300);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);tone(BUZZER_PIN,987,450);delay(600);tone(BUZZER_PIN,1568,150); // 6ой Спуск внизdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);delay(300); // 7ойtone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,2093,300);delay(300);tone(BUZZER_PIN,2093,150);delay(150);tone(BUZZER_PIN,2093,600);delay(600);tone(BUZZER_PIN,1568,150); // 6ой Спуск вниз ПОВТОРdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(450);tone(BUZZER_PIN,1244,300);delay(450);tone(BUZZER_PIN,1174,450);delay(450);tone(BUZZER_PIN,1046,600);delay(1200 );tone(BUZZER_PIN,1568,150); // 6ой Спуск внизdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(150);delay(300); // 7ойtone(BUZZER_PIN,1568,150);delay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,2093,300);delay(300);tone(BUZZER_PIN,2093,150);delay(150);tone(BUZZER_PIN,2093,600);delay(600);tone(BUZZER_PIN,1568,150); // 6ой Спуск вниз ПОВТОРdelay(150);tone(BUZZER_PIN,1480,150);delay(150);tone(BUZZER_PIN,1396,150);delay(150);tone(BUZZER_PIN,1244,300);delay(300);tone(BUZZER_PIN,1318,150);delay(300);tone(BUZZER_PIN,830,150);delay(150);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,150);delay(450);tone(BUZZER_PIN,1244,300);delay(450);tone(BUZZER_PIN,1174,450);delay(450);tone(BUZZER_PIN,1046,600);delay(1200);tone(BUZZER_PIN,1046,150); // 8ой тактdelay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1318,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,784,600);delay(600);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1318,150);delay(150);delay(1200);tone(BUZZER_PIN,1046,150); // 8ой тактdelay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1318,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,880,150);delay(150);tone(BUZZER_PIN,784,600);delay(600);tone(BUZZER_PIN,1046,150);delay(150);tone(BUZZER_PIN,1046,300);delay(300);tone(BUZZER_PIN,1046,150);delay(300);tone(BUZZER_PIN,784,150);delay(150);tone(BUZZER_PIN,1174,300);delay(300);tone(BUZZER_PIN,1046,2400);delay(24000);delay(1200);}
Комментариев нет:
Отправить комментарий