Wie kan mij helpen

Arduino specifieke Software
Berichten: 63
Geregistreerd: 09 Jun 2017, 01:59
Woonplaats: Fiji

Wie kan mij helpen

Berichtdoor Dino » 03 Okt 2017, 13:01

Heb een alarm installatie in mekaar gebasteld, geeft geen fouten maar zie niks op display .
waar loopt het spaak ?
Code: Alles selecteren
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Password.h>
#include <Keypad.h>
#include <Keypad_I2C.h>
#include <Servo.h>

#define Buzzer 13
#define trigPin 9
#define echoPin 10
int i2caddress = 0x38;
int passwd_pos = 15;
int ledDelay = 50;
LiquidCrystal_I2C lcd(0x27, 16, 2);
Password password = Password( "0000");

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] = {0, 1, 2, 3};
byte colPins[COLS] = {4, 5, 6, 7};

Keypad_I2C keypad = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );


int pirPin1 = 2;
int pirPin2 = 3;
int reedPin1 = 4;
int reedPin2 = 5;
int BluePin = 6;
int GreenPin = 7;
int RedPin = 8;

int alarmStatus = 0;
int zone = 0;
int alarmActive = 0;

void setup() {
//lcd.init();
  Serial.begin(9600);
  lcd.begin();
  Wire.begin();
  lcd.backlight();
  pinMode(Buzzer, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(RedPin, OUTPUT);
  pinMode(GreenPin, OUTPUT);
  pinMode(BluePin, OUTPUT);
  pinMode(Buzzer, OUTPUT);
  pinMode(pirPin1, INPUT);  //Slaapkamers
  pinMode(pirPin2, INPUT);  //Deur voor
  pinMode(reedPin1, INPUT); //Deur Achter
  pinMode(reedPin2, INPUT); //woonkamer&keuken

  digitalWrite(RedPin, LOW);
  digitalWrite(GreenPin, HIGH);
  digitalWrite(Buzzer, LOW);
  keypad.addEventListener(keypadEvent);

}

void loop(void) {
  keypad.getKey();
  if (alarmActive == 1) {
    if (digitalRead(pirPin1) == HIGH)
    {
      zone = 0;
      alarmTriggered();
    }
    if (digitalRead(reedPin1) == LOW)
    {
      zone = 1;
      alarmTriggered();
    }
    if (digitalRead(reedPin2) == LOW)
    {
      zone = 2;
      alarmTriggered();
    }

    if (digitalRead(pirPin2) == HIGH)
    {
      zone = 3;
      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(Buzzer, HIGH);
  password.reset();
  alarmStatus = 1;

  lcd.clear();
  lcd.setCursor(0, 2);
  lcd.print("  SYSTEM TRIGGERED  ");
  lcd.setCursor(0, 4);
  if (zone == 1)
  {
    lcd.print("  Front Door Open  ");
    delay(1000);
  }
  if (zone == 0) {
    lcd.print("Bedroom  ");
    delay(1000);
  }
  else if (zone == 2) {
    lcd.print("Back door Open");
    delay(1000);
  }
  else if (zone == 3) {
    lcd.print("Room & Kitchen");
    delay(1000);

    StrokeLight();
  }
}

void StrokeLight() {
  digitalWrite(RedPin, HIGH);
  delay(ledDelay);
  digitalWrite(RedPin, LOW);
  delay(ledDelay);
  digitalWrite(RedPin, HIGH);
  delay(ledDelay);
  digitalWrite(RedPin, LOW);
  delay(ledDelay);
  digitalWrite(RedPin, HIGH);
  delay(ledDelay);
  digitalWrite(RedPin, LOW);
  delay(ledDelay);
  delay(10);
  digitalWrite(BluePin, HIGH);
  delay(ledDelay);
  digitalWrite(BluePin, LOW);
  delay(ledDelay);
  digitalWrite(BluePin, HIGH);
  delay(ledDelay);
  digitalWrite(BluePin, LOW);
  delay(ledDelay);
  digitalWrite(BluePin, HIGH);
  delay(ledDelay);
  digitalWrite(BluePin, LOW);
  delay(ledDelay);
}

void checkPassword() {
  if (password.evaluate())
  {
    if (alarmActive == 0 && alarmStatus == 0)
    {
      activate();
    }
    else if ( alarmActive == 1 || alarmStatus == 1) {
      deactivate();
    }
  }
  else {
    invalidCode();
  }
}

void invalidCode()
{
  password.reset();
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("INVALID CODE!");
  lcd.setCursor(5, 2);
  lcd.print("TRY AGAIN!");
  digitalWrite(GreenPin, LOW);
  digitalWrite(RedPin, HIGH);
  delay(2000);
  digitalWrite(RedPin, LOW);
  delay(1000);
  displayCodeEntryScreen();
}

void activate()
{
  if ((digitalRead(reedPin1) == HIGH) && (digitalRead(reedPin2) == HIGH)) {
    digitalWrite(RedPin, HIGH);
    digitalWrite(GreenPin, LOW);
    digitalWrite(2, HIGH);
    lcd.setCursor(0, 0);
    lcd.print("SYSTEM ACTIVE!");
    alarmActive = 1;
    password.reset();
    delay(2000);
  }
  else {
    deactivate();
  }
}

void deactivate()
{
  alarmStatus = 0;
  digitalWrite(RedPin, LOW);
  digitalWrite(GreenPin, HIGH);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(" SYSTEM DEACTIVATED!");
  digitalWrite(Buzzer, LOW);
  alarmActive = 0;
  password.reset();
  delay(5000);

  displayCodeEntryScreen();
}

void displayCodeEntryScreen()
{
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Enter PIN:");
}


void printDigits(int digits)
{
  lcd.print(':');
  if (digits < 10)
    lcd.print('0');
  lcd.print(digits);
}






Advertisement

Gebruikers-avatar
Berichten: 631
Geregistreerd: 15 Nov 2015, 11:54

Re: Wie kan mij helpen

Berichtdoor Gij Kieken » 03 Okt 2017, 13:56

Contrast van de Lcd bijregelen.

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: Wie kan mij helpen

Berichtdoor baco1978 » 03 Okt 2017, 16:16

in je code staat het volgende "LiquidCrystal_I2C lcd(0x27, 16, 2);"
is het printje (wat aan je lcd verbonden is) ook ingesteld op 0x27 ?
controleer ook het printje van je keypad of deze juist ingesteld is
Met vriendelijke groet Arjan

Berichten: 63
Geregistreerd: 09 Jun 2017, 01:59
Woonplaats: Fiji

Re: Wie kan mij helpen

Berichtdoor Dino » 03 Okt 2017, 20:00

Hierin gebruik ik twee adressen een display 27 en keyPad 20 .
zoals je ziet in script deze lees ik uit met een progje die eens heb gemaakt die de adressen uitleest en dat zijn dus deze twee.

Berichten: 63
Geregistreerd: 09 Jun 2017, 01:59
Woonplaats: Fiji

Re: Wie kan mij helpen

Berichtdoor Dino » 05 Okt 2017, 09:55

Ik zoek me een breuk waar dit fenomeen nu aan licht, of ik moet hem opnieuw opbouwen .
hoop dat toch iemand mijn fout ziet.

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

Re: Wie kan mij helpen

Berichtdoor Koepel » 05 Okt 2017, 11:39

Als je vast loopt, dan doe je een stap terug.
Als je helemaal vast zit, dan doe van voor af aan een paar kleine testjes, waarbij je steeds één ding test.

Allereerst weet ik niet wat het probleem is. Is het probleem dat het display niet werkt ?

Je zou bijvoorbeeld dit kunnen doen:
Verwijder alles van het Arduino bordje, en verbindt alleen het display.
Draai de i2c scanner: https://playground.arduino.cc/Main/I2cScanner.
Laat die i2c scanner een tijdje draaien, en beweeg eens met de draden, of het stabiel blijft.
Gebruik het gevonden i2c address.

Gebruik daarna een meegeleverd voorbeeld dat bij de bibliotheek van het i2c display zit.
Zie je al iets op het scherm ?

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Alexduh en 16 gasten