| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #define CLK 2
- #define DIO 3
- #define RELEY_PIN 10
- #include "GyverTM1637.h"
- const int DISP_PIN = A1;
- int val = 0;
- int timer = 1;
- bool relayOpened = false;
- GyverTM1637 disp(CLK, DIO);
- void setup() {
- // put your setup code here, to run once:
- pinMode(RELEY_PIN, OUTPUT);
- closeRelay();
- Serial.begin(9600);
- disp.clear();
- disp.brightness(0);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- val = analogRead(DISP_PIN);
- switch (buttonFromValue(val))
- {
- case 1:
- addTimer();
- break;
- case 2:
- declineTimer();
- break;
- case 3:
- shoot();
- break;
- case 4:
- workingLight();
- break;
-
- }
- disp.displayInt(timer);
- }
- //Открывается по низкому сигналу, com с NO
- void openRelay()
- {
- digitalWrite(RELEY_PIN, LOW);
- relayOpened = true;
- }
- //Закрываясь замыкает com с NC
- void closeRelay(){
- digitalWrite(RELEY_PIN, HIGH);
- relayOpened = false;
- }
- void addTimer()
- {
- delay(500);
- if (buttonFromValue(analogRead(DISP_PIN)) == 1)
- {
- timer = timer * 2;
- }
- else
- {
- timer++;
- }
- }
- void declineTimer()
- {
- if(timer > 1)
- {
- delay(500);
- if (buttonFromValue(analogRead(DISP_PIN)) == 2)
- {
- timer = timer / 2;
- }
- else if (timer>1)
- {
- timer--;
- }
- }
- }
- void shoot()
- {
- closeRelay();
- int ms = timer * 1000;
- delay(1000);
- openRelay();
- while (ms>0)
- {
- delay(1000);
- ms = ms - 1000;
- disp.displayInt(ms/1000);
- }
- closeRelay();
-
- }
- void workingLight()
- {
- if ( relayOpened == true )
- {
- closeRelay();
- }
- else
- {
- openRelay();
- }
- delay(500);
-
- }
- byte buttonFromValue(int analogValue)
- {
- if (analogValue>950)
- {
- return 4;
- }
- if (analogValue > 713 && analogValue < 950)
- {
- return 3;
- }
- if (analogValue > 506 && analogValue < 713)
- {
- return 2;
- }
- if (analogValue > 200 && analogValue < 506)
- {
- return 1;
- }
- return 0;
-
- }
|