X-Git-Url: http://git.harvie.cz/?p=mirrors%2FPrograms.git;a=blobdiff_plain;f=arduino%2Fexit-rum%2Fexit-rum.ino;fp=arduino%2Fexit-rum%2Fexit-rum.ino;h=0000000000000000000000000000000000000000;hp=bffa260b446be12a6320307d9c42b94b3f39402e;hb=de8021a10a2d637bb82fcfbf59ab419605f2ae0e;hpb=46a1695823fd4553a6f481c65b2594340d99dbc4 diff --git a/arduino/exit-rum/exit-rum.ino b/arduino/exit-rum/exit-rum.ino deleted file mode 100644 index bffa260..0000000 --- a/arduino/exit-rum/exit-rum.ino +++ /dev/null @@ -1,197 +0,0 @@ -/* - * Exit Rum - * (c) Tomas 'Harvie' Mudrunka 2016 - */ - -#include -#include -#include - -#define TIMEOUT 300 -#define BEEP_FREQ 3000 -#define BEEP_LEN 50 - -#define P_NASLAP 12 -#define P_PIEZO 35 -#define P_RELAY_1 9 -#define P_RELAY_2 8 -#define P_LEDSEG_CLK 2 -#define P_LEDSEG_DIO 3 -#define P_LEDSTRIP 11 - -TM1637Display display(P_LEDSEG_CLK, P_LEDSEG_DIO); -LiquidCrystal_I2C lcd(0x3F, 16, 2); //i2c addr, chars, lines - -#define JBASE 38 -#define JCOUNT 16 - -#define J_A 0 -#define J_B 2 -#define J_C 4 -#define J_D 6 -#define J_E 8 -#define J_F 10 -#define J_G 12 -#define J_H 14 -#define J_1 1 -#define J_2 3 -#define J_3 5 -#define J_4 7 -#define J_5 9 -#define J_6 11 -#define J_7 13 -#define J_8 15 - -boolean jumpers_read[JCOUNT][JCOUNT] = {0}, jumpers_secret[JCOUNT][JCOUNT] = {0}; - -void jumper_store(int a, int b, boolean c) { - jumpers_secret[min(a,b)][max(a,b)]=c; -} - -void sound(char sndpin, float freq, float duration) { //Play bit-bang sound - if(duration<=0) return; if(freq<=0) { delay(duration); return; } - freq=((1000000/2)/freq); //Convert freq to delay (us) - duration*=1000; //Convert duration to us - pinMode(sndpin, OUTPUT); - for(;duration>0;duration-=2*freq) { - digitalWrite(sndpin, HIGH); delayMicroseconds(freq); - digitalWrite(sndpin, LOW); delayMicroseconds(freq); - } - pinMode(sndpin, INPUT); //Close pin to avoid noise (optional) -} - -int check_jumpers() { - int i, j, check = 0, fail = 0; - - for(i=0;i"); - Serial.print(JBASE+j, DEC); - if(jumpers_secret[i][j]) { - Serial.print("!"); - } else { - fail++; - } - Serial.print(", "); - } - } - pinMode(JBASE+i, INPUT_PULLUP); - } - Serial.println(); - check = fail ? -check : check; - Serial.println(check, DEC); - return check; -} - -void setup() { - jumper_store(J_A, J_5, true); - jumper_store(J_B, J_4, true); - jumper_store(J_C, J_7, true); - jumper_store(J_D, J_2, true); - jumper_store(J_E, J_6, true); - jumper_store(J_F, J_8, true); - jumper_store(J_G, J_1, true); - jumper_store(J_H, J_3, true); - - pinMode(P_NASLAP, INPUT_PULLUP); - pinMode(P_RELAY_1, OUTPUT); - pinMode(P_RELAY_2, OUTPUT); - pinMode(P_LEDSTRIP, OUTPUT); - - Serial.begin(9600); - lcd.begin(); -} - -#define seconds_display(seconds) ((((seconds)/60)*100)+((seconds)%60)) - -// the loop function runs over and over again forever -void loop() { - Serial.println("Inicializace systemu..."); - - lcd.backlight(); - lcd.clear(); - lcd.print(" (c) SPOJE.NET"); - lcd.setCursor(0,1); - lcd.print("Tomas@MudrunkaCZ"); - - display.setBrightness(0x0f); - display.setColon(true); - display.showNumberDec(2323); - - delay(5000); - - lcd.noDisplay(); - lcd.noBacklight(); - display.setBrightness(0x00); - - display.setBrightness(0); - display.showNumberDec(0); - - analogWrite(P_LEDSTRIP, 0); - digitalWrite(P_RELAY_1, HIGH); - digitalWrite(P_RELAY_2, HIGH); - - sound(P_PIEZO, BEEP_FREQ, BEEP_LEN); - delay(BEEP_LEN); - sound(P_PIEZO, BEEP_FREQ, BEEP_LEN); - Serial.println("Cekam na aktivaci..."); - while(digitalRead(P_NASLAP)); - - Serial.println("Sekvence aktivovana!"); - - display.setBrightness(0x0f); - for(int i=0;i<70;i++) { - sound(P_PIEZO, random(500,10000), random(10,100)); - display.showNumberDec(random(1000,9999)); - analogWrite(P_LEDSTRIP, random(0,255)); - } - sound(P_PIEZO, BEEP_FREQ, 2000); - - Serial.println("Odpocet aktivovan!"); - int timer = TIMEOUT; - while(check_jumpers() != 8) { - Serial.print("Zbyva: "); - Serial.print(timer, DEC); - Serial.println(" sekund"); - if(timer <= 0) { - digitalWrite(P_RELAY_1, LOW); - } - display.setColon(timer%2); - display.showNumberDec(seconds_display(timer)); - analogWrite(P_LEDSTRIP, map(timer%5, 0, 4, 255, 10)); - digitalWrite(P_RELAY_2, timer%2); - if(timer>0) { - timer--; - sound(P_PIEZO, BEEP_FREQ, BEEP_LEN); - delay(1000-BEEP_LEN); - } else { - analogWrite(P_LEDSTRIP, random(0,255)); - sound(P_PIEZO, random(500,10000), random(100,1000)); - } - } - - Serial.println("Odpocet zastaven."); - display.setColon(true); - display.showNumberDec(seconds_display(timer)); - analogWrite(P_LEDSTRIP, 0); - digitalWrite(P_RELAY_1, HIGH); - - //Muhammad Ismáil Árifi - lcd.clear(); - lcd.print(" Muhammad"); - lcd.setCursor(0,1); - lcd.print(" Ismail Arifi"); - lcd.backlight(); - lcd.display(); - - Serial.println("Cekam na reset..."); - //while(digitalRead(P_NASLAP)); - while(check_jumpers() != 0) delay(1000); -}