INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Thema geschlossen 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programm Code Erweitern
01.01.2016, 17:15
Beitrag #1
Programm Code Erweitern
Nabend,

Ich habe hier eine Zahlenschloss mit 4*3 Keypad aufgebaut. Das ganze funktioniert auch wie es soll:

Code:
#include <Password.h> //http://playground.arduino.cc/uploads/Code/Password.zip //tells to use password library
#include <Keypad.h> //http://www.arduino.cc/playground/uploads/Code/Keypad.zip  //tells to use keypad library


Password password = Password( "123" ); //password to unlock, can be changed

const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {5, 6, 7, 8};
byte colPins[COLS] = {2, 3, 4};

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
  Serial.write(254);
  Serial.write(0x01);
  delay(100);
  pinMode(11, OUTPUT);  //green light
  pinMode(12, OUTPUT);  //red light
  pinMode(52, OUTPUT); //Test
  pinMode(22, INPUT); //rot
  keypad.addEventListener(keypadEvent); //add an event listener for this keypad
  }


void loop()



{
  keypad.getKey();
  }
  //take care of some special events
  void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
  case PRESSED:

  Serial.print("Enter:");
  Serial.println(eKey);
  delay(10);

  Serial.write(254);

  switch (eKey){
    case '#': checkPassword(); delay(1); break; //Ziffer 5 beendet Code
  
    case '0': password.reset(); delay(1); break; //Ziffer sperrt Code und muss als erste Ziffer genutzt werden
  
     default: password.append(eKey); delay(1);
}
}
}
void checkPassword(){

if (password.evaluate()){  //if password is right open
  
    Serial.println("Accepted");
    Serial.write(254);delay(10);
    //Add code to run if it works

    digitalWrite(52, HIGH);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(10000);
    digitalWrite(12, HIGH);
  
  
}
else
{
    Serial.println("Denied"); //if passwords wrong keep locked
    Serial.write(254);delay(10);
    //add code to run if it did not work
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
  
}
}

Jetzt habe ich ein Taster eingebunden der wenn er Gedrückt wird das Zahlenschloss umgeht (Quasi eine Notöffnung).
So sieht der Code mit dem Taster aus:

Code:
#include <Password.h> //http://playground.arduino.cc/uploads/Code/Password.zip //tells to use password library
#include <Keypad.h> //http://www.arduino.cc/playground/uploads/Code/Keypad.zip  //tells to use keypad library

int taster=22;
int tasterstatus=0;
Password password = Password( "123" ); //password to unlock, can be changed

const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {5, 6, 7, 8};
byte colPins[COLS] = {2, 3, 4};

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
  Serial.write(254);
  Serial.write(0x01);
  delay(100);
  pinMode(11, OUTPUT);  //green light
  pinMode(12, OUTPUT);  //red light
  pinMode(52, OUTPUT); //Test
  pinMode(taster, INPUT); //roter Button
  keypad.addEventListener(keypadEvent); //add an event listener for this keypad
  }


void loop()



{
  keypad.getKey();
  }
  //take care of some special events
  void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
  case PRESSED:

  Serial.print("Enter:");
  Serial.println(eKey);
  delay(10);

  Serial.write(254);

  switch (eKey){
    case '#': checkPassword(); delay(1); break; //Ziffer 5 beendet Code
  
    case '0': password.reset(); delay(1); break; //Ziffer sperrt Code und muss als erste Ziffer genutzt werden
  
     default: password.append(eKey); delay(1);
}
}
}
void checkPassword(){

if (password.evaluate()){  //if password is right open
  
    Serial.println("Accepted");
    Serial.write(254);delay(10);
    //Add code to run if it works

    digitalWrite(52, HIGH);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(11, LOW);
    delay(200);
    digitalWrite(11, HIGH);
    delay(1000);
    digitalWrite(12, HIGH);
  
  
}
else
{
    Serial.println("Denied"); //if passwords wrong keep locked
    Serial.write(254);delay(10);
    //add code to run if it did not work
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
    digitalWrite(12, HIGH);
    delay(100);
    digitalWrite(12, LOW);
    delay(100);
  
}

{

tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)

{
digitalWrite(52, HIGH);
delay (1000);
digitalWrite(52, LOW);
delay (1000);
}
}
}

Der Taster funktioniert aber nicht wenn man ihn drückt passiert nichts (an pin52 ist ein relais angeschlossen was dann schalten soll). Der Taster als solche funktioniert aber in einem anderen Code einwandfrei (er bleibt auch genau so angeschlossen).

Woran könnte das liegen? Board ist ein Mega.

Grüße hugoLOST
Alle Beiträge dieses Benutzers finden
01.01.2016, 17:20
Beitrag #2
RE: Programm Code Erweitern
Crossposting !

