software probleem
3 berichten
• Pagina 1 van 1
software probleem
Hallo,
Ik ben een beveiligingssysteem aan het maken maar ik heb een probleem, ik kan het systeem gewoon activeren en als het systeem aanstaat dan slaat hij alarm als hij beweging ziet alleen als ik hem wil deactiveren werkt hij de eerste pogingen niet en daarna wel een keer, als ik hem daarna weer wil activeren werkt het allemaal niet meer dus ik kan het systeem dan niet meer activeren. Ik weet niet goed wat het probleem is. Dit is de code die ik heb gebruikt:
cpp code
Ik hoop dat iemand het probleem ziet!
Ik ben een beveiligingssysteem aan het maken maar ik heb een probleem, ik kan het systeem gewoon activeren en als het systeem aanstaat dan slaat hij alarm als hij beweging ziet alleen als ik hem wil deactiveren werkt hij de eerste pogingen niet en daarna wel een keer, als ik hem daarna weer wil activeren werkt het allemaal niet meer dus ik kan het systeem dan niet meer activeren. Ik weet niet goed wat het probleem is. Dit is de code die ik heb gebruikt:
cpp code
#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR2W.h>
#include <LiquidCrystal_SR3W.h>
#include <RTClib.h>
#include <Servo.h>
#include <Keypad.h>
#include <Password.h>
#include <Wire.h>
Servo myservo;
int pos = 90; // Servo
int passwd_pos = 15;
//Pincode
Password password = Password( "7196" );
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{
'1','2','3','A' }
,
{
'4','5','6','B' }
,
{
'7','8','9','C' }
,
{
'*','0','#','D' }
};
byte rowPins[ROWS] = {
8, 7, 6, 9 }; //Keypad
byte colPins[COLS] = {
5, 4, 3, 2}; //keypad
// Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
// I2C Lcd
LiquidCrystal_I2C lcd(0x27, 30, 31, POSITIVE);
int greenLED = 12;
int redLED = 11;
int pirPin1 = 10;
int alarmled = 13;
int alarmStatus = 0;
int zone = 0;
int alarmActive = 0;
void setup(){
Serial.begin(9600);
lcd.begin(16, 2);
//Adding time
Wire.begin();
myservo.attach(48); // Servo
displayCodeEntryScreen();
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(pirPin1, INPUT);
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
keypad.addEventListener(keypadEvent);
myservo.write(pos);
}
void loop(){
keypad.getKey();
if (alarmActive == 1){
if (digitalRead (pirPin1) == HIGH)
{
zone = 0;
alarmTriggered();
}
}
}
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
if (passwd_pos - 15 >= 5) {
return ;
}
lcd.setCursor((passwd_pos++),0);
switch (eKey){
case '#':
passwd_pos = 15;
checkPassword();
break;
case '*':
password.reset();
passwd_pos = 15;
break;
default:
password.append(eKey);
lcd.print("*");
}
}
}
void alarmTriggered(){
int expected_pos;
int incr;
digitalWrite(alarmled, HIGH);
lcd.setCursor(0,0);
lcd.print("BEWEGING! PIN:");
//
password.reset();
alarmStatus = 1;
// alarmActive = 0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("BEWEGING! PIN:");
checkPassword;
displayCodeEntryScreen();
lcd.setCursor(0,1);
if (zone == 3)
{
expected_pos = 90;
delay(10000);
lcd.print("................");
delay(1000);
}
if (expected_pos > pos) {
incr = 1;
} else {
incr = -1;
}
for (pos = pos; pos != expected_pos; pos += incr) {
myservo.write(pos);
delay(5);
}
/*
for(pos = 0; pos < angle; pos += 1)
{
myservo.write(pos);
delay(20);
}
for(pos = angle; pos>=1; pos-=1)
{
myservo.write(pos);
delay(20);
}
*/
}
void checkPassword(){ // Pincode check
if (password.evaluate())
{
if(alarmActive == 0 && alarmStatus == 0)
{
activate();
}
else if( alarmActive == 1 || alarmStatus == 1) {
deactivate();
}
}
else {
invalidCode();
}
}
void invalidCode() { // Verkeerde code
password.reset();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("VERKEERDE CODE!");
lcd.setCursor(0,1);
lcd.print("OPNIEUW!");
digitalWrite(greenLED, LOW);
digitalWrite(redLED, HIGH);
delay(10000);
digitalWrite(redLED, LOW);
delay(1000);
displayCodeEntryScreen();
}
void activate() { // Activatie
{
digitalWrite(2, HIGH);
lcd.setCursor(0,0);
lcd.print("SYSTEEM ACTIEF!");
lcd.setCursor(0,1);
lcd.print("VERLAAT KAMER!");
password.reset();
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
delay(22000);
alarmActive = 1;
lcd.setCursor(0,0);
lcd.print("SYSTEEM ACTIEF!");
lcd.setCursor(0,1);
lcd.print("PINCODE:");
}
}
void deactivate() // Deactivatie
{
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
digitalWrite(alarmled, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("GEDEACTIVEERD");
alarmActive = 0;
password.reset();
delay(5000);
displayCodeEntryScreen();
}
void displayCodeEntryScreen()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PINCODE:");
lcd.setCursor(0,1);
lcd.print("BEVEILIGING!");
}
Ik hoop dat iemand het probleem ziet!
Advertisement
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: software probleem
Als je (minder goed gedocumenteerde code) lees, begrijp ik dat als eenmaal het alarm afgaat er situaties zijn dat het alarm 10 sec bezig is (regel 145). Daarnaast doe je iets op regel 139. CheckPassword zonder haakjes.....?
In dezelfde routine: Als zone != 3 dan wordt expectPos niet gezet....
zo ff een paar dingen
In dezelfde routine: Als zone != 3 dan wordt expectPos niet gezet....
zo ff een paar dingen
Re: software probleem
alleen als alarm aanstaat en er is iemand dan wordt het alarm aangezet, anders gebeurt er helemaal niks.
paul deelen
shooter@home.nl
shooter@home.nl
3 berichten
• Pagina 1 van 1