参考资料【RPi.GPIO 模块使用基础 | 树莓派实验室】https://shumeipai.nxez.com/2016/09/28/rpi-gpio-module-basics.html
学习树莓派GPIO编程,数字量输出。树莓派作为一款操作系统单片机,可以有效实现上位机显示和下位机控制。传统的单片机可以通过Keil编程实现底层的控制,如果需要与上位机显示,或者需要进行上位机控制,比如实现上位机对单片机启动或停止的控制,则需要利用单片机与PC机进行串口通信。
一、树莓派GPIO输出
首先用Python进行编程,实现LED以每秒1次的频率闪烁。
// Python code for GPIO output
import RPi.GPIO as GPIO
import time as t
pin=21
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin,GPIO.OUT)
while True:
GPIO.output(pin,GPIO.HIGH)
t.sleep(1)
GPIO.output(pin, GPIO.LOW)
t.sleep(0)
GPIO.cleanup()
用C语言实现树莓派GPIO的控制同样重要,因为在实现Arduino平台编程时,即采用C语言。为了打通两个平台,需要同时学习C语言和Python语言。
// C code for GPIO output
#include<studio.h>
#include<wiringPi.h>
int main()
{
int pin=29;
wiringPiSetup();
pinMode(pin,OUTPUT);
while(1)
{
digitalWrite(pin,1);
delay(1000);//单位ms
digitalWrite(pin,0);
delay(1000);
}
return 0;
}
二、树莓派半交互式输出
这里之所以说是半交互式输出,是因为在下位机控制LED时,上位机能够同步显示LED编号,但是显示的编号是完全基于上位机编程来实现的,因为树莓派的编程上位机和下位机的程序是一起的,因此实现上位机和下位机的交互也变得特别容易。但是,这并不是完全交互式的输出,因为完全交互要求树莓派能够采集LED的状态,从而在上位机上进行显示,并进一步根据上位机的命令进行下位机的控制。
这里通过Python和C语言实现上位机和下位机同步显示LED点亮。
// Python code for LED
import RPi.GPIO as GPIO
import time as t
pin=21
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin,GPIO.OUT)
while True:
Print("The pin No."+str(led)+"is on")
GPIO.output(pin,GPIO.HIGH)
t.sleep(1)
print("The pin no."+str(led)+“is off")
GPIO.output(pin,GPIO.LOW)
t.sleep(1)
GPIO.clearup()
这个代码的作用是在下位机点亮LED的时候,在上位机屏幕上显示点亮的LED编号。同样的,C语言编程也同样要掌握。
// C code for LED
#include<stdio.h>
#include<wiringPi.h>
int main()
{
int pin=21;
wiringPiSetup();
pinMode(pin,OUTPUT);
while(1)
{
printf("The pin No. %d is on\n",pin);
digitalWrite(pin,HIGH);
delay(1000);
printf("The pin No. %d is off\n",pin);
digitalWrite(pin,LOW);
delay(1000);
}
return 0;
}