Arduino编程
Arduino programming
这是我的代码。如果继电器 1 打开则不要关闭继电器 2,如果继电器 2 打开则不要关闭继电器 1。我一次只能打开一个继电器。我想要这样,如果继电器 1 打开,则不要关闭继电器 2,反之亦然。
int D0=1; //Data pins 0 of DTMF Decoder int D1=2; //Data pins 1 of
DTMF Decoder int D2=3; //Data pins 2 of DTMF Decoder int D3=4; //Data
pins 3 of DTMF Decoder int Relay1 = 13; int Relay2 = 12;
void setup() {
pinMode(Relay1, OUTPUT);
digitalWrite(Relay1, HIGH);
pinMode(Relay2, OUTPUT);
digitalWrite(Relay2, HIGH);
}
void loop() {
// When 0 pressed : 0 0 0 0 (Turning all the relays to off state
// When 1 pressed : 0 0 0 1
if (digitalRead(D3)==0 && digitalRead(D2)==0 && digitalRead(D1)==0 && digitalRead(D0)==1 ) {
digitalWrite(Relay1, HIGH); // Turning the Relay1 ON state
delay(200);
}
if (digitalRead(D3)==0 && digitalRead(D2)==0 && digitalRead(D1)==1 && digitalRead(D0)==0) {
digitalWrite(Relay1, LOW);
delay(200);
}
if (digitalRead(D3)==0 && digitalRead(D2)==1 && digitalRead(D1)==0 && digitalRead(D0)==0) {
digitalWrite(Relay2, HIGH); // Turning the Relay2 ON state
delay(200);
}
if (digitalRead(D3)==0 && digitalRead(D2)==1 && digitalRead(D1)==0 && digitalRead(D0)==1) {
digitalWrite(Relay2, LOW);
delay(200);
}
}
将您的逻辑替换为连续读取并检查以读取一次并检查。这适用于我创建的测试设置(只有 4 个按钮和 2 个 LED)。
void setup() {
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(D0, INPUT);
pinMode(D1, INPUT);
pinMode(D2, INPUT);
pinMode(D3, INPUT);
digitalWrite(Relay1, HIGH);
digitalWrite(Relay2, HIGH);
}
void loop() {
byte DTMF_data = 0x00;
DTMF_data = (digitalRead(D3) << 3) | (digitalRead(D2) << 2) | (digitalRead(D1) << 1) | (digitalRead(D0) << 0);
switch(DTMF_data) // Cases based on previous `if` conditions
{
case 1: // 0 0 0 1
digitalWrite(Relay1, HIGH);
delay(200);
break;
case 2: // 0 0 1 0
digitalWrite(Relay1, LOW);
delay(200);
break;
case 4: // 0 1 0 0
digitalWrite(Relay2, HIGH);
delay(200);
break;
case 5: // 0 1 0 1
digitalWrite(Relay2, LOW);
delay(200);
break;
}
}
这是我的代码。如果继电器 1 打开则不要关闭继电器 2,如果继电器 2 打开则不要关闭继电器 1。我一次只能打开一个继电器。我想要这样,如果继电器 1 打开,则不要关闭继电器 2,反之亦然。
int D0=1; //Data pins 0 of DTMF Decoder int D1=2; //Data pins 1 of
DTMF Decoder int D2=3; //Data pins 2 of DTMF Decoder int D3=4; //Data
pins 3 of DTMF Decoder int Relay1 = 13; int Relay2 = 12;
void setup() {
pinMode(Relay1, OUTPUT);
digitalWrite(Relay1, HIGH);
pinMode(Relay2, OUTPUT);
digitalWrite(Relay2, HIGH);
}
void loop() {
// When 0 pressed : 0 0 0 0 (Turning all the relays to off state
// When 1 pressed : 0 0 0 1
if (digitalRead(D3)==0 && digitalRead(D2)==0 && digitalRead(D1)==0 && digitalRead(D0)==1 ) {
digitalWrite(Relay1, HIGH); // Turning the Relay1 ON state
delay(200);
}
if (digitalRead(D3)==0 && digitalRead(D2)==0 && digitalRead(D1)==1 && digitalRead(D0)==0) {
digitalWrite(Relay1, LOW);
delay(200);
}
if (digitalRead(D3)==0 && digitalRead(D2)==1 && digitalRead(D1)==0 && digitalRead(D0)==0) {
digitalWrite(Relay2, HIGH); // Turning the Relay2 ON state
delay(200);
}
if (digitalRead(D3)==0 && digitalRead(D2)==1 && digitalRead(D1)==0 && digitalRead(D0)==1) {
digitalWrite(Relay2, LOW);
delay(200);
}
}
将您的逻辑替换为连续读取并检查以读取一次并检查。这适用于我创建的测试设置(只有 4 个按钮和 2 个 LED)。
void setup() {
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(D0, INPUT);
pinMode(D1, INPUT);
pinMode(D2, INPUT);
pinMode(D3, INPUT);
digitalWrite(Relay1, HIGH);
digitalWrite(Relay2, HIGH);
}
void loop() {
byte DTMF_data = 0x00;
DTMF_data = (digitalRead(D3) << 3) | (digitalRead(D2) << 2) | (digitalRead(D1) << 1) | (digitalRead(D0) << 0);
switch(DTMF_data) // Cases based on previous `if` conditions
{
case 1: // 0 0 0 1
digitalWrite(Relay1, HIGH);
delay(200);
break;
case 2: // 0 0 1 0
digitalWrite(Relay1, LOW);
delay(200);
break;
case 4: // 0 1 0 0
digitalWrite(Relay2, HIGH);
delay(200);
break;
case 5: // 0 1 0 1
digitalWrite(Relay2, LOW);
delay(200);
break;
}
}