Arduino и vixen

Тема в разделе "Arduino & Shields", создана пользователем Александр7, 17 янв 2021.

  1. Всем привет!

    2 года назад увидел в интернете как люди украшают дома на новый год и оно все мигает под музыку и начал гуглить в инете как это сделать и узнаю про такую штуку как ардуино.

    Посмотрел как это люди делают и вроде делаю все так же а оно получается не так как у них. Вот уже 2 года как нифига не получается , если кому не сложно подскажите что не так.

    Использую Arduino uno, 8-ми канальное реле и программу Vixen.

    Проблема в том что когда заливаю код сразу включаются все реле, потом когда запускаю программу она начинает выключать реле в такт с музыкой а нужно наоборот.

    Не судите строго просто в Arduino я полный ноль ну очень хочется сделать такой проект, вот уже 2 года мучаюсь
    Подскажите что не так:
    Код (C++):
    int A = 2;
    int B = 3;
    int C = 4;
    int D = 5;
    int E = 6;
    int F = 7;
    int G = 8;
    int H = 9;



    int i = 0;
    int incomingByte[8];

    void setup()
    {
      Serial.begin(9600);

      pinMode(A, OUTPUT);
      pinMode(B, OUTPUT);
      pinMode(C, OUTPUT);
      pinMode(D, OUTPUT);
      pinMode(E, OUTPUT);
      pinMode(F, OUTPUT);
      pinMode(G, OUTPUT);
      pinMode(H, OUTPUT);




    }

    void loop()
    {
      if (Serial.available() >= 8)
      {
        for (int i=0; i<8;i++)
        {
          incomingByte = Serial.read();
        } // Arduino pins
        digitalWrite(A, incomingByte[0]); // Pin 2
        digitalWrite(B, incomingByte[1]); // Pin 3
        digitalWrite(C, incomingByte[2]); // Pin 4
        digitalWrite(D, incomingByte[3]); // Pin 5
        digitalWrite(E, incomingByte[4]); // Pin 6
        digitalWrite(F, incomingByte[5]); // Pin 7
        digitalWrite(G, incomingByte[6]); // Pin 8
        digitalWrite(H, incomingByte[7]); // Pin 9

      }
    }
     
    Последнее редактирование модератором: 17 янв 2021
  2. solonovich

    solonovich Нерд

    Скорее всего у тебя реле включаются от лог. 0
    pinMode(A, OUTPUT); здесь ты настраиваешь pin на выход, на нем устанавливается 0 и включается реле
    добавь строчку digitalWrite(A, HIGH); реле не будут сразу включаться
    так проделай со всеми выходами
    Тоже самое и в приеме по Serial, тебе нужно инвертировать байты incomingByte[]
    т.е. если байт==0, то байт=1 и наоборот.
     
  3. Спасибо большое!
    Буду пробовать, хотя не уверен что получится так как я в этом деле ноль и код с интернета скачен
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Тут в соседней теме цветомузыку отГайвера обсуждали посмотрите интересный проект.
     
  5. Объясните пожалуйста что нужно делать в Serial а то никак понять не могу
     
  6. solonovich

    solonovich Нерд

    попробуй
    Код (C++):
    digitalWrite(A, !incomingByte[0]); // Pin 2
     
  7. Спасибо огромнейшее, всё заработало!