Но тут возможно прога на андроиде глючит. К компу доступа пока нет. Заливаю с телефона
if (IrReceiver.decode()) {
comandIR = IrReceiver.decodedIRData.decodedRawData;
командир! ахах)) а так что будет ?)) еще можете попробовать создать переменные, и при получении команды присваивать значения им при получении сигнала 0 или 1, в зависимости от кнопки, а так же вынести управление серво за блок приема команд…
Блин, вот Вы умышленно издеваетесь или само так получается?
@MMM, как там Ваши мозги себя ощущают?
А мне что?
это ж у ТС проблемы… сам себе Буратино
Попробуйте для начала сделать с тактовыми кнопками.
Спасибо, домой вернусь попробую. Сейчас в командировке. Как минимум нужно попробовать залить скетч через комп. Возможно андройдовкий компилятор не правильно работает .
добрался я до компьютера.
этот код читает кнопки с пульта
#include <Servo.h>
#include <IRremote.hpp>
Servo servo1;
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);
}
}
решил проверить на какой строчке кода перестает считывать пуль. постепенно добавляя выяснил что если в void setup добавить servo1.attach(D4) до команды уже не присылает
#include <Servo.h>
#include <IRremote.hpp>
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;
IrReceiver.resume();
Serial.println(comandIR);
}
Скорее всего у вас конфликт библиотек. Используется один таймер. Поищите по этим словам.
Да да, так и есть. Уже весь день сижу над этим. Но теперь мне помогает Алиса)))
Она мне и новый код написала. И как ни странно все внятно разжевывает что у меня не так.
С одним из кодов всё-таки получилось добиться хоть какого то результата. Вместо библиотеки IRremote поставил IrRemoteESP8266. Заработало так как я хочу. Но в монитор порта поступали куча разных кодов с пульта с одной кнопки. И когда приходил нушный серва вращалась на заданный градус. Сейчас я предложил Алисе костыль в виде еще одной платы wemos которая тупо будет принимать сигнал с пульта и отправлять его на вторую плату которая будет управлять сервой. Благо у меня их восемь штук, в смысле плат )). Сижу паяю гребенки на плату.
ну можно и так, хотя развести две библиотеки на разные таймеры было бы проще (если дело в этом). В документации на библиотеки это обычно описано.
Привет ей передавайте!
Обязательно ![]()
Просто я ни разу не программист. В голове засела одна идейка с 4мя сервомоторами, и я решил ее с наскока реализовать тупо взяв готовый код с интернета. И уперся в свои незнания ))
Ну, ничего, подучитесь, освоитесь. Зато теперь, Вы, наверняка, стали лучше понимать фразу Высоцкого:
«В дивных райских садах наберу бледно-розовых яблок…
Жаль, сады сторожат и стреляют без промаха в лоб»
А в знаниях, которых Вам не хватает нет ничего магического и требующего особой гениальности. На том уровня, на котором это нужно для подобных проектов, всё это вполне доступно для любого нормального парня с нормальными мозгами и нормальной трудоспособностью. Ничего сверхординарного не требуется Удачи!
Всё получилось
, осталось протестить все это на мощных сервах и заниматься механической частью )
Вывсёврёти!!!
Нет не вру, все реально заработало с мелкими сервоприводами sg90. Но теперь у меня другая проблема подключил я мощную серву на 150кг RDS51150.поставил отдельный бп на 12вольт 10 ампер. И она живет своей жизнью крутится туда сюда сама собой не реагируя на пульт. Замерил тестером в момент ее вращения с 12 вольтпроседает до нуля. Пошел я дальше курить чего я опять не учел ))
Интересно, как измерял и чем.
В макетку воткнул щупы мультиметра + - параллельно воткнутым контактам сервы
