Hallo,
Ich bin gerade dabei mir eine Rolladensteuerung zu Programmieren, ich habe mich da mit ein paar Schnipsel im Forum Weitergeholfen (Ich hoffe ich darf das).
Derzeit habe ich 8 Taster angeschlossen und jeden den ich drücke, zieht das Relais für eine Gewisse Zeit an, und fällt wieder ab, die Zeit stelle ich dann bei bedarf ein.
Die Schaltung geht soweit ganz gut auf dem Schreibtisch, nur meine Frage ist es jetzt, ich brauche 33 Eingänge als Taster, ich haben den Mega2560
Digital 22 bis 53 sind derzeit die Relais angeschlossen
Taster hab ich erst einmal zum Testen an 2 bis 9 Angeschlossen.
Die Relais sind LOW Aktiv
Ich habe derzeit nur 3 kleine Fragen.
-
Das Relais soll erst beim Loslassen des Tasters anziehen, damit kann ich später machen das nach 2sec. Druck der 2. Rolladen z.b. in der Küche mitfährt, also Drücken <2 Sec. Rolladen Küche1 Fährt Runter -- Tastendruck >2 sec. Rolladen Küche2 fährt dann mit Runter, und das gleiche gilt auf für auf.
-
Wärend der Fahrt vom Rolladen möchte ich bei Tastendruck das der Rolladen wieder stehen bleibt.
-
Wie kann ich die 33 Taster oder mehr daran anschliesen und auch getrennt abfragen? ich dachte da an die Tastatur- Marix, also Taster an 0 bis 7 und 8 bis 12 ergibt 40 Tasten? oder gibt es was besseres?
Ich weiß das sind viele Fragen, aber für jede noch so kleine Hiefe bin ich Dankbar
Anbei mein Programm ---- Bitte nicht lachen :~
#define E1 2 //Taster Küche1 ab
#define E2 3 //Taster Küche1 auf
#define E3 4 //Taster Küche2 ab
#define E4 5 //Taster Küche2 auf
#define E5 6 //Taster Esszimmer ab
#define E6 7 //Taster Esszimmer auf
#define E7 8 //Taster Wohnzimmer1 ab
#define E8 9 //Taster Wohnzimmer1 auf
#define Au1 22 // Relais Küche1 ab
#define Au2 23 // Relais Küche1 auf
#define Au3 24 // Relais Küche2 ab
#define Au4 25 // Relais Küche2 auf
#define Au5 26 // Relais Esszimmer ab
#define Au6 27 // Relais Esszimmer auf
#define Au7 28 // Relais Wohnzimmer1 ab
#define Au8 29 // Relais Wohnzimmer2 auf
// Weitere Relais bis Anschluß 53
long timer_1 = 0; // Timmer für die Relais
long timer_2 = 0;
long timer_3 = 0;
long timer_4 = 0;
long timer_5 = 0;
long timer_6 = 0;
long timer_7 = 0;
long timer_8 = 0;
boolean z1 = 0;
boolean z2 = 0;
boolean z3 = 0;
boolean z4 = 0;
boolean z5 = 0;
boolean z6 = 0;
boolean z7 = 0;
boolean z8 = 0;
// Timer Steuerung **************************************
boolean ctr_timer(long &timer, unsigned int waitTime)
{
if(timer < millis()) {
timer = millis() + waitTime;
return true;
}
else {
return false;
}
}
void setup()
{
for(int i=22;i<=53;i++) // PortAusgang 22 bis 53 als Ausgang
{
pinMode (i, OUTPUT);
digitalWrite(i, HIGH);
}
for(int i=2;i<=9;i++) // Port Eingang 2 bis 8 als Eingang
{
pinMode (i, INPUT);
digitalWrite(i, LOW);
}
}
void loop()
{
// Taster Küche1 ab ***********************************************
if(digitalRead(E1)) {
z1 = true;
timer_1 = 0;
}
if(ctr_timer(timer_1, 3000)) {
if(z1 == true) {
z1 = false;
digitalWrite(Au1, LOW); // Rolladen Küche1 fährt ab
}
else {
digitalWrite(Au1, HIGH);
}
}
// Taster Küche1 auf ************************************************
if(digitalRead(E2)) {
z2 = true;
timer_2 = 0;
}
if(ctr_timer(timer_2, 3000)) {
if(z2 == true) {
z2 = false;
digitalWrite(Au2, LOW); // Rolladen Küche1 fährt auf
}
else {
digitalWrite(Au2, HIGH);
}
}
// Taster Küche2 ab ************************************************
if(digitalRead(E3))
{
z3 = true;
timer_3 = 0;
}
if(ctr_timer(timer_3, 3000)) {
if(z3 == true) {
z3 = false;
digitalWrite(Au3, LOW); // Rolladen Küche2 fährt ab
}
else {
digitalWrite(Au3, HIGH);
}
}
// Taster Küche2 auf ************************************************
if(digitalRead(E4)) {
z4 = true;
timer_4 = 0;
}
if(ctr_timer(timer_4, 3000)) {
if(z4 == true) {
z4 = false;
digitalWrite(Au4, LOW); // Rolladen Küche2 fährt auf
}
else {
digitalWrite(Au4, HIGH);
}
}
// Esszimmer ab ************************************************
if(digitalRead(5)) {
z5 = true;
timer_5 = 0;
}
if(ctr_timer(timer_5, 3000)) {
if(z5 == true) {
z5 = false;
digitalWrite(Au5, LOW); // Rolladen Esszimmer fährt ab
}
else {
digitalWrite(Au5, HIGH);
}
}
// Taster Esszimmer auf ************************************************
if(digitalRead(6)) {
z6 = true;
timer_6 = 0;
}
if(ctr_timer(timer_6, 3000)) {
if(z6 == true) {
z6 = false;
digitalWrite(Au6, LOW); // Rolladen Esszimmer fährt auf
}
else {
digitalWrite(Au6, HIGH);
}
}
// Wohnzimmer1 ab ************************************************
if(digitalRead(7)) {
z7 = true;
timer_7 = 0;
}
if(ctr_timer(timer_7, 3000)) {
if(z7 == true) {
z7 = false;
digitalWrite(Au7, LOW); // Rolladen Wohnzimmer1 fährt ab
}
else {
digitalWrite(Au7, HIGH);
}
}
// Wohnzimmer1 auf ************************************************
if(digitalRead(8)) {
z8 = true;
timer_8 = 0;
}
if(ctr_timer(timer_8, 3000)) {
if(z8 == true) {
z8 = false;
digitalWrite(Au8, LOW); // Rolladen Wohnzimmer1 fährt auf
}
else {
digitalWrite(Au8, HIGH);
}
}
// *****************************************************************
}
[EDIT]Code Tags eingefügt. Uwe [/EDIT]