keypad alarm panel.

Als U een gezamenlijk project wil starten of aan projecten van anderen mee wilt werken.
Berichten: 11
Geregistreerd: 03 Nov 2019, 03:51

keypad alarm panel.

Berichtdoor reemster » 13 Nov 2019, 01:28

Beste forumleden.

Voor mijn alarm systeem.
Het is een keypad met een lcd scherm.
bij het invoeren van een code springt het relay even om om zo het alarmsysteem aan en uit te zetten.
+ 2x indicatie led.

Nu wil ik graag de backlight van het lcd dimmen.
dus dacht aan een button met een delay.

nu loop ik alleen tegen het probleem dat er 2 loops door elkaar lopen terwijl ze ook samen moeten kunnen lopen.

kan iemand mij helpen.

# nog steeds noob in het schijven van codes.

Code: Alles selecteren
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

#define Password_Length 5

int signalPin1 = 12;
int signalPin2= 13;
int Button = 10;                      // drukknop pin
int Backlight = 11;                   // ingebouwde backlight pin
int switchState = LOW;                // waarde van de drukknop


char Data[Password_Length];
char Master[Password_Length] = "1234";
byte data_count = 0, master_count = 0;
bool Pass_is_good;
char customKey;

const byte ROWS = 4;
const byte COLS = 4;

char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

LiquidCrystal_I2C lcd(0x27, 16, 2); 

void setup(){
  lcd.init();
  lcd.backlight();
  pinMode(signalPin1, OUTPUT);
  pinMode(signalPin2, OUTPUT);
  Serial.begin(9600);                       // stel de seriële monitor in
  pinMode(Backlight, OUTPUT);               // stel de led pin in als uitvoer
  pinMode(Button, INPUT);                   // stel de switch pin in als invoe
}

void loop(){
      switchState = digitalRead(Button);    // Lees de digitale waarde van de schakelaar (LOW/HIGH)
      Serial.println(switchState);          // Toon de waarde in de seriële monitor

    if (switchState == HIGH) {              // Als de schakelaar is ingedrukt (HIGH)
       digitalWrite(Backlight, HIGH);
       delay(3000);                         // Zet de Backlight aan
    } else {
        digitalWrite(Backlight, LOW);       // Zet de backlight uit 
    }

  lcd.setCursor(0,0);
  lcd.print("Enter Password:");
  customKey = customKeypad.getKey();
  if (customKey){
    Data[data_count] = customKey;
    lcd.setCursor(data_count,1);
    lcd.print(Data[data_count]);
    data_count++;
    }

  if(data_count == Password_Length-1){
    lcd.clear();

    if(!strcmp(Data, Master)){
      lcd.print("Correct");
      digitalWrite(signalPin1, HIGH);
      digitalWrite(signalPin2, LOW);
      delay(900);
      digitalWrite(signalPin1, LOW);
      digitalWrite(signalPin2, HIGH);
      }
    else{
      lcd.print("Incorrect");
      delay(1000);
      }
   
    lcd.clear();
    clearData(); 
  }
 
}

void clearData(){
  while(data_count !=0){
    Data[data_count--] = 0;
  }
  return;
}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: keypad alarm panel.

Berichtdoor Koepel » 13 Nov 2019, 15:05

Bij je vorige vraag schreef shooter al over millis(). Met millis() kun je alle problemen oplossen. Nou ja, niet alle problemen, maar wel heel veel ;)

Je wilt bijvoorbeeld dat als je een knop indrukt, dat de backlight dan aan gaat, en dat na een tijdje de backlight vanzelf weer uit gaat. Dat is een single-shot-timer met millis().
Hier staat een voorbeeld: https://github.com/Koepel/Fun_with_millis/blob/master/millis_single_delay.ino.

Om millis() te begrijpen kun je hier beginnen: https://www.arduino.cc/en/tutorial/BlinkWithoutDelay.
Dit is een Nederlandse introductie: https://forum.arduino.cc/index.php?topic=430295.0.

Berichten: 11
Geregistreerd: 03 Nov 2019, 03:51

Re: keypad alarm panel.

Berichtdoor reemster » 16 Nov 2019, 09:57

Super bedankt voor de goede tip..

Het was nog even stoeien maar het is mij uiteindelijk gelukt.

Nu installeren en het alarm kan gebruikt worden.

project is voorlopig afgerond.

Terug naar Gezamenlijke projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten