谢谢aaaaaaaaaaaaaaaaaaaaaaaaa |
感谢分享 |
本帖最后由 海底沙 于 2018-9-1 08:43 编辑 Seasonic 发表于 2018-8-31 14:40 其实现在的SOC固件已经优化的很好了,绝大部分自己要的功能只添加到gizwits_product.c就行,其他文件可以不动的,其中 初始化加到 void ICACHE_FLASH_ATTR userInit(void), 下传数据执行控制加到 int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len), 上传数据或运行的功能加到 void ICACHE_FLASH_ATTR userHandle(void),ESP8266采用定时中断方式运行,userHandle() 1秒钟(可修改)运行一次,所以,可把自己编写的函数或功能代码放到userHandle() 运行。 因此添加如下代码到gizwits_product.c就行: #include "driver/SSD1306_spi.h" #include "driver/dht.h" double tem,hum; extern uint8_t humidity; extern uint8_t temperature; protocolTime_t sntp_time; //定义时间结构体 void ICACHE_FLASH_ATTR userHandle(void) { gagentGetNTP(&sntp_time); //读取时间 //显示时间 ssd1306_spi_double(0,0,6,sntp_time.month,2,0); ssd1306_spi_P8x16Str(16,6,"-"); ssd1306_spi_double(0,24,6,sntp_time.day,2,0); ssd1306_spi_double(0,48,6,sntp_time.hour,2,0); ssd1306_spi_P8x16Str(64,6,":"); ssd1306_spi_double(0,72,6,sntp_time.minute,2,0); ssd1306_spi_P8x16Str(88,6,":"); ssd1306_spi_double(0,96,6,sntp_time.second,2,0); //每分钟刷新一次温、湿度,并上报数据至机智云 if(sntp_time.second == 0) { dht_read(); ssd1306_spi_cls(); ssd1306_spi_P16x16Ch(0,2,0); //温 ssd1306_spi_P16x16Ch(16,2,2); //度 ssd1306_spi_P8x16Str(32,2,":"); ssd1306_spi_P16x16Ch(96,2,3); ssd1306_spi_P16x16Ch(0,4,1); //湿 ssd1306_spi_P16x16Ch(16,4,2); //度 ssd1306_spi_P8x16Str(32,4,":"); ssd1306_spi_P8x16Str(96,4,"%"); ssd1306_spi_double(1,87,2,temperature,1,1); ssd1306_spi_double(1,87,4,humidity,1,1); currentDataPoint.valuetemp = temperature * 1.0; //Add Sensor Data Collection currentDataPoint.valuehumi = humidity * 1.0; //Add Sensor Data Collection system_os_post(USER_TASK_PRIO_2, SIG_UPGRADE_DATA, 0); } } void ICACHE_FLASH_ATTR userInit(void) { gizMemset((uint8_t *)¤tDataPoint, 0, sizeof(dataPoint_t)); dht_init(); ssd1306_spi_init(); } |
我把SSD1306_spi.c及SSD1306_spi.h文件分别添加到生成的SOC工程(RGB,DH11,Motor已移植验证)当中对就的路径,并在user_main.c中添加了头文件包含,在User_Init函数中添加了SSD1306_spi的初始化函数,然后编译,不能够通过,请问你这部分是怎么移植的? |
这是在ESP8266上SOC方案SDK加的,因为这个ESP8266的没有找到,所以参考Arduino自己编了一个。我觉得ESP8266还有很大能力完成一些功能,没必要交给Arduino做,虽然Ardino有很多开源的资源,但体积大,所以我喜欢用SOC方案。 |
您这个是SDK开发的么?还是Andunio ,我有SDK的 |
i2c的我也编了,烧录后才发现我的OLED并不支持i2c,所以就改为spi了。编这个主要是学习总线的时序关系。 |
i2c的oled我今天在写,温湿度传感器直接移植就行了,不明白的加我QQ我给你看一下,1083791810 |
henhaoyong |
版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )