• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
sterowanie przekaźnikami problem
#1
witam.
Jestem nowy na forum od niedawna posiadam arduino mega
chciałbym wykonać układ który załączał by 2 przekaźniki:
1. pierwszy przycisk (button) załącza 1 przekaźnik i nie wyłącza do momentu następnego przyciśnięcia. 2 przekaźnik oczekuje na sygnał drugiego przycisku.
2. drugi przycisk (button)  załącza 2 przekaźnik  i nie wyłącza do momentu następnego przyciśnięcia. 1 przekaznik oczekuje na sygnał z 1 buttona.
Ogólny zamysł jest taki że maja pracować niezależnie.
Napisałem kod ale nie rozumiem gdzie jest błąd jeżeli ktoś ma pomysł co jest nie tak to bedę wdzięczny za wszelkie rady.
Aktualnie układ działa tak ze mogę sterować jedynie jednym przekaźnikiem z obydwojgu przycisków.

Kod:
int buttonInput_1 =22;
int buttonInput_2 =24;

int buttonPushCounter_1 =0;
int buttonState_1=0;
int lastButtonState_1=0;

int buttonPushCounter_2 =0;
int buttonState_2=0;
int lastButtonState_2=0;

int relayOutput_1 =26;
int relayOutput_2 =28;

void setup () {
 
 pinMode(buttonInput_1,INPUT);
 pinMode(buttonInput_2, INPUT);

 pinMode(relayOutput_1, OUTPUT);
 pinMode(relayOutput_2, OUTPUT);

 Serial.begin(9600);
 }

void loop (){

            // button 1
 buttonState_1=digitalRead(buttonInput_1);
 if(buttonState_1 != lastButtonState_1){
   if(buttonState_1==HIGH){
     buttonPushCounter_1++;
     Serial.print(" relay 1 On");
     Serial.print(buttonPushCounter_1);
     }else{ Serial.print(" relay 1 Off");
     }
 }
 lastButtonState_1=buttonState_1;
 if(buttonPushCounter_1%4==0){
   digitalWrite(relayOutput_1, LOW);
   digitalWrite(relayOutput_2, HIGH);
   }else{
     digitalWrite(relayOutput_1, HIGH);
     digitalWrite(relayOutput_2, HIGH);
     }
     
               // button2:
 buttonState_2=digitalRead(buttonInput_2);
 if(buttonState_2 != lastButtonState_2){
   if(buttonState_2==HIGH){
     buttonPushCounter_1++;
     Serial.print(" relay 2 On");
     Serial.print(buttonPushCounter_1);
     }else{ Serial.print(" relay 2 Off");
     }
     delay(10);
 }
 lastButtonState_2=buttonState_2;
 if(buttonPushCounter_2%4==0){
   digitalWrite(relayOutput_2, LOW);
   digitalWrite(relayOutput_1, HIGH);
   }else{
     digitalWrite(relayOutput_2, HIGH);
     digitalWrite(relayOutput_1, HIGH);
     }
   }
 
Odpowiedź
#2
Zamień tylko piny wejścia i wyjścia w kodzie i powinno działać a przyciski tylko do masy i piny wejścia

Kod:
int buttonInput_1 =2;
int buttonPushCounter_1 = 0;
int buttonState_1=0;

int relayOutput_1 =6;

int buttonInput_2 =4;
int buttonPushCounter_2 =0;
int buttonState_2=0;

int relayOutput_2 =8;

void setup () {
  
  pinMode(buttonInput_1,INPUT_PULLUP);
  pinMode(buttonInput_2, INPUT_PULLUP);

  pinMode(relayOutput_1, OUTPUT);
  pinMode(relayOutput_2, OUTPUT);

  Serial.begin(9600);

  
  }

void loop (){

             // button 1
if (digitalRead(buttonInput_1) == LOW and buttonState_1 == LOW ){
    buttonState_1 = HIGH ; delay(50);
    if (digitalRead(relayOutput_1) == HIGH ){
        digitalWrite(relayOutput_1, LOW);
        Serial.println(" relay 1 Off ");}
    else { if (digitalRead(relayOutput_1) == LOW ){
         digitalWrite(relayOutput_1, HIGH);
         buttonPushCounter_1++;
    Serial.print(" relay 1 On / ");
    Serial.println(buttonPushCounter_1);}}}

if (digitalRead(buttonInput_1) == HIGH ){
    buttonState_1 = LOW ;delay(50); }
  
             // button 2
if (digitalRead(buttonInput_2) == LOW and buttonState_2 == LOW ){
    buttonState_2 = HIGH ; delay(50);
    if (digitalRead(relayOutput_2) == HIGH ){
        digitalWrite(relayOutput_2, LOW);
        Serial.println(" relay 2 Off ");}
    else { if (digitalRead(relayOutput_2) == LOW ){
         digitalWrite(relayOutput_2, HIGH);
         buttonPushCounter_2++;
    Serial.print(" relay 2 On / ");
    Serial.println(buttonPushCounter_2);}}}

if (digitalRead(buttonInput_2) == HIGH ){
    buttonState_2 = LOW ;delay(50); }

    
  
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
ok. po chwilowej nie obecności sprawdziłem kod od kolegi JasQ .
Wszystko działa jak najbardziej w porządku.
Dzięki za pomoc temat do zamknięcia
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości