2016-12-10 5 views
0

私は8チャンネルのリレーボードに接続されています。私はVixen 3と一緒に使ってみたいです。コードをアップロードすると、すべてのリレーがオンになります。だから、私がVixenで信号を送ると、リレーはオフになります。私はこれを反転させる方法が必要なので、私は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

は、あなたの回路と、あなたが使用している中継基板へのリンクも概略図を追加することはできますか?ちょうど私はいくつかの問題を見ることができます:あなたは、PWM機能(3,5,6,9,10,11)を持つピンでanalogWriteを使うことができます。番号の隣に〜が付いているもの。また、incomingByteには8つのメンバー(0〜7)しかないので、forループの終了条件は "i <8"にする必要があります。 – Sam

+0

なぜPWMを使ってリレーを制御していますか?ピン番号の配列を使用していないのはなぜですか? –

答えて

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]); 
     } 
    }