2016-12-10 3 views
0

Ich habe ein Arduino uno an eine 8-Kanal-Relaisplatine angeschlossen. Ich möchte es mit Vixen 3 verwenden. Wenn ich den Code hochlade, schalten sich alle Relais ein. Also, wenn ich ein Signal in Vixen sende, schaltet sich das Relais aus. Ich brauche eine Möglichkeit, dies zu invertieren, also wenn ich das Signal von Vixen sende, schaltet es das Relais ein. Die Coding-Seite ist nicht wirklich meine Stärke, also bitte schont mich.Arduino für Weihnachten Lichtsteuerung - invertieren Code

Mit Liebe 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

Können Sie das Schema fügen auch Ihrer Schaltung und einen Link zu der Relaiskarte Sie verwenden? Im Moment sehe ich ein paar Probleme: Sie können analogWrite nur mit Pins verwenden, die eine PWM-Funktion haben (3, 5, 6, 9, 10, 11). Die mit dem ~ neben der Nummer. Außerdem sollte die Endbedingung für Ihre for-Schleife "i <8" sein, da incomingByte nur 8 Mitglieder hat (0 bis 7). – Sam

+0

Warum verwenden Sie PWM, um die Relais zu steuern? Warum verwenden Sie kein Array für Pin-Nummern? –

Antwort

0

diesen Code Versuchen:

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