Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal_I2C.h>
- #include <Wire.h>
- #include <Keypad.h>
- const byte ROWS = 4;
- const byte COLS = 4;
- const int buzzerpin = 6;
- const int relaypin1 = 38;
- const int relayzamykanie = 37;
- const int relayzasilanieMD = 36;
- const int relayModuldzwiekowy = 35;
- const int relayTC = 34;
- const int relaysyrena = 33;
- const int relayotwieranie = 32;
- const int relaypin2 = 31;
- const int ROP =50 ;
- const int Klapy = 51;
- const int Czujnik = 52;
- const int zasilanie = 53;
- const int reset = 28;
- const int otwieranieczujnikiem = 27;
- const int PrzewietrzanieO = 26;
- const int PrzewietrzanieZ = 25;
- const int Alarmdioda = 48;
- const int zasilaniedioda = 49;
- const int uszkodzeniedioda = 47;
- bool buzzer = 0;
- bool K1 = 0;
- char keys[ROWS][COLS] = {
- {'1', '2', '3', 'A'},
- {'4', '5', '6', 'B'},
- {'7', '8', '9', 'C'},
- {'*', '0', '#', 'D'}
- };
- byte rowPins[ROWS] = {41, 40, 39, 38};
- byte colPins[COLS] = {45, 44, 43, 42};
- Keypad klawiatura = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
- LiquidCrystal_I2C lcd(0x27, 20, 4); // Adres I2C ekranu LCD: 0x27, 20 kolumn, 4 wiersze
- virtuabotixRTC myRTC(13, 12, 11); // Obiekt RTC, piny: SCLK - 13, I/O - 12, CE - 11
- char klawisz = 0; //zmienna do przetrzymywania znakow z klawiatury
- int pinDostepuPozycja = 0;
- int pinDostepu = 0;
- char pinCyfra1 = '1';
- char pinCyfra2 = '9';
- char pinCyfra3 = '9';
- char pinCyfra4 = '2';
- bool poziomDostepu=0;
- int wyswietlanyEkran = 1;
- unsigned long previousMillis = 0;
- void setup() {
- //initialize lcd screen
- lcd.init();
- // turn on the backlight
- lcd.backlight();
- // Ustawienie aktualnej daty i czasu na RTC
- //myRTC.setDS1302Time(15, 02, 20, 7, 9, 5, 2024); // Sekundy, minuty, godziny, dzień tygodnia, dzień miesiąca, miesiąc, rok
- pinMode(buzzerpin, OUTPUT);
- pinMode(relayotwieranie, OUTPUT);
- pinMode(relayzamykanie, OUTPUT);
- pinMode(relayzasilanieMD, OUTPUT);
- pinMode(relaysyrena, OUTPUT);
- pinMode(relayModuldzwiekowy, OUTPUT);
- pinMode(relayTC, OUTPUT);
- pinMode(relaypin1, OUTPUT);
- pinMode(relaypin2, OUTPUT);
- pinMode(Alarmdioda, OUTPUT);
- pinMode(uszkodzeniedioda, OUTPUT);
- pinMode(zasilaniedioda, OUTPUT);
- digitalWrite(buzzerpin, LOW);
- digitalWrite(relayotwieranie, HIGH);
- digitalWrite(relayzamykanie, HIGH);
- digitalWrite(relayzasilanieMD, HIGH);
- digitalWrite(relaysyrena, HIGH);
- digitalWrite(relayModuldzwiekowy, HIGH);
- digitalWrite(relayTC, HIGH);
- digitalWrite(relaypin1, HIGH);
- digitalWrite(relaypin2, HIGH);
- digitalWrite(Alarmdioda, LOW);
- //digitalWrite(Alarmdioda, OUTPUT);
- digitalWrite(uszkodzeniedioda, LOW);
- //digitalWrite(uszkodzeniedioda, OUTPUT);
- digitalWrite(zasilaniedioda, LOW);
- //digitalWrite(zasilaniedioda, OUTPUT);
- pinMode(ROP, INPUT_PULLUP);
- pinMode(Klapy, INPUT_PULLUP);
- pinMode(Czujnik, INPUT_PULLUP);
- pinMode(zasilanie, INPUT_PULLUP);
- pinMode(reset, INPUT_PULLUP);
- pinMode(otwieranieczujnikiem, INPUT_PULLUP);
- pinMode(PrzewietrzanieO, INPUT_PULLUP);
- pinMode(PrzewietrzanieZ, INPUT_PULLUP);
- }
- void loop() {
- klawisz = 0;
- switch(wyswietlanyEkran) { //Wykonywanie akcji odpowiedniej dla danego ekranu
- case 1:
- ekranStartowy();
- break;
- case 2:
- ekranLogowania();
- break;
- case 3:
- alarmCzujnik();
- break;
- }
- if (digitalRead(Czujnik) == LOW) {
- wyswietlanyEkran = 3;
- buzzer = true;
- digitalWrite(buzzerpin, HIGH);
- previousMillis = millis();
- //tone(buzzerpin, 1000);
- }
- }
- void ekranStartowy() {
- //lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("SYSTEM SYGNALIZACJI ");
- lcd.setCursor(0,1);
- lcd.print("POZAROWEJ - CENTRALA");
- lcd.setCursor(0,2);
- //lcd.print("hh:mm:ss dd.mm.rr");
- lcd.print(millis() / 1000);
- lcd.setCursor(0,3);
- lcd.print("Poziom dostepu: ");
- if (poziomDostepu == false) {
- lcd.print("1 ");
- } else {
- lcd.print("2 ");
- }
- char klawisz = klawiatura.getKey();
- if (klawisz) {
- if (klawisz == 'C') {
- wyswietlanyEkran = 2;
- }
- }
- }
- void ekranLogowania() {
- //lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Brak dostepu ");
- lcd.setCursor(0,1);
- lcd.print("Wymagany poziom 2 ");
- lcd.setCursor(0,2);
- lcd.print("Wpisz kod: "); //1992
- for (int i = 0; i < pinDostepuPozycja; i++) {
- lcd.print("*");
- }
- lcd.print(" ");
- lcd.setCursor(0,3);
- lcd.print("Zatwierdz * Powrot #");
- wczytajKod();
- //delay(3000);
- //wyswietlanyEkran = 1;
- }
- void wczytajKod() {
- klawisz = klawiatura.getKey();
- if (klawisz) {
- if (klawisz == '#') {
- pinDostepuPozycja = 0;
- pinDostepu = 0;
- klawisz = 0;
- wyswietlanyEkran = 1;//wjście do ekranu startowego
- delay(500);
- }
- if (klawisz == '*' && pinDostepu == 4) {
- poziomDostepu = true;
- pinDostepuPozycja = 0;
- klawisz = 0;
- delay(500);
- }
- if (pinDostepuPozycja == 0 && klawisz == pinCyfra1) {
- pinDostepuPozycja++;
- pinDostepu++;
- klawisz = 0;
- delay(500);
- } else if (pinDostepuPozycja == 1 && klawisz == pinCyfra2) {
- pinDostepuPozycja++;
- pinDostepu++;
- klawisz = 0;
- delay(500);
- } else if (pinDostepuPozycja == 2 && klawisz == pinCyfra3) {
- pinDostepuPozycja++;
- pinDostepu++;
- klawisz = 0;
- delay(500);
- } else if (pinDostepuPozycja == 3 && klawisz == pinCyfra4) {
- pinDostepuPozycja++;
- pinDostepu++;
- klawisz = 0;
- delay(500);
- } else {
- pinDostepuPozycja++;
- klawisz = 0;
- delay(500);
- }
- }
- }
- void ekranAlarmCzujnik() {
- lcd.setCursor(0,0);
- lcd.print(" !Alarmy pozarowe! ");
- lcd.setCursor(0,1);
- lcd.print("Czujnik strefa doz 1");
- lcd.setCursor(0,2);
- lcd.print("Miejsce: biuro 1 ");
- lcd.setCursor(0,3);
- lcd.print(" data / godzina ");
- alarmCzujnik();
- char klawisz = klawiatura.getKey();
- if (klawisz) {
- if (klawisz == '#') {
- digitalWrite(buzzerpin, LOW);
- digitalWrite(relaypin1, LOW);
- buzzer = false;
- K1 = false;
- wyswietlanyEkran = 1;
- }
- }
- }
- void alarmCzujnik() {
- if (buzzer == true) {
- if (millis() - previousMillis >= 3000) {
- previousMillis = millis();
- digitalWrite(buzzerpin, LOW);
- buzzer = false;
- digitalWrite(relaypin1, HIGH);
- K1 = true;
- }
- }
- if (K1 == true) {
- if (millis() - previousMillis >= 5000) {
- previousMillis = millis();
- digitalWrite(buzzerpin, HIGH);
- buzzer = true;
- digitalWrite(relaypin1, LOW);
- K1 = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement