Digitales Schlüsselbrett mit iButtons und Arduino
Moderator: Co-Administratoren
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hi Bulli,
kannst Du mir sagen, wie ich das im obigen Script hinterlege das der Arduino das sendet?
Gruss Oli
kannst Du mir sagen, wie ich das im obigen Script hinterlege das der Arduino das sendet?
Gruss Oli
-
- Beiträge: 494
- Registriert: 29.04.2014, 18:38
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 9 Mal
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hallo
ohne jetzt das Script genau zu kennen. Kannst du folgendes mal zum Testen ändern oder dazu schreiben.
digitalWrite(7,LOW) neu Serial.println("HD10104010000")
digitalWrite(7,HIGH) neu Serial.println("HD10104000000")
Gruß
Bulli
ps ich kann dir bei deinen Vorhaben schon ein paar Tip´s geben. Aber das mußt du schon selber hinbekommen. Mir fehlt die Hardware und das Wissen um sowas nur in der Theorie zu Programmieren
Und wenn du es fertig hast bitte auch hier schreiben, das hilft dann anderen bei solchen Vorhaben vielleicht auch.
ohne jetzt das Script genau zu kennen. Kannst du folgendes mal zum Testen ändern oder dazu schreiben.
Code: Alles auswählen
if (T1_ds1 == 1 | T1_ds2 == 1 | T1_ds3 == 1 | T1_ds4 == 1 | T1_ds5 ==1) { // Pruefe, ob Tranponder 1 vorhanden
digitalWrite(7,LOW);} else {digitalWrite(7,HIGH);}
digitalWrite(7,LOW) neu Serial.println("HD10104010000")
digitalWrite(7,HIGH) neu Serial.println("HD10104000000")
Gruß
Bulli
ps ich kann dir bei deinen Vorhaben schon ein paar Tip´s geben. Aber das mußt du schon selber hinbekommen. Mir fehlt die Hardware und das Wissen um sowas nur in der Theorie zu Programmieren
Und wenn du es fertig hast bitte auch hier schreiben, das hilft dann anderen bei solchen Vorhaben vielleicht auch.
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hi Bulli,
super vielen Dank, werde ich heute Abend gleich versuchen.
Danke
Gruss Oli
super vielen Dank, werde ich heute Abend gleich versuchen.
Danke
Gruss Oli
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hallo Bulli,
bin grad am testen, leider kommt noch nichts in der CCU an. Muss in dem CUXD Setup noch was spezielles eingetragen werden?
Gruss Oli
bin grad am testen, leider kommt noch nichts in der CCU an. Muss in dem CUXD Setup noch was spezielles eingetragen werden?
Gruss Oli
-
- Beiträge: 494
- Registriert: 29.04.2014, 18:38
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 9 Mal
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hallo
eigentlich nicht ausser du hast 2 oder mehr Arduinos dran.
USB 1-1 - {CUX} Arduino USB [COMM] - /dev/ttyACM0 {:10s} - connected - Mon Nov 28 15:05:27 2016
dann müßte bei Geräteeinstellungen noch das "ttyACM0" mit rein siehe auch Bild weiter vorne.
Sendet der Arduino überhaupt etwas? Was sieht man in Terminal vom CuxD? Gruß
Bulli
eigentlich nicht ausser du hast 2 oder mehr Arduinos dran.
USB 1-1 - {CUX} Arduino USB [COMM] - /dev/ttyACM0 {:10s} - connected - Mon Nov 28 15:05:27 2016
dann müßte bei Geräteeinstellungen noch das "ttyACM0" mit rein siehe auch Bild weiter vorne.
Sendet der Arduino überhaupt etwas? Was sieht man in Terminal vom CuxD? Gruß
Bulli
Re: Digitales Schlüsselbrett mit iButtons und Arduino
ja vom Arduino kommen die Signale. Ich habe 4 Buttons konfiguriert, beim einer hängt einer dran deshalb die 1 beim Status.
- Dateianhänge
-
- CUXD.JPG (14.93 KiB) 3595 mal betrachtet
-
- Beiträge: 494
- Registriert: 29.04.2014, 18:38
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 9 Mal
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hallo
schaut so erst mal gut aus. Zeigt doch mal die Statusseite von CuxD. Bitte aber alles unten sollten die Geräte stehen.
Ist unter Info was zu sehen?
schaut so erst mal gut aus. Zeigt doch mal die Statusseite von CuxD. Bitte aber alles unten sollten die Geräte stehen.
Ist unter Info was zu sehen?
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hallo Bulli,
hier mal meine komplette Konfiguration.
Gruss Oli
hier mal meine komplette Konfiguration.
Gruss Oli
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hallo für diejenigen die das digitale Schlüsselbrett auch nachbauen wollen, hier die Einstellungen wie es bei mir funktioniert hat.
1. Arduino (Arduino UNO) muss folgendes senden: HD10104010000 (offen) HD10104000000 (geschlossen)
2. Gerät im CUXD (16) HMS 100 TFK
3. Ganz wichtig noch der Eintrag im CUXD Setup: TTYASSIGN=ttyACM0:CUX
4. In der CCU -> Gerät -> Einstellungen: device = ttyACM0 ID = D101 wichtig.
Und hier noch das Arduino Sketch das bei mir funktioniert:
#include <OneWire.h>
OneWire onewire_Bus(2); // Pin des 1-Wire Transponders
byte addr_1[8]; // adresse des Transponders
byte addr_2[8]; // adresse des Transponders
byte addr_3[8]; // adresse des Transponders
byte addr_4[8]; // adresse des Transponders
int but_1[6] = {0,0,22,76,108,104}; // Serien Nr des roten Transponder BENUTZER EINGABE
int but_2[6] = {0,0,024,025,026,027}; // Serien Nr. des schwarzen Transponder BENUTZER EINGABE
int but_3[6] = {0,0,021,022,030,031}; // Serien Nr. des blauen Transponder BENUTZER EINGABE
int but_4[6] = {0,0,032,033,034,035}; // Serien Nr. des gruenen Transponder BENUTZER EINGABE
int keyStatus_1, keyStatus_2, keyStatus_3, keyStatus_4 = 0; // Transponder vorhanden (oder nicht)
boolean T1_ds1, T2_ds1, T3_ds1, T4_ds1 = 0; // Merker Transponder an Eingang 1 erkannt
boolean T1_ds2, T2_ds2, T3_ds2, T4_ds2 = 0; // Merker Transponder an Eingang 2 erkannt
boolean T1_ds3, T2_ds3, T3_ds3, T4_ds3 = 0; // Merker Transponder an Eingang 3 erkannt
boolean T1_ds4, T2_ds4, T3_ds4, T4_ds4 = 0; // Merker Transponder an Eingang 4 erkannt
boolean T1_ds5, T2_ds5, T3_ds5, T4_ds5 = 0;
void setup(void) { // Hardware funktionen festlegen
Serial.begin(9600); // Ausgabe Serieller Monitor initialisieren (zur indentifikation der Transpondernummer)
}
void loop(void) { // Main Programm
getKeyCode(); // Aufruf Unterprogramm
if(keyStatus_1==1){ // Ist ein Transponder vorhanden ->
/* Serial.println("");
byte i; // Aufbereiten der Serien Nr. zur Ausgabe an Seriellen Monitor (indentifikation)
for( i = 4; i >0; i--) {
Serial.print(" : "); // Trennzeichen zwischen bytes
Serial.print(addr_1, DEC); // Ausgabe Serien Nr. auf Serien Monitor
} */
if(addr_1[1] == but_1[5] && addr_1[2] == but_1[4] && addr_1[3] == but_1[3] && addr_1[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds1=1;} else {T1_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_1[1] == but_2[5] && addr_1[2] == but_2[4] && addr_1[3] == but_2[3] && addr_1[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds1=1;} else {T2_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_1[1] == but_3[5] && addr_1[2] == but_3[4] && addr_1[3] == but_3[3] && addr_1[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds1=1;} else {T3_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_1[1] == but_4[5] && addr_1[2] == but_4[4] && addr_1[3] == but_4[3] && addr_1[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds1=1;} else {T4_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds1=0;T2_ds1=0;T3_ds1=0;T4_ds1=0;} // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
if(keyStatus_2==1){ // Ist ein Transponder vorhanden ->
if(addr_2[1] == but_1[5] && addr_2[2] == but_1[4] && addr_2[3] == but_1[3] && addr_2[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds2=1;} else {T1_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_2[1] == but_2[5] && addr_2[2] == but_2[4] && addr_2[3] == but_2[3] && addr_2[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds2=1;} else {T2_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_2[1] == but_3[5] && addr_2[2] == but_3[4] && addr_2[3] == but_3[3] && addr_2[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds2=1;} else {T3_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_2[1] == but_4[5] && addr_2[2] == but_4[4] && addr_2[3] == but_4[3] && addr_2[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds2=1;} else {T4_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds2=0; T2_ds2=0; T3_ds2=0; T4_ds2=0; } // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
if(keyStatus_3==1){ // Ist ein Transponder vorhanden ->
if(addr_3[1] == but_1[5] && addr_3[2] == but_1[4] && addr_3[3] == but_1[3] && addr_3[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds3=1;} else {T1_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_3[1] == but_2[5] && addr_3[2] == but_2[4] && addr_3[3] == but_2[3] && addr_3[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds3=1;} else {T2_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_3[1] == but_3[5] && addr_3[2] == but_3[4] && addr_3[3] == but_3[3] && addr_3[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds3=1;} else {T3_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_3[1] == but_4[5] && addr_3[2] == but_4[4] && addr_3[3] == but_4[3] && addr_3[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds3=1;} else {T4_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt
// Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds3=0; T2_ds3=0; T3_ds3=0; T4_ds3=0; } // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
if(keyStatus_4==1){ // Ist ein Transponder vorhanden ->
if(addr_4[1] == but_1[5] && addr_4[2] == but_1[4] && addr_4[3] == but_1[3] && addr_4[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds4=1;} else {T1_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_4[1] == but_2[5] && addr_4[2] == but_2[4] && addr_4[3] == but_2[3] && addr_4[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds4=1;} else {T2_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_4[1] == but_3[5] && addr_4[2] == but_3[4] && addr_4[3] == but_3[3] && addr_4[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds4=1;} else {T3_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_4[1] == but_4[5] && addr_4[2] == but_4[4] && addr_4[3] == but_4[3] && addr_4[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds4=1;} else {T4_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt
// Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds4=0; T2_ds4=0; T3_ds4=0; T4_ds4=0; } // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
// Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
Serial.println("");
if (T1_ds1 == 1 | T1_ds2 == 1 | T1_ds3 == 1 | T1_ds4 == 1 | T1_ds5 ==1) { // Pruefe, ob Tranponder 1 vorhanden
Serial.println("HD10104000000");} else {Serial.println("HD10104010000");}
if (T2_ds1 == 1 | T2_ds2 == 1 | T2_ds3 == 1 | T2_ds4 == 1 | T2_ds5 ==1) { // Pruefe, ob Tranponder 2 vorhanden
Serial.println("HD10204000000");} else {Serial.println("HD10204010000"); }
if (T3_ds1 == 1 | T3_ds2 == 1 | T3_ds3 == 1 | T3_ds4 == 1 | T3_ds5 ==1) { // Pruefe, ob Tranponder 3 vorhanden
Serial.println("HD10304000000");} else {Serial.println("HD10304010000"); }
if (T4_ds1 == 1 | T4_ds2 == 1 | T4_ds3 == 1 | T4_ds4 == 1 | T4_ds5 ==1) { // Pruefe, ob Tranponder 4 vorhanden
Serial.println("HD10404000000");} else {Serial.println("HD10404010000"); }
delay(1000);
}
void getKeyCode(){ // Unterprogramm
addr_1[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_1); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_1[0]==0x01){keyStatus_1=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_1=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
addr_2[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_2); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_2[0]==0x01){keyStatus_2=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_2=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
addr_3[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_3); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_3[0]==0x01){keyStatus_3=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_3=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
addr_4[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_4); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_4[0]==0x01){keyStatus_4=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_4=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
}
1. Arduino (Arduino UNO) muss folgendes senden: HD10104010000 (offen) HD10104000000 (geschlossen)
2. Gerät im CUXD (16) HMS 100 TFK
3. Ganz wichtig noch der Eintrag im CUXD Setup: TTYASSIGN=ttyACM0:CUX
4. In der CCU -> Gerät -> Einstellungen: device = ttyACM0 ID = D101 wichtig.
Und hier noch das Arduino Sketch das bei mir funktioniert:
#include <OneWire.h>
OneWire onewire_Bus(2); // Pin des 1-Wire Transponders
byte addr_1[8]; // adresse des Transponders
byte addr_2[8]; // adresse des Transponders
byte addr_3[8]; // adresse des Transponders
byte addr_4[8]; // adresse des Transponders
int but_1[6] = {0,0,22,76,108,104}; // Serien Nr des roten Transponder BENUTZER EINGABE
int but_2[6] = {0,0,024,025,026,027}; // Serien Nr. des schwarzen Transponder BENUTZER EINGABE
int but_3[6] = {0,0,021,022,030,031}; // Serien Nr. des blauen Transponder BENUTZER EINGABE
int but_4[6] = {0,0,032,033,034,035}; // Serien Nr. des gruenen Transponder BENUTZER EINGABE
int keyStatus_1, keyStatus_2, keyStatus_3, keyStatus_4 = 0; // Transponder vorhanden (oder nicht)
boolean T1_ds1, T2_ds1, T3_ds1, T4_ds1 = 0; // Merker Transponder an Eingang 1 erkannt
boolean T1_ds2, T2_ds2, T3_ds2, T4_ds2 = 0; // Merker Transponder an Eingang 2 erkannt
boolean T1_ds3, T2_ds3, T3_ds3, T4_ds3 = 0; // Merker Transponder an Eingang 3 erkannt
boolean T1_ds4, T2_ds4, T3_ds4, T4_ds4 = 0; // Merker Transponder an Eingang 4 erkannt
boolean T1_ds5, T2_ds5, T3_ds5, T4_ds5 = 0;
void setup(void) { // Hardware funktionen festlegen
Serial.begin(9600); // Ausgabe Serieller Monitor initialisieren (zur indentifikation der Transpondernummer)
}
void loop(void) { // Main Programm
getKeyCode(); // Aufruf Unterprogramm
if(keyStatus_1==1){ // Ist ein Transponder vorhanden ->
/* Serial.println("");
byte i; // Aufbereiten der Serien Nr. zur Ausgabe an Seriellen Monitor (indentifikation)
for( i = 4; i >0; i--) {
Serial.print(" : "); // Trennzeichen zwischen bytes
Serial.print(addr_1, DEC); // Ausgabe Serien Nr. auf Serien Monitor
} */
if(addr_1[1] == but_1[5] && addr_1[2] == but_1[4] && addr_1[3] == but_1[3] && addr_1[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds1=1;} else {T1_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_1[1] == but_2[5] && addr_1[2] == but_2[4] && addr_1[3] == but_2[3] && addr_1[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds1=1;} else {T2_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_1[1] == but_3[5] && addr_1[2] == but_3[4] && addr_1[3] == but_3[3] && addr_1[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds1=1;} else {T3_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_1[1] == but_4[5] && addr_1[2] == but_4[4] && addr_1[3] == but_4[3] && addr_1[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds1=1;} else {T4_ds1=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds1=0;T2_ds1=0;T3_ds1=0;T4_ds1=0;} // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
if(keyStatus_2==1){ // Ist ein Transponder vorhanden ->
if(addr_2[1] == but_1[5] && addr_2[2] == but_1[4] && addr_2[3] == but_1[3] && addr_2[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds2=1;} else {T1_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_2[1] == but_2[5] && addr_2[2] == but_2[4] && addr_2[3] == but_2[3] && addr_2[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds2=1;} else {T2_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_2[1] == but_3[5] && addr_2[2] == but_3[4] && addr_2[3] == but_3[3] && addr_2[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds2=1;} else {T3_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_2[1] == but_4[5] && addr_2[2] == but_4[4] && addr_2[3] == but_4[3] && addr_2[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds2=1;} else {T4_ds2=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds2=0; T2_ds2=0; T3_ds2=0; T4_ds2=0; } // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
if(keyStatus_3==1){ // Ist ein Transponder vorhanden ->
if(addr_3[1] == but_1[5] && addr_3[2] == but_1[4] && addr_3[3] == but_1[3] && addr_3[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds3=1;} else {T1_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_3[1] == but_2[5] && addr_3[2] == but_2[4] && addr_3[3] == but_2[3] && addr_3[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds3=1;} else {T2_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_3[1] == but_3[5] && addr_3[2] == but_3[4] && addr_3[3] == but_3[3] && addr_3[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds3=1;} else {T3_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_3[1] == but_4[5] && addr_3[2] == but_4[4] && addr_3[3] == but_4[3] && addr_3[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds3=1;} else {T4_ds3=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt
// Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds3=0; T2_ds3=0; T3_ds3=0; T4_ds3=0; } // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
if(keyStatus_4==1){ // Ist ein Transponder vorhanden ->
if(addr_4[1] == but_1[5] && addr_4[2] == but_1[4] && addr_4[3] == but_1[3] && addr_4[4] == but_1[2]){ // vergleiche Serien Nr. des schwarzen Transponders
T1_ds4=1;} else {T1_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des schwarzen Transponder nicht uebereinstimmt
if(addr_4[1] == but_2[5] && addr_4[2] == but_2[4] && addr_4[3] == but_2[3] && addr_4[4] == but_2[2]){ // vergleiche Serien Nr. des roten Transponders
T2_ds4=1;} else {T2_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des roten Transponder nicht uebereinstimmt
if(addr_4[1] == but_3[5] && addr_4[2] == but_3[4] && addr_4[3] == but_3[3] && addr_4[4] == but_3[2]){ // vergleiche Serien Nr. des blauen Transponders
T3_ds4=1;} else {T3_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des blauen Transponder nicht uebereinstimmt
if(addr_4[1] == but_4[5] && addr_4[2] == but_4[4] && addr_4[3] == but_4[3] && addr_4[4] == but_4[2]){ // vergleiche Serien Nr. des gruenen Transponders
T4_ds4=1;} else {T4_ds4=0;} // Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gruenen Transponder nicht uebereinstimmt
// Merker ruecksetzen , wenn Serien Nr. nicht mit dem des gelben Transponder nicht uebereinstimmt
}
else {T1_ds4=0; T2_ds4=0; T3_ds4=0; T4_ds4=0; } // Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
// Alle angemeldeten Transponder an diesem Pin zuruecksetzen (keyStatus==0)
Serial.println("");
if (T1_ds1 == 1 | T1_ds2 == 1 | T1_ds3 == 1 | T1_ds4 == 1 | T1_ds5 ==1) { // Pruefe, ob Tranponder 1 vorhanden
Serial.println("HD10104000000");} else {Serial.println("HD10104010000");}
if (T2_ds1 == 1 | T2_ds2 == 1 | T2_ds3 == 1 | T2_ds4 == 1 | T2_ds5 ==1) { // Pruefe, ob Tranponder 2 vorhanden
Serial.println("HD10204000000");} else {Serial.println("HD10204010000"); }
if (T3_ds1 == 1 | T3_ds2 == 1 | T3_ds3 == 1 | T3_ds4 == 1 | T3_ds5 ==1) { // Pruefe, ob Tranponder 3 vorhanden
Serial.println("HD10304000000");} else {Serial.println("HD10304010000"); }
if (T4_ds1 == 1 | T4_ds2 == 1 | T4_ds3 == 1 | T4_ds4 == 1 | T4_ds5 ==1) { // Pruefe, ob Tranponder 4 vorhanden
Serial.println("HD10404000000");} else {Serial.println("HD10404010000"); }
delay(1000);
}
void getKeyCode(){ // Unterprogramm
addr_1[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_1); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_1[0]==0x01){keyStatus_1=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_1=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
addr_2[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_2); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_2[0]==0x01){keyStatus_2=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_2=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
addr_3[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_3); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_3[0]==0x01){keyStatus_3=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_3=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
addr_4[0]=0; // eingelesene Adresse zurueck setzen
onewire_Bus.search(addr_4); // adress suche starten und in byte "addr" schreiben
onewire_Bus.reset_search(); // adress suche stoppen
if (addr_4[0]==0x01){keyStatus_4=1;} // Ist ein Tranponder vorhanden schreibe 1 (Dieser "Merker" ist notwendig,
else keyStatus_4=0; // Andernfalls schreibe 0 ansonsten steht f�r einen Zyklus eine 0 an)
onewire_Bus.reset(); // Zur�cksetzen der 1-Wire Libery ???
}
Re: Digitales Schlüsselbrett mit iButtons und Arduino
Hallo ich hätte eine Frage an die Elektroniker.
Ich bin fast fertig mit dem Schlüsselbrett, doch leider habe ich noch ein Problem. Wenn ich 3 Buttons direkt am Arduino anschliesse funktioniert alles wunderbar.
Doch wenn ich einen vierten anschliesse geht einer nicht. Jetzt habe ich noch festgestellt das wenn ich alles über die Hausinstallation anschliesse, geht immer nur einer.
Angeschlossen habe ich alle in Reihe, mit einem 10k Widerstand zwischen 5V und Anschlussport. Am Anfang von diesem Thread ist die Rede von einem 4,7k Widerstand, kann das das Problem sein?
Oder kann es sein, das die Leitung zu lang ist und der Strom für 4 Buttons zu wenig ist?
Leider kenne ich mich mit Widerständen und dem Strom nicht so genau aus, kann mir da jemand helfen?
Gruss Oli
Ich bin fast fertig mit dem Schlüsselbrett, doch leider habe ich noch ein Problem. Wenn ich 3 Buttons direkt am Arduino anschliesse funktioniert alles wunderbar.
Doch wenn ich einen vierten anschliesse geht einer nicht. Jetzt habe ich noch festgestellt das wenn ich alles über die Hausinstallation anschliesse, geht immer nur einer.
Angeschlossen habe ich alle in Reihe, mit einem 10k Widerstand zwischen 5V und Anschlussport. Am Anfang von diesem Thread ist die Rede von einem 4,7k Widerstand, kann das das Problem sein?
Oder kann es sein, das die Leitung zu lang ist und der Strom für 4 Buttons zu wenig ist?
Leider kenne ich mich mit Widerständen und dem Strom nicht so genau aus, kann mir da jemand helfen?
Gruss Oli