Поделиться через


Мигать светодиодным индикатором

Контактами GPIO (общего назначения для ввода-вывода) можно управлять по отдельности. Это полезно для управления индикаторами, ретрансляторами и другими устройствами с отслеживанием состояния. В этом разделе вы будете использовать .NET и пины GPIO Raspberry Pi для питания светодиодных индикаторов и многократного мигания.

Предпосылки

  • Компьютер на основе ARM (ARMv7 или более поздней версии) с одной платой (SBC)
  • 5 мм светодиод
  • Резистор 330 Ω
  • Макет
  • Перемычки
  • Плата расширения для Raspberry Pi GPIO (необязательно/рекомендуется)
  • SDK-пакет .NET версии 10 или более поздней

Примечание.

В этом руководстве предполагается, что целевое устройство — Raspberry Pi. Однако это руководство можно использовать для любого SBC на основе Linux, который поддерживает .NET, например Orange Pi, ODROID и многое другое.

Убедитесь, что SSH включен на устройстве. Для Raspberry Pi см. инструкции по настройке SSH-сервера в документации raspberry Pi.

Подготовка оборудования

Используйте аппаратные компоненты для построения канала, как показано на следующей схеме:

Схема Fritzing, показывающая цепь со светодиодом и резистором

На приведенном выше рисунке показаны следующие подключения:

  • GPIO 18 к аноду светодиода (более длинный, положительный вывод)
  • Катод светодиода (короткий, отрицательный вывод) к резистору 330 Ω (любой конец)
  • 330 Ω резистор (другой конец) на землю

При необходимости обратитесь к следующей схеме закреплений:

Схема, показывающая распиновку заголовка Raspberry Pi GPIO. Изображение предоставлено любезно фондом Raspberry Pi.
Изображение любезно Raspberry Pi Foundation.

Подсказка

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

Создание приложения

Выполните следующие действия в предпочтительной среде разработки:

  1. Создайте консольное приложение .NET с помощью .NET CLI или Visual Studio. Назовите его BlinkTutorial.

    dotnet new console -o BlinkTutorial
    cd BlinkTutorial
    
  2. Добавьте в проект пакет System.Device.Gpio . Используйте .NET CLI из каталога проекта или Visual Studio.

    dotnet package add System.Device.Gpio --version 4.0.1
    
  3. Замените содержимое файла Program.cs кодом, приведенным ниже.

    using System;
    using System.Device.Gpio;
    using System.Threading;
    
    Console.WriteLine("Blinking LED. Press Ctrl+C to end.");
    int pin = 18;
    using var controller = new GpioController();
    controller.OpenPin(pin, PinMode.Output);
    bool ledOn = true;
    while (true)
    {
        controller.Write(pin, ((ledOn) ? PinValue.High : PinValue.Low));
        Thread.Sleep(1000);
        ledOn = !ledOn;
    }
    

    В предыдущем коде:

    • Объявление using создает экземпляр GpioController. Объявление using гарантирует, что объект удаляется, а аппаратные ресурсы освобождаются должным образом.
    • Пин-код GPIO 18 открыт для выходных данных
    • Цикл while выполняется неограниченно. Каждая итерация:
      1. Записывает значение в пин-код GPIO 18. Если ledOn задано значение true, он записывает PinValue.High (вкл.). В противном случае он записывает PinValue.Low.
      2. Спит 1000 мс.
      3. Переключает значение ledOn.
  4. сборка приложения. При использовании интерфейса командной строки .NET выполните dotnet build. Чтобы создать Visual Studio, нажмите клавиши Ctrl+Shift+B.

  5. Разверните приложение в SBC как автономное приложение. Инструкции см. в разделе Deploy .NET приложения в Raspberry Pi. Обязательно предоставьте исполняемому файлу разрешение на выполнение с помощью chmod +x.

  6. Запустите приложение на Raspberry Pi, переключившись в каталог развертывания и запустив исполняемый файл.

    ./BlinkTutorial
    

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

  7. Завершите программу, нажав клавиши CTRL+C.

Поздравляю! Вы использовали GPIO для мигания светодиодных индикаторов.

Получение исходного кода

Исходный код этого руководства доступен на GitHub.

Дальнейшие действия