Цифровой выход может использоваться для вывода двоичного логического значения, соответствующему логическому уровню контактов, OPi имеет логический уровень 3,3 В, что означает, что цифровые значения соответствуют форме: 0 ‘(LOW) 0В; ‘1’ (HIGH) 3,3 В.
Цифровыми выходами можно управлять активацией/деактивацией подключенных к ним внешних элементов, таких как светодиоды, транзисторы, реле.
На языке Си
Сделаем программу Blink, чтобы мигать светодиодом, подключенный к GPIO1 , физический контакт № 12 (WiringPi Pin 1). Чтобы знать метки каждого вывода библиотеки WiringOP, мы можем использовать следующее изображение (контакт № 12, который мы будем использовать, соответствует выводу 1 внутри библиотеки).
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
На языке 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
Че-т я не совсем понимаю, а где в коде выбор конкретной ноги, которая должна мигать?
аналогично, и сам скрипт тоже не понимает — ошибка