目录
一、认知WiringPi库(借鉴:树莓派wiringPi库详解)
二、树莓派与继电器硬件连接原理图(以GPIO25引脚连接为例)
一、认知WiringPi库(借鉴:树莓派wiringPi库详解)
①:函数解释
②:串口解除
/* 修改 cmdline.txt文件 */
cd /boot/
sudo vim cmdline.txt
删除【】之间的部分
dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
③:重启sudo reboot
二、树莓派与继电器硬件连接原理图(以GPIO25引脚连接为例)
三、软件代码
/*上位机通过串口控制树莓派引脚状态,从而达到继电器组合控制LED灯的开与关*/
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wiringSerial.h>
void INIT_GPIO_MODE(void);
void INIT_GPIO_STATUS(void);
void INIT_GPIO_MODE(void)
{
pinMode(25,OUTPUT);
pinMode(0,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
}
void INIT_GPIO_STATUS(void)
{
digitalWrite(25,HIGH);
digitalWrite(0,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
}
int main()
{
int data;
wiringPiSetup();
int fd,num;
fd=serialOpen("/dev/ttyAMA0",9600);
if(fd==-1)
{
printf("打开串口失败");
}
INIT_GPIO_MODE();
INIT_GPIO_STATUS();
printf("请输入:1->关闭二楼灯 2->打开二楼灯 3->关闭客厅灯 4->打开客厅灯 5->关闭泳池灯 6->打开泳池灯 7->关锁 8->开锁\n ");
while(1)
{
while(serialDataAvail(fd)!=-1)
{
data=serialGetchar(fd);
printf("data=%02X\r\n",data);
switch(data)
{
case 0x02:
digitalWrite(25,HIGH);
break;
case 0x01:
digitalWrite(25,LOW);
break;
case 0x11:
digitalWrite(3,HIGH);
break;
case 0x10:
digitalWrite(3,LOW);
break;
case 0x06:
digitalWrite(2,HIGH);
break;
case 0x05:
digitalWrite(2,LOW);
break;
case 0x08:
digitalWrite(0,HIGH);
break;
case 0x07:
digitalWrite(0,LOW);
break;
case 0x09:
INIT_GPIO_STATUS();
default:
break;
}
}
}
return 0;
}