Arduino analogWrite () между двумя выводами, работающими только в одном направлении - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть набор светодиодов, которые настраивают все остальные светодиоды в обратном направлении, поэтому при подаче питания в одну сторону свет 1,3,5 ... свет.Измените мощность и 2,4,6 ... Я пытаюсь установить яркость с помощью ШИМ на цифровых выводах.Вот мой код:

unsigned long flashCount = 0;
bool bSwitch = true;

void setup()
{
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop()
{
  if((flashCount + 1000) < millis())
  {
    if(bSwitch)
    {
      analogWrite(6, 0);
      analogWrite(7, 1);
      bSwitch = false;
    }
    else
    {
      analogWrite(7, 0);  
      analogWrite(6, 1);
      bSwitch = true;
    }
    flashCount = millis();
  }
}

Если я изменю аналоговый адрес на 255 вместо 1, он переключит оба набора светодиодов.Если я изменю аналоговый текст на 127 или меньше, загорится только один набор.Если я переключаю светодиодные провода на контакты, проблема переключается на другой набор огней.

Светодиоды выглядят так:

GPIO pin 6 --------.-LED+.---.-LED+.---.-LED+.---.-LED+.---|
GPIO pin 7 ---.+LED-.---.+LED-.---.+LED-.---.+LED-.--------|

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Измените подключение светодиодов к контактам, которые оба поддерживают ШИМ.

Не все контакты поддерживают ШИМ.Документация analogWrite определяет, какие выводы в зависимости от какой платы:

На большинстве плат Arduino (с платами ATmega168 или ATmega328P) эта функция работает на выводах 3, 5, 6,9, 10 и 11. На Arduino Mega он работает на контактах 2–13 и 44–46. Старые платы Arduino с ATmega8 поддерживают аналоговыйWrite () только на контактах 9, 10 и 11.

Другим фактором является то, что analogWrite(255) и analogWrite(0) вернутся к управлению выходом в качестве цифрового выхода.Таким образом, запись 255 приводит к выводу обоих выводов (один в качестве цифрового выхода, а другой в режиме ШИМ).Но запись от 1 до 127 приводит только к изменению вывода, способного к ШИМ.

0 голосов
/ 08 февраля 2019

Из man-страниц arduino:

Синтаксис аналоговыйWrite (пин, значение)

Параметры pin: пин для записи.Разрешенные типы данных: int.значение: коэффициент заполнения: от 0 (всегда выключен) до 255 (всегда включен).Допустимые типы данных: int

Использование analogWrite со значением 1 практически равно нулю.255 будет полное напряжение.Вы пытаетесь использовать analogWrite (), как если бы это был digitalWrite ().

Подумайте об использовании цифровой записи вместо этого в своем коде: https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/

Что касается поведения вашего светодиода, похоже, что ваша цепь также нуждается в отладке: ваша цепь будет пропускать только токкогда контакт 7 включен.Диоды (светоизлучающие диоды) допускают ток только в одном направлении.Если вы хотите иметь альтернативу светодиода, все они должны быть ориентированы так, чтобы положительные стороны были направлены к их выводу GPIO, а там, где они встречаются, они должны быть заземлены с помощью понижающего резистора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...