2016-12-10 49 views
0

我有一個arduino uno連接到一個8通道中繼板。我想與Vixen 3一起使用它。當我上傳代碼時,所有的繼電器都打開。所以,當我發送一個信號威克森繼電器關閉。我需要一種反轉方式,所以當我發送來自Vixen的信號時,它會打開繼電器。編碼方面並不是我的強項,所以請對我輕鬆一點。Arduino聖誕燈控制 - 反向代碼

有了愛XX

int C1 = 2; 
int C2 = 3; 
int C3 = 4; 
int C4 = 5; 
int C5 = 6; 
int C6 = 7; 
int C7 = 8; 
int C8 = 9; 
int i = 0; 
int incomingByte[8]; 

void setup() 
{ 
    Serial.begin(9600); 
    pinMode(C1, OUTPUT); 
    pinMode(C2, OUTPUT); 
    pinMode(C3, OUTPUT); 
    pinMode(C4, OUTPUT); 
    pinMode(C5, OUTPUT); 
    pinMode(C6, OUTPUT); 
    pinMode(C7, OUTPUT); 
    pinMode(C8, OUTPUT); 
} 

void loop() 
{ 
    if (Serial.available() >= 8) { 
    for (int i=0; i<=8; i++) 
    { 
     incomingByte[i] = Serial.read(); 
    } 
    analogWrite(C1, incomingByte[0]); 
    analogWrite(C2, incomingByte[1]); 
    analogWrite(C3, incomingByte[2]); 
    analogWrite(C4, incomingByte[3]); 
    analogWrite(C5, incomingByte[4]); 
    analogWrite(C6, incomingByte[5]); 
    analogWrite(C7, incomingByte[6]); 
    analogWrite(C8, incomingByte[7]); 
    } 
} 
+1

您可以添加原理也是你的電路和您使用的繼電器板的鏈接?現在我可以看到幾個問題:只能使用analogWrite和具有pwm功能的引腳(3,5,6,9,10,11)。數字旁邊的那個。因爲incomingByte只有8個成員(0到7),所以for循環的結束條件應該是「i <8」。 – Sam

+0

你爲什麼用PWM來控制繼電器?你爲什麼不使用數組作爲PIN碼? –

回答

0

試試這個代碼:

int C1 = 2; 
    int C2 = 3; 
    int C3 = 4; 
    int C4 = 5; 
    int C5 = 6; 
    int C6 = 7; 
    int C7 = 8; 
    int C8 = 9; 
    int i = 0; 
    int incomingByte[8]; 

    void setup() 
    { 
     Serial.begin(9600); 
     pinMode(C1, OUTPUT); 
     pinMode(C2, OUTPUT); 
     pinMode(C3, OUTPUT); 
     pinMode(C4, OUTPUT); 
     pinMode(C5, OUTPUT); 
     pinMode(C6, OUTPUT); 
     pinMode(C7, OUTPUT); 
     pinMode(C8, OUTPUT); 
     digitalWrite(C1, LOW); 
     digitalWrite(C2, LOW); 
     digitalWrite(C3, LOW); 
     digitalWrite(C4, LOW); 
     digitalWrite(C5, LOW); 
     digitalWrite(C6, LOW); 
     digitalWrite(C7, LOW); 
     digitalWrite(C8, LOW); 
    } 

    void loop() 
    { 
     if (Serial.available() >= 8) { 
     for (int i = 0; i <= 8; i++) 
     { 
      incomingByte[i] = Serial.read(); 
     } 
     analogWrite(C1, incomingByte[0]); 
     analogWrite(C2, incomingByte[1]); 
     analogWrite(C3, incomingByte[2]); 
     analogWrite(C4, incomingByte[3]); 
     analogWrite(C5, incomingByte[4]); 
     analogWrite(C6, incomingByte[5]); 
     analogWrite(C7, incomingByte[6]); 
     analogWrite(C8, incomingByte[7]); 
     } 
    }