X-Git-Url: http://git.harvie.cz/?p=mirrors%2FPrograms.git;a=blobdiff_plain;f=arduino%2Fbomba2b%2Fbomba2b.ino;fp=arduino%2Fbomba2b%2Fbomba2b.ino;h=0000000000000000000000000000000000000000;hp=5c49c1cd7565987805639ade2883a9e00fd3dbd6;hb=de8021a10a2d637bb82fcfbf59ab419605f2ae0e;hpb=46a1695823fd4553a6f481c65b2594340d99dbc4 diff --git a/arduino/bomba2b/bomba2b.ino b/arduino/bomba2b/bomba2b.ino deleted file mode 100644 index 5c49c1c..0000000 --- a/arduino/bomba2b/bomba2b.ino +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Exit Rum 2 - * (c) Tomas 'Harvie' Mudrunka 2018 - */ - -//Nastaveni bomby - -#define DISARM_CODE "73138477" -#define TIME_COUNTDOWN 600 //600 -//#define TIME_COUNTDOWN 15 - -//Prirazeni pinu - -#define PIN_CABLE_CHECK 2 - -#define PIN_KEY_CLK 3 //IRQ! -#define PIN_KEY_DATA 4 - -#define PIN_LED_G 5 -#define PIN_LED_B 6 -#define PIN_LED_R 7 - -#define PIN_COIL_LO 10 -#define PIN_COIL_HI 11 - -#define ADDR_DISPLAY 0x70 - -////////////////////////////////////////////////////////////////// - -#define SOFTSERIAL - -#ifndef SOFTSERIAL -#include -PS2Keyboard keyboard; -#else -#include -SoftwareSerial mySerial(PIN_KEY_CLK, PIN_KEY_DATA); -#endif - -//#include // Enable this line if using Arduino Uno, Mega, etc. -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_7segment display = Adafruit_7segment(); - -#define cnt_sec(s) (s%60) -#define cnt_min(s) (s/60) -#define cnt_dec(s) (cnt_min(s)*100+cnt_sec(s)) - -void setup() -{ - //Pripravime periferie - Serial.begin(9600); - Serial.println("zaciname"); -#ifndef SOFTSERIAL - keyboard.begin(PIN_KEY_DATA, PIN_KEY_CLK); -#else - mySerial.begin(4800); -#endif - display.begin(ADDR_DISPLAY); - - pinMode(PIN_LED_R, OUTPUT); - pinMode(PIN_LED_G, OUTPUT); - pinMode(PIN_LED_B, OUTPUT); - pinMode(PIN_COIL_LO, OUTPUT); - pinMode(PIN_COIL_HI, OUTPUT); - pinMode(PIN_CABLE_CHECK, INPUT_PULLUP); -} - -int test_disarmed(int reset) -{ - - static int guessed = 0, disarmed = 0; - if (reset) { - guessed = 0; - disarmed = 0; - } - //Cteme klavesnici -#ifndef SOFTSERIAL - while (keyboard.available()) { - char c = keyboard.read(); - //Serial.print("Klavesa: "); - //Serial.println(c); -#else - while (mySerial.available()) { - char c = mySerial.read(); -#endif -#ifndef SOFTSERIAL - if (c == PS2_ENTER) { - Serial.println(); - } else { -#else - if(1) { -#endif - Serial.print(c); - } - - if (c < '0' || c > '9') { - Serial.println("IGNORED!"); - continue; - - } - if (c == DISARM_CODE[guessed]) { - guessed++; - Serial.println("\nGOT!"); - } else { - guessed = 0; - Serial.println("\nFAIL!"); - if (c == DISARM_CODE[guessed]) { - guessed++; - Serial.println("\nGOT!"); - } - } - if (DISARM_CODE[guessed] == 0) { - disarmed = 1; - Serial.println("\nDISARMED!"); - } - } - - return disarmed; - -} - -void loop() -{ - //Vynulujem periferie - digitalWrite(PIN_COIL_LO, LOW); - digitalWrite(PIN_COIL_HI, LOW); - analogWrite(PIN_LED_R, 0); - analogWrite(PIN_LED_G, 0); - analogWrite(PIN_LED_B, 0); - - display.clear(); - display.setBrightness(15); - display.writeDisplay(); - -#ifndef SOFTSERIAL - while (keyboard.available()) - keyboard.read(); -#else - while (mySerial.available()) - mySerial.read(); -#endif - test_disarmed(1); - - //Pockame na pripojeni kabelu - display.print(0xCAB1, HEX); - display.writeDisplay(); - while (digitalRead(PIN_CABLE_CHECK)) - delay(100); - - //Pockame na odpojeni kabelu - display.clear(); - display.writeDisplay(); - while (!digitalRead(PIN_CABLE_CHECK)) - delay(100); - - //Odpocitavame - for (int cnt = TIME_COUNTDOWN; cnt >= 0 && !test_disarmed(0); cnt--) { - display.print(cnt_dec(cnt), DEC); - display.drawColon((cnt + 1) % 2); - display.writeDisplay(); - - analogWrite(PIN_LED_R, random(0, 3)); - analogWrite(PIN_LED_G, random(0, 3)); - analogWrite(PIN_LED_B, random(0, 3)); - - //Tikani / pipani - tone(PIN_COIL_LO, 1000, 50); - delay(60); - digitalWrite(PIN_COIL_LO, HIGH); - delay(40); - digitalWrite(PIN_COIL_LO, LOW); - - delay(900); - - } - - - while (!test_disarmed(0)) { - //Bomba vybouchla - int i; - - analogWrite(PIN_LED_R, random(0, 255)); - analogWrite(PIN_LED_G, random(0, 0)); - analogWrite(PIN_LED_B, random(0, 255)); - - for (i = 0; i < 10; i++) - display.writeDigitRaw(i, random(0, 255)); - display.setBrightness(random(0, 15)); - display.writeDisplay(); - - digitalWrite(PIN_COIL_HI, HIGH); - delay(20); - digitalWrite(PIN_COIL_HI, LOW); - int rnd = random(30, 100); - tone(PIN_COIL_LO, random(100, 8000), rnd); - delay(rnd); - } - - - //Bomba byla deaktivovana - tone(PIN_COIL_LO, 3000, 500); - delay(500); - tone(PIN_COIL_LO, 5000, 500); - analogWrite(PIN_LED_R, 0); - analogWrite(PIN_LED_G, 0); - analogWrite(PIN_LED_B, 0); - display.print(0xDEFD, HEX); - display.writeDisplay(); - delay(1000); - - - //Pockame na zmenu kabelu - char s = digitalRead(PIN_CABLE_CHECK); - while (digitalRead(PIN_CABLE_CHECK) == s) - delay(100); - -}