Hallo.
Ik ben nu 3 weken bezig met een Arduino Mega en vindt het geweldig maar loop nu wel tegen wat probleempjes aan :(.
Wat ik wil gaan maken is een alarmsysteem met contacten naar een Mobotix camera toe die dan gaat bellen.
De Mobotix camera kan al naar iemand toe bellen door middel van een input te maken.
Wat ik al heb is een LCD 4x20 en een matrix keypad, deze doen het goed :).
Wat ik al geprogrammeerd heb:
Als je de pincode in toest dat hij dan naar functie: Alarm_Uitschakelen gaat.
Als je een foute pincode in toest dat hij dan naar functie: pincode_Fout gaat
Maar wat ik nu niet voor elkaar krijg is, als de pincode goed is dat hij dan door midel van led status: (Led1 LOW) naar functie: Alarm_Uitschakelen moet gaan.
En als Led1 HIGH is dan moet hij naar functie: pincode_Alarm_Inschakelen gaan.
Ik dacht dat ik hier voor het beste een Switch Case kon voor gaan gebruiken maar ik doe iets niet goed.
Wie wil mij hier mee helpen.
Hier onder zie je mijn Code:
#include <LiquidCrystal.h>
#include <Keypad.h>
// Keypad
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'},
};
byte rowPins[ROWS] = {40, 39, 38, 37}; // verbinding maken met de rij pin-outs van het toetsenbord
byte colPins[COLS] = {36, 35, 34, 33}; // verbinding maken met de kolom pinouts van het toetsenbord
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// In en uitgangen
const int MCvoordeur = 46; // pen nummer waar MCachterdeur op zit
const int MCachterdeur = 48; // pen nummer waar MCachterdeur op zit
const int led1 = 50; // pen nummer waar led1 op zit
const int led2 = 52; // pen nummer waar led2 op zit
int buttonState = LOW; // variabele drukknop toestand
int led_state = HIGH;
//pincode maken
char* ourCode = "1234";
int currentPosition = 0;
void setup() {
lcd.begin(20, 4);
pinMode(led1, OUTPUT); // Initialiseren van de LED pin als een uitgang
pinMode(led2, OUTPUT); // Initialiseren van de LED pin als een uitgang
pinMode(MCvoordeur, INPUT); // Initialiseren van de LED pin als een ingang
pinMode(MCachterdeur, INPUT); // Initialiseren van de LED pin als een ingan
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}
void loop()
{
// Laat logo zien (Welkom bij Slagerij Klinkhamer)
lcd.setCursor(5,0); // Zet de cursor naar kolom 4, lijn 0
lcd.print("Welkom bij"); // Pint de texst "Welkom bij"
lcd.setCursor(0,1); // Zet de cursor naar kolom 2, lijn 2
lcd.print(" De Slagerij "); // Pint de texst "DVT Beveiliging"
lcd.setCursor(2,3); // Zet de cursor naar kolom 2, lijn 2
lcd.print("Toets pincode in"); // Pint de texst "Toest pincode in"
{
int l;
char key = keypad.getKey();
if (int(key) != 0) {
lcd.setCursor(14,2);
lcd.print(" ");
lcd.setCursor(14,2);
for (l=0; l <=currentPosition; ++l)
{
lcd.print("*");
}
if (key == ourCode[currentPosition])
{
++currentPosition;
if (currentPosition == 4) // Pincode is goed
{
currentPosition = 0;
int range = map(led1, LOW, HIGH, 0, 1);
switch (range) {
case 0:
Alarm_Inschakelen();
break;
case 1:
Alarm_Uitschakelen();
break;
}
}
}
else
{ // Pincode is fout
currentPosition = 0;
pincode_Fout();
}
}
}
buttonState = digitalRead(MCvoordeur);
if (buttonState == HIGH) {
digitalWrite(led2, HIGH);
}
else {
// turn LED off:
digitalWrite(led2, LOW);
}
}
void Alarm_Inschakelen()
{
// ClearScreen
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,0);
// Laat logo zien (pincode juist Alarm is uit)
lcd.setCursor(0,0);
lcd.print("********************");
lcd.setCursor(0,1);
lcd.print("* PINCODE JUIST *");
lcd.setCursor(0,2);
lcd.print("* Alarm is aan *");
lcd.setCursor(0,3);
lcd.print("********************");
digitalWrite(led1, HIGH);
delay(5000);
digitalWrite(led1, LOW);
}
void Alarm_Uitschakelen()
{
// ClearScreen
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,0);
// Laat logo zien (pincode juist Alarm is uit)
lcd.setCursor(0,0);
lcd.print("********************");
lcd.setCursor(0,1);
lcd.print("* PINCODE JUIST *");
lcd.setCursor(0,2);
lcd.print("* Alarm is uit *");
lcd.setCursor(0,3);
lcd.print("********************");
digitalWrite(led1, HIGH);
delay(5000);
digitalWrite(led1, LOW);
}
void pincode_Fout()
{
// ClearScreen
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,0);
// Zet logo er in (pincode onjuist)
lcd.print("********************");
lcd.setCursor(0,1);
lcd.print("* PINCODE ONJUIST *");
lcd.setCursor(0,2);
lcd.print("* OPNIEUW *");
lcd.setCursor(0,3);
lcd.print("********************");
digitalWrite(led2, HIGH);
delay(5000);
digitalWrite(led2, LOW);
// ClearScreen
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(0,3);
lcd.print(" ");
lcd.setCursor(0,0);
}