完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
PCB做出来了
原理图: PCB layout: 进度慢,没辙,课程压力太大了(作者菜) PCB版本的改进了按键检测机制:添加了外部中断 下面是代码: #include #include #include "U8glib.h" //#include #define DHTpin 4 //自己按需求修改 #define Red_led 8 #define key_1 2 #define key_2 3 #define relay 5 U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);// 初始化i2c接口 SimpleDHT11 dht11(DHTpin);//初始化DHT11对象 String tmp; String hmp; String KHS = "60";//显示阈值 int KH=60; //实际阈值 void draw_hello(void) { u8g.setFont(u8g_font_unifont); u8g.drawStr( 0, 22, "Hello Baby!"); } void draw_data(void) { //具体显示屏显示内容 u8g.setFont(u8g_font_unifont);//设置字体 u8g.drawStr( 0, 16, tmp.c_str());//写入字符串 u8g.drawStr( 0, 32, hmp.c_str()); u8g.drawStr( 15, 48, KHS.c_str()); } void setup() { // put your setup code here, to run once: /*GPIO初始化*/ pinMode(Red_led,OUTPUT); //pinMode(8, OUTPUT);//不知道干啥的 pinMode(key_1,INPUT); pinMode(key_2,INPUT); pinMode(relay,OUTPUT); attachInterrupt( digitalPinToInterrupt(key_1), KEY1DOWN, CHANGE); attachInterrupt( digitalPinToInterrupt(key_2), KEY2DOWN, CHANGE); /*串口初始化*/ Serial.begin(115200); draw_hello(); delay(1500); /*Here is nothing!!*/ /*这是一个空行*/ // flip screen, if required // u8g.setRot180(); // set SPI backup if required //u8g.setHardwareBackup(u8g_backup_avr_spi); // assign default color value if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { u8g.setColorIndex(255); // white } else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) { u8g.setColorIndex(3); // max intensity } else if ( u8g.getMode() == U8G_MODE_BW ) { u8g.setColorIndex(1); // pixel on } else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { u8g.setHiColorByRGB(255,255,255); } } void loop() { /*led指示灯闪烁*/ digitalWrite(Red_led,HIGH); delay(500); digitalWrite(Red_led,LOW); delay(500); //draw_hello(); //delay(1200); /*DHT11读取并串口打印显示*/ byte temperature = 0; byte humidity = 0; byte humidity_last = 0; int err = SimpleDHTErrSuccess; if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) { Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000); return; } humidity_last = humidity; //字符串拼接 tmp += String("Temperature:"); tmp += String(temperature); tmp += String("*C"); hmp += String("Humidity: "); hmp += String(humidity); hmp += String("RH%"); Serial.print((int)temperature); Serial.print(" *C, "); Serial.print((int)humidity); Serial.println(" H"); if(humidity digitalWrite(relay,HIGH); //digitalWrite(A0,LOW); Serial.println("Warnning!"); } if(humidity>=KH){ //digitalWrite(A0,HIGH); digitalWrite(relay,LOW); } /*oled显示屏显示程序*/ u8g.firstPage(); do { if(humidity != humidity_last){ u8g.drawStr( 0, 16, tmp.c_str()); u8g.drawStr( 0, 32, " "); delay(1000); } draw_data(); } while( u8g.nextPage() ); } void KEY1DOWN(){ KH++; KHS=String(KH); } void KEY2DOWN(){ KH--; KHS=String(KH); } |
|
|
|
只有小组成员才能发言,加入小组>>
3308 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9049 浏览 16 评论
4083 浏览 18 评论
1167浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:22 , Processed in 1.085680 second(s), Total 51, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号