Advertisement
Aveneid

Untitled

May 20th, 2018
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.28 KB | None | 0 0
  1. /*
  2.     config  pins
  3.     2: cancel
  4.     3: +
  5.     4: -
  6.     5: confirm
  7.     11: buzzer
  8. */
  9.  
  10.  
  11. #include "SevenSegmentTM1637.h"
  12. #include "pitches.h"
  13. SevenSegmentTM1637    display(12, 11);
  14.  
  15. short armed = 0, timevar[] = {0, 0, 0, 0}, pinstate[] = {0, 0, 0, 0}; //czy uzbrojony , tablica wartosci czasu (dziesiatki minut, jednostki minut, dziesiatki sekund, jednostki sekund), stan pinow
  16. short digitsleft = 3; //ilosc cyfr do wprowadzenia -1
  17. unsigned long cur = 0, start = 0; //do obliczania czasu
  18. /*
  19.   int melody[] = {
  20.   NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
  21.   }; //nie istotne
  22.   int noteDurations[] = {
  23.   4, 8, 8, 4, 4, 4, 4, 4
  24.   };*/
  25.  
  26. void setup() {
  27.   Serial.begin(9600);
  28.  
  29.   display.begin();
  30.   // display.print("INIT");
  31.   // display.blink();
  32.   pinMode(7, INPUT); pinMode(6, INPUT);  pinMode(5, INPUT);  pinMode(4, INPUT);
  33.  
  34.   // display.print("DONE");
  35.   // delay(1000);
  36.   display.clear();
  37.  
  38. }
  39.  
  40. void loop() {
  41.   pinstate[0] = digitalRead(7); pinstate[1] = digitalRead(6);  pinstate[2] = digitalRead(5);  pinstate[3] = digitalRead(4);
  42.  
  43.   if (!armed) {
  44.   //konfiguracja czasu zapalnika
  45.  
  46.     if (pinstate[0] == 1) {
  47.       digitsleft -= 1;
  48.       if (digitsleft < 0) {
  49.         armed = 1;
  50.         start = millis();
  51.       }
  52.       delay(500);
  53.     }
  54.  
  55.     if (pinstate[1] == 1) {
  56.       timevar[digitsleft] += 1;
  57.       if (timevar[3] > 5)
  58.         timevar[3] = 5;
  59.       if (timevar[2] > 9)
  60.         timevar[2] = 9;
  61.       if (timevar[1] > 5)
  62.         timevar[1] = 5;
  63.       if (timevar[0] > 9)
  64.         timevar[0] = 9;
  65.       delay(500);
  66.     }
  67.  
  68.     if (pinstate[2] == 1) {
  69.       timevar[digitsleft] -= 1;
  70.       if (timevar[digitsleft] < 0)
  71.         timevar[digitsleft] = 0;
  72.       delay(500);
  73.     }
  74.  
  75.     if (pinstate[3] == 1) {
  76.       digitsleft = 3;
  77.       for (int i = 0; i < 4; i++) {
  78.         timevar[i] = 0;
  79.       }
  80.       delay(500);
  81.     }
  82.   }
  83.   if (armed) {
  84.   //dzialanie wlasciwe
  85.     cur = millis();
  86.     if (cur - start >= 1000) {  //odlicza sekundke bez zatrzymywania
  87.       timevar[0] -= 1; ///////odejmowanie
  88.       start = cur;
  89.  
  90.       tone(8, NOTE_C4, 4);
  91.       noTone(8);
  92.  
  93.  
  94.  
  95.       //if (timevar[3] + timevar[2] + timevar[1] + timevar[0] > 0) {
  96.       if (timevar[0] < 0 && timevar[1] > 0) {
  97.         timevar[0] = 9;
  98.         timevar[1] -= 1;
  99.       }
  100.       if (timevar[1] < 0 && timevar[2] > 0) {
  101.         timevar[1] = 5;
  102.         timevar[2] -= 1;
  103.       }
  104.       if (timevar[2] < 0 && timevar[3] > 0) {
  105.         timevar[2] = 9;
  106.         timevar[3] -= 1;
  107.       }
  108.       if (timevar[3] < 0 ) {
  109.         timevar[3] = 0;
  110.       }
  111.       /* } else {
  112.          display.print("END");
  113.          display.blink();
  114.         }*/
  115.     }
  116.     //VVVVV nie istotne
  117.     Serial.println("data: "); Serial.print(timevar[0]); Serial.print(" "); Serial.print(timevar[1]); Serial.print(" "); Serial.print(timevar[2]); Serial.print(" "); Serial.print(timevar[3]);
  118.  
  119.   }
  120.   if (timevar[3] == 0) {
  121.     display.print((timevar[3] * 1000 + timevar[2] * 100 + timevar[1] * 10 + timevar[0]) / 1000);
  122.   }
  123.   else
  124.     display.print((timevar[3] * 1000 + timevar[2] * 100 + timevar[1] * 10 + timevar[0]));
  125.   if (pinstate[0] || pinstate[1] || pinstate[2] || pinstate[3]) {
  126.     tone(8, NOTE_C4, 4); delay(100); noTone(8);
  127.   }
  128.  
  129.   pinstate[0] = pinstate[1] = pinstate[2] = pinstate[3] = 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement