Пример программы, мигание светодиодом через GPIO

Цифровой выход может использоваться для вывода двоичного логического значения, соответствующему логическому уровню контактов, OPi имеет логический уровень 3,3 В, что означает, что цифровые значения соответствуют форме: 0 ‘(LOW) 0В; ‘1’ (HIGH) 3,3 В.
Цифровыми выходами можно управлять активацией/деактивацией подключенных к ним внешних элементов, таких как светодиоды, транзисторы, реле.

На языке Си

Сделаем программу Blink, чтобы мигать светодиодом, подключенный к GPIO1 , физический контакт № 12 (WiringPi Pin 1). Чтобы знать метки каждого вывода библиотеки WiringOP, мы можем использовать следующее изображение (контакт № 12, который мы будем использовать, соответствует выводу 1 внутри библиотеки).

Пример программы, мигание светодиодом через GPIO
1 — Создаем общий каталог для хранения программы:

mkdir -p programas_gpio/blink
cd programas_gpio/blink

2 — Создаем программу:

sudo nano blink.c

Код программы:

#include <wiringPi.h>
 
#define PIN_LED 1
#define ESPERA 1000 // 1s
 
int main (void)
{
    wiringPiSetup();
    pinMode(PIN_LED, OUTPUT);
    while(1)
    {
        digitalWrite(PIN_LED, HIGH);
        delay(ESPERA);
        digitalWrite(PIN_LED, LOW);
        delay(ESPERA);
    }
    return 0;
}

3 — Закроем файл, сохранив его:

Ctrl X, Y (Yes), Enter

4 — Компилируем:

gcc -o blink blink.c -lwiringPi

5 — Выполняем программу:

sudo ./blink

https://youtu.be/btTcMhmg4ek

На языке Python

1 — Создаем программу:

sudo nano testgpio.py

Код программы:

# -*- coding: utf-8 -*-
##############################
# Importar librerias
import os
import sys
 
from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port
##############################
# Comprobar que se ejecuta como root
if not os.getegid() == 0:
    sys.exit('El Script debe ser ejecutado con permisos de administracion')
 
# Crear variable correspondiente al LED de estado (consultar https://github.com/duxingkei33/orangepi_PC_gpio_pyH3/blob/master/pyA20/gpio/mapping.h para conocer la etiqueta de cada pin)
led = port.STATUS_LED
 
# Inicializamos el objeto gpio
gpio.init()
 
# Establecemos el pin asociado al LED como salida digital
gpio.setcfg(led, gpio.OUTPUT)
 
# Realizar un parpadeo del LED hasta que se reciba la senial del sistema correspondiente a Ctrl+C
try:
    # Mostrar por pantalla
    print ("Presiona CTRL+C para salir")
 
    # Bucle infinito
    while True:
        gpio.output(led, 1) # Encender LED
        sleep(0.25) # Esperar 250ms
        gpio.output(led, 0) # Apagar LED
        sleep(0.25) # Esperar 250ms
 
        gpio.output(led, 1) # Encender LED
        sleep(0.25) # Esperar 250ms
        gpio.output(led, 0) # Apagar LED
        sleep(0.25) # Esperar 250ms
 
        sleep(1) # Esperar 1 segundo
 
# Senial provocada por Ctrl+C
except KeyboardInterrupt:
    # Mostrar por pantalla
    print ("\nFin del programa")

2 — Выполняем программу:

sudo python testgpio.py

https://youtu.be/O9KEfDVsslI

Оцените статью
( Пока оценок нет )
PcMiniPro
Добавить комментарий

  1. Сергей

    Че-т я не совсем понимаю, а где в коде выбор конкретной ноги, которая должна мигать?

    Ответить
    1. Ерлан

      аналогично, и сам скрипт тоже не понимает — ошибка

      Ответить
266 / 0,365 / 16.49mb