Одновременное использование SDA и SCL с аналоговыми входами
Я пытаюсь построить манипулятор на основе Arduino UNO и PCA9685, управляемый несколькими потенциометрами. Самый простой способ, который я придумал и нашел в Интернете, — это использовать два Arduino, один в качестве ведущего, а второй — в качестве ведомого. Отсюда мой вопрос, есть ли способ использовать один Arduino UNO вместо двух, используя одновременно SDA и SCL с аналоговыми входами? Может быть, есть другой способ сделать это?
Это мой фактический код:
#include <Arduino.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwmDriver = Adafruit_PWMServoDriver(0x40);
void setup()
{
pwmDriver.begin();
pwmDriver.setPWMFreq(51);
}
int tempPotVal = 0;
int adcPin[4] = {A0, A1, A2, A3};
int pwmRisingTime = 0;
int pwmFallingTime = 0;
void loop()
{
for (int id = 0; id < 4; id++)
{
tempPotVal = analogRead(adcPin[id]);
pwmFallingTime = map(tempPotVal, 113, 842, 102, 512);
pwmDriver.setPWM(id, pwmRisingTime, pwmFallingTime);
}
}
@jadvancek, 👍0
2 ответа
Лучший ответ:
I2C на устройствах Uno/Nano/Mini использует только контакты с маркировкой A4 и A5. вы все еще можете использовать 4 контакта АЦП от A0 до A3 на Uno.
Нет. Вы не можете. Нет, если только вы не придумаете способ отключить один набор устройств и подключить другой.
Вместо этого вы можете добавить чип I2C ADC к существующей шине SCL/SDA, чтобы увеличить количество доступных каналов ADC. Или используйте аналоговый чип MUX на одном из других выводов АЦП, чтобы увеличить количество устройств, которые вы можете подключить к нему. Или вы можете добавить чип SPI ADC к контактам 10–13 (шина SPI), чтобы получить больше аналоговых входов.
- Как изменить скорость нескольких сервоприводов, работающих одновременно с модулем PCA9685?
- Когда я проверяю скетч, я получаю несколько ошибок
- Высокочастотный PWM на Adafruit Feather M0
- Как инициализировать и запустить PCA9685?
- Как подключить несколько акселерометров MMA8451 (протокол I2C) с помощью одного Arduino Mega
- Используйте Adafruit 16-Channel 12-bit PWM/Servo Shield для переключения реле
- Настроить Trinket M0 в качестве периферийного устройства I2C
- Чтение аналогового значения при генерации сигнала ШИМ
Да, ты прав! Я совершенно не понимаю, почему это не работало у меня раньше и почему я нашел так много источников в Интернете, говорящих о том, что использовать эти две вещи одновременно невозможно., @jadvancek