Как победить ШИМ на 9 и10 пинах с nrf24l01 в nano?
- Войдите на сайт для отправки комментариев
Ср, 07/03/2018 - 14:14
Всем привет! К китайской nano подключен nrf24l01 , серва и двигатели. Пины 9 и 10 для nrf24l01 можно вроде как свободно менять - и модуль нормально работает, но при этом на 9 и 10 не работает ШИМ... мне нужно 4 пина с ШИМом для двигателей и один для сервы...
На оставшихся 3, 5 и 6 пинах шим прекрасно работает, а на 9-10 пинах плавной регулировки оборотов нет.
#include <SPI.h> #include "nRF24L01.h" #include "RF24.h" #include <Servo.h> RF24 radio(7, 8); int recieved_data[4]; byte relay = 2; int servo = 4; //двигатель 1 int IN1 = 5; int IN2 = 6; //двигатель 2 int IN3 = 9; int IN4 = 10; .....
Насколько понял проблема в библиотеках nrf или сервы, но где именно не нашел..
Мегу не хотелось бы ставить, великовата она ну и цена. Может кто сталкивался, как это победить в nano?
Полный код секретен? Ну, ладно. Сконфигурируйте 10-ый пин как OUTPUT в самом начале функции setup, если это не сделано. Иначе у Вас не будет работать SPI. На ШИМ это по идее никак повлиять не должно.
Кстати, что Вам мешает использовать для ШИМ пин 11? Чего привязались к 10-му?
Кстати, что Вам мешает использовать для ШИМ пин 11? Чего привязались к 10-му?
11pin - MISO, а spi как будет работать?
11pin - MISO, а spi как будет работать?
Точно. Это я ступил.
Ну, ТС пусть всё же SS то в OUTPUT скофигурит. А то по-любому никак не будет :)
TLC5940
Зачем? Хватает же пинов-то.
Кстати, что Вам мешает использовать для ШИМ пин 11? Чего привязались к 10-му?
MOSI, однако.
Да, мне уже сказали выше.
Нет, код не секретный конечно, стандартный так сказать:
Мне 2 пина на каждый двигатель нужно чтобы направление менять. Пишут что здесь
в "стандартном скетче" 9 и 10 можно менять на все что понравится, так и есть - радиомодуль при этом нормально работает, но ШИМ на освободившихся 9 и 10 от этого не появляется...
Некоторые советуют попробовать программный SPI для nRF24, под это дело вроде как отдельная библиотека есть, не разобрался еще что это такое, но ожидаю что может работать глючно и наверняка медленнее чем аппратный (видел пример работы с прорисовкой экрана - разница в скорости очень заметна). Ну и будет ли при этом работать ШИМ на 9 и 10 тоже вопрос.
Доп. девайсы для ШИМ вешать как-то мне не очень, если уж никак, то лучше МЕГУ, смотрел сегодня на алике - уже у китайцев есть компактный размер 38x52 мм, но цена пока печальна, хотелось бы всё-таки НАНУ победить - пинов то много ещё свободных. Все подозрения на библиотеку для nRF24..
Давайте сделаем так.
1. Строку продублируйте ещё раз после строки 52. Чем чёрт не шутит, может он там при инициализации SPI зафигачил его в INPUT - продублируйте, хуже точно не будет.
2. Из loop пока уберём всё (или просто поставим первой строчкой "return;"
3. В setup, в самый конец перед закрывающей скобкой поставим analogWrite на все какие Вас интересуют пины.
Теперь мы можем проверить осциллографом, есть там ШИМ или нет (нет осциллографа - проверяйте мультиметром, да хоть светодиодом).
Проверьте, может он там и есть. Если его и впрямь нет, будем бороться и в loop ничего не будем ставить пока не добьмся, чтобы был. А вот если он там есть, то наоборот, начнём разбираться что там в loop. В общем начнём делить проблему на части, отсекая всё лишнее, чтобы её вычленить - и решать задачу методом ловли льва в пустыне.
Возможно дело в неверно выставленных фьюзах. У меня было то же самое и с таким же модулем. Использовал не ардуино плату, а просто контроллер в дипе и нарвался на эту же засаду.
Спасибо за советы. Пробовал по всякому, тут обнаружилась такая штука - к пину 9 (на котором у меня не хочет работать регулировка оборотов мотора) подключаю серво - она работает, вешаю светодиод - он тоже плавно меняется, меряю мультиметром - напряжение тоже плавно меняется. Т.е. какой-то шим там таки есть, чем он отличается от шима на других пинах - как понять без осцилографа?
А когда подключаю этот модуль https://ru.aliexpress.com/item/Free-Shipping-1PCS-New-Dual-H-Bridge-DC-S... для мотора - он на 8 пине не работает - двиг дергается если до упора поднимать напряжение, причем на максимуме не равномерно крутится а именно дергается беспорядочно рывками, на низах вообще молчит.
(nrf при этом меняю на 8 пин)
Грешил на глючный L298N (я порядком как-то поиздевался над ним), ждал пока приедет еще такой же, с новой платой сейчас проверил - точно то же самое.
На других пинах где есть шим - прекрасно работает, на 9 и 10 - нет.
Может с analogWrite что-то не так?
Попробовал заменить analogWrite на digitalWrite - ожидаемо двигатель включается сразу при подаче на пин чего угодно и крутится с постоянной скоростью..
Вы сделаи то, что я просил в посте #9? Если да, то сделайте код и расскажите, что получили.
Евгений, настолько радикально я всё пока не снес, выходит, что то что бы я мог увидеть мультиметром или светодиодом - я и так вижу на 9м пине - меняется плавно..
Нет, ну надо выяснять кто виноват, где конфликт, а для этого надо всё сносить и вносить обратно по-одному. Одно заработало, добавляем второе - оопс! Вот тут конфликт и ищем. А когда всего много - запаришься искать, не зная за какой конец хвататься.
Буду пробовать. Я так понимаю мне тогда нужно сигнал по радио не передавать, а повесить для шим переменный резистор, так можно и без библиотеки для nrf проверить.
Только что попробвал для регулировки мотора шим подавать не на IN1/IN2, а на ENA (до этого он был закорочен перевычкой на 5в) - тот же эффект, плавно не меняет скорость
так можно и без библиотеки для nrf проверить.
Вы на правильно пути. Исключаем всё! Что-то само по себе работает, добавляем фичи по чуть-чуть и следим когда загнётся.