Оглавление:

RaspberryPi: включение и выключение светодиода: 4 шага (с изображениями)
RaspberryPi: включение и выключение светодиода: 4 шага (с изображениями)

Видео: RaspberryPi: включение и выключение светодиода: 4 шага (с изображениями)

Видео: RaspberryPi: включение и выключение светодиода: 4 шага (с изображениями)
Видео: Raspberry Pi 3: обзор, первое включение, настройка – Часть 1 2024, Ноябрь
Anonim
RaspberryPi: включение и выключение светодиода
RaspberryPi: включение и выключение светодиода

Следующие шаги представляют собой эксперименты, демонстрирующие, как работают светодиоды. Они показывают, как уменьшить яркость светодиода с равной скоростью и как постепенно увеличивать и уменьшать яркость.

Тебе понадобится:

  • RaspberryPi (я использовал более старый Pi, мой Pi-3 уже используется, но подойдет любой Pi.)
  • Макетная плата
  • 5 мм красный светодиод
  • Резистор 330 Ом (не критично, 220-560 Ом подойдет.)
  • Монтажный провод

Пи-сапожник, который я использовал от Adafruit, не нужен, но он упрощает макетирование.

WiringPi - это набор библиотек для программирования RaspberryPi на языке C. Инструкции по загрузке, установке и использованию находятся по адресу

Чтобы установить wiringPi, следуйте инструкциям на этой странице:

Чтобы получить список номеров контактов wiringPi, введите в командной строке команду gpio readall.

В более новых версиях Raspian wiringPi устанавливается по умолчанию.

Шаг 1: широтно-импульсная модуляция

Широтно-импульсная модуляция
Широтно-импульсная модуляция
Широтно-импульсная модуляция
Широтно-импульсная модуляция
Широтно-импульсная модуляция
Широтно-импульсная модуляция

Светодиоды всегда работают при одинаковом напряжении независимо от яркости. Яркость определяется прямоугольным осциллятором, и время, в течение которого напряжение высокое, определяет яркость. Это называется широтно-импульсной модуляцией (ШИМ). Это контролируется функцией wiringPi pwmWrite (pin, n), где n имеет значение от 0 до 255. Если n = 2, светодиод будет в два раза ярче, чем n = 1. Яркость всегда удваивается, когда n удваивается. Таким образом, n = 255 будет вдвое ярче, чем n = 128.

Значение n часто выражается в процентах, называемых рабочим циклом. На рисунках показаны осциллограммы для рабочих циклов 25, 50 и 75%.

Шаг 2: светодиод и резистор

Светодиод и резистор
Светодиод и резистор

В этом нет необходимости, но наличие нескольких таких под рукой может значительно упростить создание макета.

Припаяйте резистор к короткому светодиоду светодиода. Используйте резистор 220-560 Ом.

Шаг 3: неравномерное затемнение

Неравномерное затемнение
Неравномерное затемнение

Постройте схему, как показано на схеме. Это похоже на схему мигания светодиода. Он использует вывод 1 wiringPi, потому что вам нужно использовать вывод с включенной ШИМ. Скомпилируйте программу и запустите ее. Вы заметите, что чем ярче светодиод, тем медленнее он гаснет. По мере приближения к самому тусклому свету он будет очень быстро тускнеть.

/******************************************************************

* Скомпилировать: gcc -o fade1 -Wall -I / usr / local / include -L / usr / local / lib * fade1.c -lwiringPi * * Выполнить: sudo./fade1 * * Все номера контактов являются номерами wiringPi, если не указано иное. ************************************************ **************** / #include int main () {wiringPiSetup (); // Настройка требуется wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Режим метки / пробела int i; while (1) {for (i = 255; i> -1; i--) {pwmWrite (1, i); задержка (10); } для (я = 0; я <256; я ++) {pwmWrite (1, я); задержка (10); }}}

На следующем шаге показано, как уменьшить яркость светодиода с постоянной скоростью и одним оператором for.

Шаг 4: Шаг 4: вверх и вниз за один () и с равномерной скоростью

Чтобы светодиод гаснул с постоянной скоростью, задержка () должна увеличиваться с экспоненциальной скоростью, потому что половина рабочего цикла всегда дает половину яркости.

Линия:

int d = (16-я / 16) ^ 2;

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

/******************************************************************

* Скомпилировать: gcc -o fade1 -Wall -I / usr / local / include -L / usr / local / lib * fade2.c -lwiringPi * * Выполнить: sudo./fade2 * * Все номера контактов являются номерами wiringPi, если не указано иное. ************************************************ **************** / #include int main () {wiringPiSetup (); // Настройка требуется wiringPi pinMode (1, PWM_OUTPUT); // pwmSetMode (PWM_MODE_MS); // Режим метки / пробела while (1) {int i; int x = 1; для (я = 0; я> -1; я = я + х) {int d = (16-я / 16) ^ 2; // вычислить обратный квадрат индекса pwmWrite (1, i); задержка (d); если (я == 255) х = -1; // переключаем направление на пике}}}

Рекомендуемые: