十 如何利用树莓派的GPIO口点亮一个灯及控制小车简单运动(附源代码)

树莓派GPIO口相关介绍

就像学习一门新的语言,一定要打印“Hello world”,学习某一种芯片,一定是点亮一个灯。想要使用GPIO,我们需要先下载相关的软件包,如果使用python编程,下载RPI.GPIO,如果使用C语言编程,需要先下载wiring pi,下面两条是安装RPI.GPIO的指令:sudo apt-get update;sudo apt-get install python-rpi.gpio

使用GPIO时的一般设置

1.导入GPIO库
import RPI.GPIO as GPIO
2.设定GPIO引脚使用编号模式(看引脚原理图)
基于插座引脚编号:GPIO.setmode(GPIO.BOARD)
基于CPU寄存器编号:GPIO.setmode(GPIO.BCM)
3.设定对应GPIO模式
输出模式:GPIO.setup(引脚号,GPIO.OUT)
输入模式:GPIO.setup( 引脚号,GPIO.IN)
4.电平设置
输出模式下,对应管脚电平置高或置低;输入模式下,读取相应管脚电平即可。
输出高电平:GPIO.output(引脚号,GPIO.HIGH/True)
输出低电平:GPIO.output(引脚号,GPIO.LOW/False)

点灯源代码

下面是python编程实现每0.5秒闪烁一次的源程序。(注:运行时如果有错,把注释删掉,不是python中正确的中文注释方式)

/********************代码led.py********************************/
import RPi.GPIO as GPIO      	#导入GPIO模块并重命名
from time import sleep         #导入time模块sleep函数,延时用
GPIO.setmode(GPIO.BCM)     #引脚采用BCM模式
GPIO.setwarnings(False)        #消除警告
GPIO.setup(3,GPIO.OUT)      #引脚3设为输出模式
while True:
	GPIO.output(3,GPIO.HIGH)     #输出高电平
	sleep(0.5)                    #延时0.5秒
	GPIO.output(3,GPIO.LOW)
	sleep(0.5)

如何实现小车各个方向的运动

小车最基本的运动无非就是前进,后退,左右转向,其中转向利用的两个轮子的差速。本项目使用的L298N电机驱动模块,下面给出该模块实现各个方向运动的逻辑图。(此图针对本人实际接线图,根据每人接线不同,仅供参考)

方向 IN1(左轮) IN2(左轮) IN3(右轮) IN4(右轮)
前进
后退
左转
右转

注:高低指得是L298n电机驱动模块控制管脚的电平高低

源代码

IN1-4分别接的是BOARD模式下31,33,35,37引脚,程序的功能是循环实现小车前进,后退,左转,右转各3秒

import RPi.GPIO as GPIO  
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False) 
IN1 = 31
IN2 = 33
IN3 = 35
IN4 = 37
def init():   
        GPIO.setup(IN1,GPIO.OUT)
        GPIO.setup(IN2,GPIO.OUT)
        GPIO.setup(IN3,GPIO.OUT)
        GPIO.setup(IN4,GPIO.OUT)
def qianjin(sleep_time):
        GPIO.output(IN1,GPIO.HIGH)
        GPIO.output(IN2,GPIO.LOW)
        GPIO.output(IN3,GPIO.HIGH)
        GPIO.output(IN4,GPIO.LOW)
        time.sleep(sleep_time)
def back(sleep_time):
        GPIO.output(IN1,GPIO.LOW)
        GPIO.output(IN2,GPIO.HIGH)
        GPIO.output(IN3,GPIO.LOW)
        GPIO.output(IN4,GPIO.HIGH)
        time.sleep(sleep_time)
def left(sleep_time):
        GPIO.output(IN1,False)
        GPIO.output(IN2,False)
        GPIO.output(IN3,GPIO.HIGH)
        GPIO.output(IN4,GPIO.LOW)
        time.sleep(sleep_time)
def right(sleep_time):
        GPIO.output(IN1,GPIO.HIGH)
        GPIO.output(IN2,GPIO.LOW)
        GPIO.output(IN3,False)
        GPIO.output(IN4,False)
        time.sleep(sleep_time)
init()
while True:
	qianjin(3)
	back(3)
	left(3)
	right(3)

你可能感兴趣的:(基于树莓派3的智能监控小车)