在树莓派上控制GPIO常用的编程语言有哪些

news/2024/11/20 17:36:39/

在这里插入图片描述

在树莓派上控制GPIO(General Purpose Input Output,通用输入输出接口),比较常用和简单的编程语言有:

1. Python

这是树莓派官方推荐语言,控制GPIO只需要导入RPi.GPIO库,简单易学,代码如下:

import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM) 
GPIO.setup(18, GPIO.OUT)
GPIO.output(18, GPIO.HIGH)

2. C/C++

这是一门底层语言,控制GPIO需要直接寻址内存,代码较为复杂,但执行效率高,代码如下:

#include <stdio.h>
#include <wiringPi.h>int main(void) 
{wiringPiSetup();pinMode(18, OUTPUT);     digitalWrite(18, HIGH);   return 0;
} 

3 Bash

这是Linux系统下的一脚本语言,控制GPIO需要调用 buy来实现,代码如下:

echo "18" > /sys/class/gpio/export  
echo "out" > /sys/class/gpio/gpio18/direction   
echo "1" > /sys/class/gpio/gpio18/value

4. Java

这是一门面向对象的语言,在树莓派上可以使用Pi4J库来控制GPIO,代码如下:

import com.pi4j.io.gpio.*;public class GpioExample {public static void main(String[] args) throws Exception {final GpioController gpio = GpioFactory.getInstance();final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_18);pin.high();}
} 

总结

综上所述,我们可以根据项目需求选择适合的语言。

  • Python 简单易用,学习曲线低,适合初学者和简单项目。
  • C语言执行效率高,可用于对资源要求高的项目,但学习曲线较波折。
  • Bash:简单的脚本语言,可用于简单的GPIO控制,但不适合复杂项目开发。
  • Java:面向对象语言,学习曲线一般,可用于中等复杂度的GPIO项目开发。

最后附上一个C实例

在树莓派上使用C++控制GPIO,可以使用wiringPi库,这个程序会使GPIO18(Pin12)输出高低电平轮换,实现闪烁5次的效果。

#include <wiringPi.h> int main() {wiringPiSetup();   //初始化wiringPi库pinMode(18, OUTPUT); //将GPIO18设置为输出模式for(int i=0; i<5; i++) {  //循环闪烁5次digitalWrite(18, HIGH); //GPIO18输出高电平delay(500);            //延时500msdigitalWrite(18, LOW);  //GPIO18输出低电平delay(500);}return 0;
}

具体步骤:

安装wiringPi库,

在树莓派终端输入以下命令进行安装:

sudo apt-get install wiringpi

编写C++代码,调用 include <wiringPi.h> 头文件。
调用 wiringPiSetup() 初始化GPIO控制。
使用 pinMode() 设置GPIO模式为输出模式。
使用 digitalWrite() 输出高或低电平,控制GPIO。
使用 delay() 添加延时,以控制输出时间。

  • 进行交叉编译
g++ -o example example.cpp -lwiringPi
  • 执行程序
sudo ./example

GPIO18针脚会输出高低电平, LED会闪烁5次。


http://www.ppmy.cn/news/89071.html

相关文章

Stimulsoft报表开发工具支持电子签名啦!一起来看

Stimulsoft Reports 是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…

很后悔,才发现这个API管理神器

想必大家都注意到了&#xff0c;近半年国产API管理工具火了起来。这说明两个问题&#xff0c;第一&#xff0c;API管理的重要性被越来越多的开发者认识到了&#xff0c;研发团队对API管理的需求也越来越强了。第二&#xff0c;说明国产软件真是越来越厉害了&#xff0c;大家确实…

STM32与ESP32下载器设计

文章目录 背景STM32下载器使用现成的DAPlink选择自制DAPlink ESP32/ESP8266下载器连接接口STM32接口ESP32接口 背景 我们常用的单片机主要有STM32和ESP32&#xff0c;其中STM32下载要求SWD下载接口&#xff0c;ESP32下载要求串口&#xff0c;但需要控制ESP32 IO0和EN口高低电平…

基于Android studio二手车交易系统app

客户端&#xff1a; 用户注册&#xff1a;通过输入用户名&#xff0c;密码&#xff0c;所在地&#xff0c;联系地址以及电话和电子邮件等信息进行用户信息的注册。 二手车查看&#xff1a;用户注册登录系统后&#xff0c;可以查看二手车的基本信息&#xff0c;通过二手车的品牌…

如何避免Salesforce Apex代码中5个常见错误,提升开发技巧?

编码是一门需要严谨和谨慎的技术&#xff0c;即使是有经验的开发人员也会犯错。一些最常见的编程错误&#xff0c;可能会导致严重的后果。因此&#xff0c;作为一名开发人员&#xff0c;了解并避免这些错误是非常重要的。 本篇文章将为学习者介绍在编写Apex代码时一定要规避的…

JUnit与Mockito测试框架使用指南

JUnit与Mockito测试框架使用指南 一、简介1. JUnit概述2. JUnit的作用3. JUnit的使用方法 二、JUnit使用指南1. 单元测试的基本概念2. 常用的JUnit注解3. JUnit断言&#xff08;Assertion&#xff09;的使用方法4. JUnit的测试套件&#xff08;Suite&#xff09;使用方法5. JUn…

深度学习笔记之循环神经网络(七)反向传播角度观察LSTM

深度学习笔记之循环神经网络——反向传播角度观察LSTM 引言回顾加补充&#xff1a;通过时间反向传播 LSTM \text{LSTM} LSTM的反向传播过程场景构建示例&#xff1a;求解梯度 L ( T ) ∂ W X ⇒ F \begin{aligned}\frac{\mathcal L^{(\mathcal T)}}{\partial \mathcal W_{\math…

javaWeb 兼职管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh兼职管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Mye…