WiringOP 开源项目教程
WiringOP项目地址:https://gitcode.com/gh_mirrors/wir/WiringOP
项目介绍
WiringOP 是一个基于 WiringPi 库的 GPIO 控制库,专门为 Orange Pi 系列单板计算机设计。WiringPi 最初是为 Raspberry Pi 设计的,但由于 Orange Pi 的普及,开发者 zhaolei 将其移植到了 Orange Pi 上,使得用户可以通过简单的编程接口来控制 GPIO 引脚。
WiringOP 提供了类似于 Arduino 的 Wiring 库的编程接口,使得熟悉 Arduino 编程的开发者可以轻松上手。通过这个库,用户可以进行 GPIO 的读写操作,控制 LED、传感器、继电器等外设。
项目快速启动
安装 WiringOP
首先,确保你的 Orange Pi 已经安装了 Debian 或 Ubuntu 系统。然后,通过以下命令克隆 WiringOP 仓库并进行安装:
git clone https://github.com/zhaolei/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build
控制 GPIO 示例
安装完成后,你可以通过以下示例代码来控制 GPIO 引脚。假设我们要控制 GPIO2 引脚(对应 WiringOP 中的编号为 2):
#include <wiringPi.h>
int main(void) {
wiringPiSetup();
pinMode(2, OUTPUT);
while (1) {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
return 0;
}
编译并运行这个程序:
gcc -o gpio_test gpio_test.c -lwiringPi
sudo ./gpio_test
应用案例和最佳实践
案例一:LED 闪烁
通过控制 GPIO 引脚,实现一个简单的 LED 闪烁程序。如上所示的示例代码,通过循环设置 GPIO 引脚的高低电平,实现 LED 的闪烁效果。
案例二:温度传感器读取
连接一个 DHT11 温度传感器到 GPIO 引脚,通过编写程序读取传感器的温度和湿度数据:
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#define MAXTIMINGS 85
#define DHTPIN 7
int dht11_dat[5] = {0, 0, 0, 0, 0};
void read_dht11_dat() {
uint8_t laststate = HIGH;
uint8_t counter = 0;
uint8_t j = 0, i;
float f;
dht11_dat[0] = dht11_dat[1] = dht11_dat[2] = dht11_dat[3] = dht11_dat[4] = 0;
pinMode(DHTPIN, OUTPUT);
digitalWrite(DHTPIN, LOW);
delay(18);
digitalWrite(DHTPIN, HIGH);
delayMicroseconds(40);
pinMode(DHTPIN, INPUT);
for (i = 0; i < MAXTIMINGS; i++) {
counter = 0;
while (digitalRead(DHTPIN) == laststate) {
counter++;
delayMicroseconds(1);
if (counter == 255) {
break;
}
}
laststate = digitalRead(DHTPIN);
if (counter == 255) {
break;
}
if ((i >= 4) && (i % 2 == 0)) {
dht11_dat[j / 8] <<= 1;
if (counter > 16) {
dht11_dat[j / 8] |= 1;
}
j++;
}
}
if ((j >= 40) && (dht11_dat[4] == ((dht11_dat[0] + dht11_dat[1] + dht11_dat[2] + dht11_dat[3])