Arduino push buton röle kontrolü

Trip süresi boyunca beklemeniz gerekir. Daha sonra açabilirsiniz. Esas neden trip pozisyonuna gittiğini bulmanız gerekir. Konu yanlış yerde. Benim çok anladığım bir konu değil. 5volttan yukarısı bana sıkıntı ;)
Sağolun herzaman yapmıyor 2 ayda bir falan yapıyor dairelerden birinde kısa,devvre veya voltaj dalgalanması olabilir diye düşündüm trşp süresi dedğiniz sıfır yönünde bastırıp tık sesi gelinceye kadarmı ? Kolay gelsin
 
Hocam ilk enerjiyi verdiğimde rölelerin tümü çekip bırakıyor ardından 2sn sonra hepsi çekiyor butona bastığımda hepsi siniyor 5sn sonra sadece 4 nolu role tekrar çekiyor diğerleri hiç cekmiyor butona bastıkça 4 nolu röle bırakıp 5sn sonra tekrar çekiyor...
 
Kod:
short butonpin = 3, role1 = 5, role2 =6, role3 = 7, role4 = 8, rolemode = 0;

void setup ()

{

Serial.begin(9600);

pinMode (butonpin , INPUT_PULLUP);

pinMode (role1 , OUTPUT);

pinMode (role2 , OUTPUT);

pinMode (role3 , OUTPUT);

pinMode (role4 , OUTPUT);

}

void loop()

{

if (!digitalRead(butonpin))

{delay(250);

if (rolemode<5)

{

rolemode++;

Serial.println(rolemode);

} else {

rolemode=0;

}

}

switch (rolemode) {

case 0:

digitalWrite(role1,0);

digitalWrite(role2,0);

digitalWrite(role3,0);

digitalWrite(role4,0);

Serial.println("case 0");

break;

case 1:

digitalWrite(role1,1);

digitalWrite(role2,0);

digitalWrite(role3,0);

digitalWrite(role4,0);

Serial.println("case 1");

break;

case 2:

digitalWrite(role1,1);

digitalWrite(role2,1);

digitalWrite(role3,0);

digitalWrite(role4,0);

Serial.println("case 2");

break;

case 3:

digitalWrite(role1,1);

digitalWrite(role2,1);

digitalWrite(role3,1);

digitalWrite(role4,0);

Serial.println("case 3");

break;

case 4:

digitalWrite(role1,1);

digitalWrite(role2,1);

digitalWrite(role3,1);

digitalWrite(role4,1);

delay(5000);

rolemode++;

Serial.println("case 4");

break;

case 5:

digitalWrite(role1,1);

digitalWrite(role2,1);

digitalWrite(role3,1);

digitalWrite(role4,0);

Serial.println("case 5");

break;

}

}
butona yeterince kısa süre basamadığımız için öyle oluyormuş. butona çeyrek saniyeden kısa süre basmalısınız :) ona göre ufak bir ayar daha verdim. şu haliyle baş tarafı yapıyor son adımda ne yapması gerektiğine tam karar veremedim. bir bakın olmazsa bir daha düzeltiriz...

IMG_20200715_003041.jpg

Devreyi şu şekilde kurdum ben.
Butonun bir bacağı gnd üzerinde diğeri d3
Elimde boşta röle olmadığı için LED ile denedim. Ledlerin katotları direnç üzerinden gnd ye gidiyor.
Anotları da ilgili pine bağlı.

Kod:
short butonpin = 3, role1 = 5, role2 =6, role3 = 7, role4 = 8, rolemode = 0;

void setup ()

{

Serial.begin(9600);

pinMode (butonpin , INPUT_PULLUP);

pinMode (role1 , OUTPUT);

pinMode (role2 , OUTPUT);

pinMode (role3 , OUTPUT);

pinMode (role4 , OUTPUT);

}

void loop()

{

if (!digitalRead(butonpin))

{delay(250);

if (rolemode<5)

{

rolemode++;

Serial.println(rolemode);

} else {

rolemode=0;

}

}

switch (rolemode) {

case 0:

digitalWrite(role1,1);

digitalWrite(role2,1);

digitalWrite(role3,1);

digitalWrite(role4,1);

Serial.println("case 0");

break;

case 1:

digitalWrite(role1,0);

digitalWrite(role2,1);

digitalWrite(role3,1);

digitalWrite(role4,1);

Serial.println("case 1");

break;

case 2:

digitalWrite(role1,0);

digitalWrite(role2,0);

digitalWrite(role3,1);

digitalWrite(role4,1);

Serial.println("case 2");

break;

case 3:

digitalWrite(role1,0);

digitalWrite(role2,0);

digitalWrite(role3,0);

digitalWrite(role4,2);

Serial.println("case 3");

break;

case 4:

digitalWrite(role1,0);

digitalWrite(role2,0);

digitalWrite(role3,0);

digitalWrite(role4,0);

delay(5000);

rolemode++;

Serial.println("case 4");

break;

case 5:

digitalWrite(role1,0);

digitalWrite(role2,0);

digitalWrite(role3,0);

digitalWrite(role4,1);

Serial.println("case 5");

break;

}

}
Röleler active low olduğu için burdan devam edelim.
 
Moderatör tarafında düzenlendi:

Forum istatistikleri

Konular
129,840
Mesajlar
930,680
Kullanıcılar
452,678
Son üye
TengRi

Yeni konular

Geri
Üst