ШИМ ( Широтно-импульсная модуляция ) также еще называется PWM ( pulse-width modulation ) - это процесс управления мощности методом пульсирующего включения и выключения прибора.
В микроконтроллерах arduino есть пины которые обладают PWM. Например в arduino uno всего 20 пинов из них 6 аналоговых 14 цифровых пинов. Из 14 цифровых только 6 пинов умеют работать в ШИМ (PWM). Схема распиновки Arduino UNO:
Пример работы шим будет показан на светодиоде. Светодиод будет подключен к 3 пину ардуино как показано на схеме ниже. 3 Пин какраз будет генерировать ШИМ сигнал и светодиод будет плавно загораться и плавно тухнуть.
Схема подключения светодиода:
Сама программа или как ее еще называют "скетч" будет выглядеть следующим образом:
================================================================
int brightness = 0; // Яркость светодиода
int fadeAmount = 5; //Шаг изменения яркости
unsigned long currentTime;
unsigned long loopTime;
void setup() {
pinMode(3, OUTPUT); // Утанавливаем 3 пин как выход
currentTime = millis();
loopTime = currentTime;
}
void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 20)){
analogWrite(3, brightness); //Устанавливаем значение
//на 3 пине, прибавляем изменения яркости,
//которая установится в следующем цикле:
brightness = brightness + fadeAmount;
//Если достигли минимальное или максимальное значение,
//то идем в обратную сторону (реверс):
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount;
}
loopTime = currentTime;
}
}
================================================================
Ну и конечно же оставлю ссылку на готовый скетч для скачивания: https://yadi.sk/d/4ftO_vHSHwK6hg
Ну чтож в этой статье мы узнали что такое ШИМ и как он работает наглядно. В следующих статьях м продолжим изучать примеры работы как с Ардуино, так и с raspberry pi.