
Проблема в том, что микроконтроллер Ардуино выдает на выходе напряжение 5В или никакого, но есть одна хитрость. Ваш микроконтроллер может переключаться из одного состояние в другое более тысячи раз в секунду! Этим симулируется не полное напряжение, которое называется ШИМ (Широтно-Импульсная Модуляция, англ. Pulse Width Modulation или просто PWM)
Отношение времени включения к времени выключения называется скважность. Так если вам нужно напряжение 2.5В чтобы мотор или светодиод работали не в полную силу, то нужно установить скважность на 50%.
Посмотрите на рисунок, за определенный промежуток времени t ваш микроконтроллер находится то во включенном, то в выключенном состоянии, причем время во включенном состоянии равно времени в выключенном состоянии. Эти переключения происходят так быстро, что в случае со светодиодом он будет гореть в половину мощности.
Давайте посмотрим как это будет выглядеть на схеме.
Соединим светодиод с резистором (я использую сопротивление R=100кОм) и с 9 выводом на вашем Ардуино. Вы можете выбрать любой вывод, который отмечен знаком "~" - это означает, что данный вывод может работать в режиме ШИМ.
катод светодиода (короткую ножку) соединяем с "Землей". Выводы "Земля" обозначены на микроконтроллере аббревиатурой "GND".
У меня это выглядит так:
Синие провода идут к 9 пину, а красные к земле.
Осталось написать код (скетч) для управления светодиодом:
// Задаем константу, после нее ; не ставится!
#define LED_PIN 9
// задаем переменну
int i=0;
void setup ()
{
// ставим 9 вывод в режим выхода
pinMode (LED_PIN, OUTPUT);
}
void loop ()
{
// Запускаем цик в ходе которого яркость светодиода будет нарастать.
// Обрати внимание, что значение i регулирует яркость от 0 до 255,
// где 0=напряжению в 0В, а 255 составляет напряжение 5В
// Т.е. для получения в 2,5 В значение i должно быть ~127
for (i=0; i<=255; i=i+5){
analogWrite (LED_PIN, i);
delay (100);
}
}
Обратите внимание. Т.к. значение LED_PIN остается неизменным, то я записал его как константу. Для объявления константы нужно использовать директиву #define, затем через пробел название констаны и ее значение. ";" при объявлении переменной - не ставится.
Яркость светодиода регулируется переменной i с шагом в 5 единиц от 0 до 255.
Если все сделано верно, то яркость светодиода должна циклично нарастать до максимума, а затем сбрасываться.
Комментариев нет:
Отправить комментарий