Одновременное использование 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);
  }
}

, 👍0


2 ответа


Лучший ответ:

0

I2C на устройствах Uno/Nano/Mini использует только контакты с маркировкой A4 и A5. вы все еще можете использовать 4 контакта АЦП от A0 до A3 на Uno.

,

Да, ты прав! Я совершенно не понимаю, почему это не работало у меня раньше и почему я нашел так много источников в Интернете, говорящих о том, что использовать эти две вещи одновременно невозможно., @jadvancek


0

Нет. Вы не можете. Нет, если только вы не придумаете способ отключить один набор устройств и подключить другой.

Вместо этого вы можете добавить чип I2C ADC к существующей шине SCL/SDA, чтобы увеличить количество доступных каналов ADC. Или используйте аналоговый чип MUX на одном из других выводов АЦП, чтобы увеличить количество устройств, которые вы можете подключить к нему. Или вы можете добавить чип SPI ADC к контактам 10–13 (шина SPI), чтобы получить больше аналоговых входов.

,