Как изменить контакт выбора ведомого устройства по умолчанию (цифровой контакт 10) на Arduino UNO R3 для связи по SPI?
В настоящее время я работаю над проектом на базе Arduino. Мой проект требует сопряжения 6 серводвигателей и модуля SD-карты с моим Arduino UNO. Проблема в том, что мне нужны все шесть контактов PWM для шести сервоприводов (включая контакт 10), которые по умолчанию являются контактом выбора ведомого для связи SPI. Я не хочу использовать программный ШИМ на цифровом выводе. Я не смог найти никаких ресурсов о том, как изменить вывод SS по умолчанию на любой другой вывод. Любая помощь в этом отношении будет высоко оценена. Спасибо!
@, 👍0
Обсуждение1 ответ
Просто объявите его и используйте:
byte ssPin = 7; // или любой другой вывод, избегайте 0,1, оставьте их для Serial()
byte defaultSS = 10; // 53 на 2560
pinMode (ssPin, OUTPUT);
digitalWrite (ssPIN, HIGH); // типичное выключенное состояние выбора ведомого устройства
pinMode (defaultSS, OUTPUT); // 10 ДОЛЖЕН быть выходом, чтобы устройство было ведущим SPI (328P)
SPI.begin(); // по умолчанию скорость 4 МГц, MSBFIRST
// заботится о SCK, MISO, MOSI, не нужно определять/объявлять их
digitalWrite (ssPin, LOW);
SPI.transfer (ledData, 0xAA); // пример данных, поступающих на устройство
digitalWrite (ssPin, HIGH);
«Проблема в том, что мне нужны все шесть выводов ШИМ для шести сервоприводов». Библиотека Servo.h может управлять 12 сервоприводами на Uno и любым выводом, а не только выводом ШИМ. Проверьте это. Сервоприводам нужен импульс шириной 1-2 мс (от 1000 до 2000 мкс), возникающий каждые 20 мс (50 Гц), что на самом деле не является ШИМ. (1 мс = полный оборот в одном направлении, 1,5 мс = полный оборот в другом направлении, плюс-минус несколько мкс). Бьюсь об заклад, это можно было бы создать даже с помощью техники Blink без задержки, 50 Гц довольно медленно., @CrossRoads
- Как использовать SPI на Arduino?
- OVF в последовательном мониторе вместо данных
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
- Программирование ведомого SPI для Arduino
- Последовательная связь между несколькими устройствами (или ардуино)
- Максимальная скорость SPI для ведомого Uno/clone?
- SPI.transfer(buffer, size) не отправляет данные из буфера
Кроме передачи другого аргумента в
SD::begin()
?, @Ignacio Vazquez-AbramsХм, я думал, что любые выводы GPIO можно использовать для выбора ведомого., @Long Pham
контакт 10 - это CS, если Atmega 328 является ведомым устройством SPI. если Atmega является ведущим, контакт 10 должен быть выведен, иначе чип переключается на подчиненный. ШИМ выводится, @Juraj