基于树莓派上实现的智能垃圾桶
整体功能
垃圾桶分为移动模式和清洁桶模式,移动模式垃圾桶通过电机操作马达轮子进行移动,清洁桶模式则LED屏幕亮起,检测温度,自动拉起桶盖,整体通过远程利用客户端进行控制。
LED屏的实现
oled.c
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
#include <dirent.h>
#include <stdlib.h>
#include "wd.h"
int fd;
unsigned char yi[4][16]={
" ",//第一行
" ",//第二行
" ",//第三行
" " //第四行
}; //显示内容
const unsigned char zi[];
void initoled(void)//初始化
{
wiringPiSetup();
fd=wiringPiI2CSetup(0x3c);//i2c初始化 0x3c是oled的从机地址
wiringPiI2CWriteReg8(fd,0x00,0xa1);//图像反了修改成0xa0
wiringPiI2CWriteReg8(fd,0x00,0xc8);//行输出反了修改成0xc0
wiringPiI2CWriteReg8(fd,0x00,0x8d);//允许电荷泵
wiringPiI2CWriteReg8(fd,0x00,0x14);
wiringPiI2CWriteReg8(fd,0x00,0xa6);//想反相显示改成0xa7
wiringPiI2CWriteReg8(fd,0x00,0x21);//重置列地址
wiringPiI2CWriteReg8(fd,0x00,0x00);
wiringPiI2CWriteReg8(fd,0x00,0x7f);
wiringPiI2CWriteReg8(fd,0x00,0xaf);//开显示
system("sudo modprobe w1-gpio");
system("sudo modprobe w1-therm");
}
void qingping(void)//清屏
{
char zt1,zt2;
for(zt1=0;zt1<8;zt1++)
{
wiringPiI2CWriteReg8(fd,0x00,0xb0+zt1);
for(zt2=0;zt2<128;zt2++) wiringPiI2CWriteReg8(fd,0x40,0x00);
}
}
void ascii(void)//显示ASCII码8*16
{
int zt;
char zt3,zt4;
for(zt3=0;zt3<4;zt3++)
{
wiringPiI2CWriteReg8(fd,0x00,0xb0+(zt3*2));
for(zt4=0;zt4<16;zt4++)
for(zt=0;zt<8;zt++)
wiringPiI2CWriteReg8(fd,0x40,zi[yi[zt3][zt4]*16+zt]);
wiringPiI2CWriteReg8(fd,0x00,0xb0+(zt3*2)+1);
for(zt4=0;zt4<16;zt4++)
for(zt=0;zt<8;zt++)
wiringPiI2CWriteReg8(fd,0x40,zi[yi[zt3][zt4]*16+zt+8]);
}
}
void wendu(void)//调用温度函数
{
float value;
char buf[100];
value=wd();
gcvt(value, 5, buf);
strcpy(yi[0],buf);
}
void shijian(void)//当前时间
{
struct tm *ptr;
time_t lt;
FILE *f;
char data[255];
lt=time(<);
ptr=localtime(<);
strftime(yi[1],16,"%m/%d %a",ptr); //月/日 周几
strftime(yi[2],16,"%R %p",ptr);//时:分 am或pm
}
void oled(void)
{
while(1)
{
shijian();
wendu();
ascii();
delay(100);
}
}
这是利用SSD1306的0.91OLED模块通过以上代码实现显示在LED屏幕,温度函数这是利用DS18B20通过以下代码显示在LED屏
wd.c
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <time.h>
#include <stdio.h>
#include &l

最低0.47元/天 解锁文章
1017





