short butonpin = 3, role1 = 5, role2 =6, role3 = 7, role4 = 8, rolemode = 0;
void setup ()
{
pinMode (butonpin , INPUT_PULLUP);
pinMode (role1 , OUTPUT);
pinMode (role2 , OUTPUT);
pinMode (role3 , OUTPUT);
pinMode (role4 , OUTPUT);
}
void loop()
{
if (!digitalRead(butonpin))
{
if (rolemode<6)
{
rolemode++;
} else {
rolemode=0;
}
}
switch (rolemode) {
case 0:
digitalWrite(role1,0);
digitalWrite(role2,0);
digitalWrite(role3,0);
digitalWrite(role4,0);
break;
case 1:
digitalWrite(role1,1);
digitalWrite(role2,0);
digitalWrite(role3,0);
digitalWrite(role4,0);
break;
case 2:
digitalWrite(role1,1);
digitalWrite(role2,1);
digitalWrite(role3,0);
digitalWrite(role4,0);
break;
case 3:
digitalWrite(role1,1);
digitalWrite(role2,1);
digitalWrite(role3,1);
digitalWrite(role4,0);
break;
case 4:
digitalWrite(role1,1);
digitalWrite(role2,1);
digitalWrite(role3,1);
digitalWrite(role4,1);
delay(5000);
rolemode++;
break;
case 5:
digitalWrite(role1,1);
digitalWrite(role2,1);
digitalWrite(role3,1);
digitalWrite(role4,0);
break;
}
}
bu hali ile derleniyor. 2 tane de ; unutmuşum. Normalde fonksiyon içine yazmak mantıklı ama ilk hali ile alt fonksiyonlar olmadan yazmıştım yapıyı değiştirmedim. Butona basımını kaçırmaması için interruptları kullanabilirsiniz. Butonun bir ucu D3 diğer ucu GND ye bağlı olmalı. Elinizdeki Röleler için GND GND ye VCC 5v ye in1, in2, in3 ve in4 sırasıyla D5, D6, D7 ve D8 e bağlanmalı. Röleler yüksek voltaj tarafında + hat üzerinde araya bir ucu com a diğer ucu NO ya gelecek şekilde bağlanmalı. Yüksek voltaj tarafı ölümcüldür. İş yaparken mutlaka dikkat edilmeli... Yardımcı olmak adına yazdım herhangi bir sorumluluk almıyorum.