Управление несколькими сервоприводами через Ик

Я совсем новичок, захотел себе сделать поворотный кронштейн из 4х сервоприводов.

Простой код с сервой работает . крутит ее на тот градус который вписал.

Ик тоже работает , коды с пульта считал и обычные и в hex.

Все счетчи нашёл на ютубе или на сайтах. А вот связать пульт и серву не получается. Кучу скетчей перепробовал. Я так понял что все подобные скетчи написаны под старую библиотеку IrRemote. Но под какую ее версию я не знаю, ссылки уже давно нерабочие. Я попробовал работать с новой библиотекой 4.5.0. Но ничего не вышло. Ткните носом где ошибка.

#include <IRremote.h>
#include <Servo.h>

Servo servo1;
unsigned long comandIR = 0;
void setup()
{
servo1.attach(D4);
IrReceiver.begin(D2);
Serial.begin(9600);
}
//servo1.write(0)
//delay(1500)
//servo1.write(180)
void loop()
{
if(IrReceiver.decode() >0)
{
comandIR = IrReceiver.decodedIRData.decodedRawData;

    Serial.println(comandIR);
    if(comandIR == 3125149440) {
        servo1.write(0);
    }
    if(comandIR == 3108437760) {
        servo1.write(90);
    }
    if(comandIR == 3091726080) {
        servo1.write(180);
     
    }
    IrReceiver.resume();
}

}


Ерунда какая-то… если вы коды с пульта читаете, зачем вам еще какая-то другая библиотека?

Коды с пульта читаю другим скетчем.

Скетч простенький на серву которая раз в несколько секунд поворачивается тоже работает.

Я не понимаю как при нажатии кнопки на пульте двинуть серву на угол который хочу

Подключаю библиотеку Servo.h и IrRemote

Так вы уже все сделали. осталось совсем чуть-чуть. Берете тот скетч, который, как вы говорите, читает коды.
Читаете код кнопки в переменную comandIR. Потом сравниваете это значение с вашими командами и поворачиваете серву, как вы это уже показали в коде:

Так я тот самый скетч который читает. И дополнил командами для сервы. Сейчас постараюсь оригинал скинуть.

Извиняюсь, у меня не получается в нормальном виде сюда код скинуть.

#include <IRremote.h>
unsigned long comandIR = 0;

void setup()
{
    IrReceiver.begin(D2);
    Serial.begin(9600);
}

void loop()
{
    if(IrReceiver.decode() >0)
    {
        comandIR = IrReceiver.decodedIRData.decodedRawData;
        IrReceiver.resume();
        Serial.println(comandIR);
    }
}

а попробуйте код вставить после текста, или 2 кода… так что не факт что научились!)))
добавьте в ваш код то что посоветовали в 9 сообщении, и вопрос решится)))

Этот код которым я читал пульт

#include <IRremote.h>
unsigned long comandIR = 0;

void setup()
{
    IrReceiver.begin(D2);
    Serial.begin(9600);
}

void loop()
{
    if(IrReceiver.decode() >0)
    {
        comandIR = IrReceiver.decodedIRData.decodedRawData;
        IrReceiver.resume();
        Serial.println(comandIR);
    }
}

Код для сервы брал у Giver а)

Он просто двигал сервой на определенный градус с интервалом. Скетч не сохранился, писал руками. Если нужно могу снова написать .

Ок, теперь попытайтесь сформулировать вопрос. Что именно не получается? Скетч компилируется? Запускается? Коды в Сериал выводит?

По отдельности оба скетча работают. Отдельный скетч который мне выводит коды с пульта в окно. (Значит ИК подключен правильно) и отдельный скетч от Guvera который двигает серву по интервалу тоже работает. (Значит и серва подключена пра4).

Мне нужно все это заставить работать вместе.

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

Да, скетчи компилируются. По отдельности работают. Но когда я их пытаюсь собрать воедино. То реакции ноль.

тогда ответ #9

Можно пример?

какой пример-то?
Вы же код с пульта прочитали? - говорите что да
Что мешает вставить в это вместо поврот сервы, как вы уже сделали выше?

Вот вам пример - ваш собственный код

#include <IRremote.h>
#include <Servo.h>

Servo servo1;
unsigned long comandIR = 0;
void setup()
{
 servo1.attach(D4);
 IrReceiver.begin(D2);
 Serial.begin(9600);
}

void loop()
{
  if(IrReceiver.decode() >0)
  {
   comandIR = IrReceiver.decodedIRData.decodedRawData;

   Serial.println(comandIR);
   if(comandIR == 3125149440) {
        servo1.write(0);
    }
   if(comandIR == 3108437760) {
        servo1.write(90);
    }
   if(comandIR == 3091726080) {
        servo1.write(180);
     
    }
   IrReceiver.resume();
 }
}

Теперь расскажите, что с ним не так. Код пульта в строке 19 печатает?

Если заливать этот скетч то нет. Там либо окно зависает либо знаки вопроса