hier wurdest Du doch schon ausführlich "beraten"
http://forum.arduino.cc/index.php?PHPSES...c=368795.0

(wobei die Fragen an dich bezüglich Schaltung ja von Dir noch nicht beantwortet wurden ....)
01.01.2016, 17:21
Beitrag #3
RE: Programm Code Erweitern
Mehrere Foren = mehrere Antworten.
Alle Beiträge dieses Benutzers finden
01.01.2016, 17:22
Beitrag #4
RE: Programm Code Erweitern
ja, und immer schön die Antworten aus den anderen Foren geheim halten, damit sich hier möglichst viele User den Kopf zerbrechen
AngryAngryAngry

Zitat:Crossposting bedeutet, dass ein und dieselbe Frage in mehreren Foren und Newsgroups gleichzeitig gestellt wird. Ein solches Verhalten wird von den meisten Helfern nicht toleriert, denn damit stellst Du einerseits die Kompetenz der Helfer jedes einzelnen Forums und Newsgroup in Frage und bewirkst zudem, dass ein zig-faches an Stunden aufgewendet wird, um nur ein einziges Problem zu lösen, denn überall werden sich die Helfer daran setzen, eine Lösung für Dich zu finden. Das ist ganz klar ein Missbrauch an dem kostenlosen und freiwilligen Support, der hier angeboten wird. Such Dir eine einzige Newsgroup aus. Wenn Deine Frage klar und deutlich gestellt wurde, dann wirst Du ganz bestimmt innert kürzester Zeit eine Antwort erhalten. Sollte dies auch nach mehreren Tagen nicht der Fall sein, dann versuche bitte die Frage besser zu formulieren. Falls Du dennoch in einem zweiten Forum posten solltest, erwähne bitte, dass Du die Frage schon woanders gestellt hast, und dass Du es tust, weil keine Lösung gefunden werden konnte.
01.01.2016, 18:42 (Dieser Beitrag wurde zuletzt bearbeitet: 01.01.2016 18:46 von hotsystems.)
Beitrag #5
RE: Programm Code Erweitern
(01.01.2016 17:21)hugolost schrieb:  Mehrere Foren = mehrere Antworten.

Und wenn du nicht in der Lage bist, Antworten und Vorschläge richtig umzusetzen, dann solltest du doch wirklich mal darüber nachdenken, ob dein Grundwissen für den Arduino ausreicht.
So wird man dir jedenfalls nicht mehr helfen.
Immerhin machen wir das hier freiwillig und in unserer Freizeit.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
01.01.2016, 19:10
Beitrag #6
RE: Programm Code Erweitern
Hi Jungs,
wäre das nicht mal ein Anlass ein Thema zu schließen ?
Bitte um Meinungen.
lgbk Moderator

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
01.01.2016, 19:39
Beitrag #7
RE: Programm Code Erweitern
"Zu"-Stimmung

Edit:
Grundsatzfrage zu Crosspostings ohne Hinweis auf weitere Foren = generell schließen ?
01.01.2016, 19:40
Beitrag #8
RE: Programm Code Erweitern
(01.01.2016 19:10)Bitklopfer schrieb:  Hi Jungs,
wäre das nicht mal ein Anlass ein Thema zu schließen ?
Bitte um Meinungen.
lgbk Moderator

Ja, ich bin damit absolut deiner Meinung.
Vielen Dank.
Und frohes neues Jahr.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Thema geschlossen 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler in meinem Programm Franz54 7 163 01.12.2016 23:58
Letzter Beitrag: hotsystems
  Einfacher Tacho für niedrige Geschwindigkeiten – Code optimieren Bastelo 2 261 12.10.2016 20:31
Letzter Beitrag: Bastelo
  Code mit Verifikation über Keypad & LCD machnetz 5 216 10.10.2016 15:01
Letzter Beitrag: torsten_156
  Programmspeicher auf i2c_EEPROM oder SD_Card erweitern? avoid 11 349 11.07.2016 15:46
Letzter Beitrag: avoid
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 550 06.07.2016 14:59
Letzter Beitrag: Binatone
  Wo kann ich hier noch Code spahren? (SPI-,Ethernet-,SD-,GSM-Library) avoid 4 384 05.06.2016 14:16
Letzter Beitrag: avoid
  Serial Monitor Eingabe über Code Maxi290997 4 523 12.05.2016 18:57
Letzter Beitrag: SkobyMobil
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 514 29.03.2016 16:45
Letzter Beitrag: MartinK
  Arduino Alarmanlage mit Taster erweitern Vengance 0 527 22.03.2016 17:54
Letzter Beitrag: Vengance
  Werte an anderes Programm weiterleiten Typ 2 438 12.03.2016 23:28
Letzter Beitrag: Typ

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste