• 16.04.2024, 21:43
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Arduino Programmcode zusammenführen

Mittwoch, 30. Dezember 2015, 16:23

Hi,

Ich habe hier ein Arudino Programm in C++ welches einwandfrei Funktioniert (Zahlenschloss mit Zwei LEDs zur anzeige ob der Code richtig oder Falsch ist und Zwei Taster).
Ich möchte jetzt in den Programmcode einbauen das mit einem der Zwei Taster das Prgoramm abgebrochen wird und kein Code eingeben werden muß um die Tür zu öffnen. Wenn ich jedoch nur eine einzeknde Tasten abfrage in den Zahleschloss Code einbaue bekomme ich das programm nicht mehr compiliert. Woran könnte das liegen? Die Taste einzelnd abzufrageen (quasi als Notöffnung) funktioniert. Nur zusammen klappt es nicht.

Grüße Dennis

(Bei wunsch kann ich den Code posten)

Mittwoch, 30. Dezember 2015, 18:34

wenn du den code compilierst dann bekommst du fehlermeldungen. da sollte halbwegs im klartext stehen was und wo der fehler zu suchen ist.

Donnerstag, 31. Dezember 2015, 08:11

Ja, code posten, bitte :)
Gute work-live-balance ist, wenn man von seinem Privatleben erschöpfter ist als von der Arbeit.

Freitag, 1. Januar 2016, 13:49

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#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);
   
}
}


In diesen Code wollen wir ein Zweiten Taster einbauen quasi als Notaus so das daß Zahlenschloss umgangen wird. Wir haben eine weitere Taster abfrage wie hier eingebaut:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
int LEDblau=6;

int taster=7;

int tasterstatus=0;



void setup()

{

pinMode(LEDblau, OUTPUT);

pinMode(taster, INPUT);

}

 

void loop()

{

tasterstatus=digitalRead(taster);

 

if (tasterstatus == HIGH)

 

{

digitalWrite(LEDblau, HIGH);

delay (5000);

digitalWrite(LEDblau, LOW);

}

else

{

digitalWrite(LEDblau, LOW);

}

}
	

Das Wort „LEDblau" steht jetzt für den Wert 6.

Das Wort „taster" steht jetzt für den Wert 7.

Das Wort „tasterstatus" steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster gedrückt ist oder nicht.

 

Hier beginnt das Setup.

 

Der Pin mit der LED (Pin 6) ist jetzt ein Ausgang.

Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.

 

 

-Mit dieser Klammer wird der Loop-Teil geöffnet.

Hier wird der Pin7 ausgelesen (Befehl:digitalRead). Das Ergebnis wird unter der Variable „tasterstatus" mit dem Wert „HIGH" für 5Volt oder „LOW" für 0Volt gespeichert.

-Verarbeitung: Wenn der taster gedrückt ist (Das Spannungssignal ist hoch)

-Programmabschnitt des IF-Befehls öffnen.

- dann soll die LED leuchten

- und zwar für für 5 Sekunden (5000 Millisekunden).

- danach soll die LED aus sein.

-Programmabschnitt des IF-Befehls schließen.

ansonsten

-Programmabschnitt des else-Befehls öffnen.

soll die LED aus sein.

-Programmabschnitt des else-Befehls schließen.

-Mit dieser letzten Klammer wird der Loop-Teil geschlossen.


Beim kompilieren gibt es keine Fehler mehr aber der Taster reagiert nicht (die ein und Ausgänge haben wir natürlich unserer Schaltung angepasst).