基于esp8266的智能台灯DIY
研究esp8266已经很久了,特制作了一个智能灯,
代码如下,总结几点
一、关于arduino pro mini 的烧写方法
一定要在编译成功之后的下载提示出现的瞬间,单击复位按钮。才可进入烧写
二、esp8266APP界面图标功能串联混乱的解决方法,即,重新加载 机智云库文件即可。
#include <Gizwits.h>
#include <Wire.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(A2, A3); // A2 -> RX, A3 -> TX
Gizwits myGizwits;
#define KEY1 6
#define KEY2 7
#define KEY1_SHORT_PRESS 1
#define KEY1_LONG_PRESS 2
#define KEY2_SHORT_PRESS 4
#define KEY2_LONG_PRESS 8
#define NO_KEY 0
#define KEY_LONG_TIMER 3
int flag =;
unsigned long Last_KeyTime = ;
unsigned long gokit_time_s(void)
{
return millis() / ;
}
char gokit_key1down(void)
{
unsigned long keep_time = ;
if (digitalRead(KEY1) == LOW)
{
delay();
if (digitalRead(KEY1) == LOW)
{
keep_time = gokit_time_s();
while (digitalRead(KEY1) == LOW)
{
if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)
{
Last_KeyTime = gokit_time_s();
return KEY1_LONG_PRESS;
}
} //until open the key if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)
{
return KEY1_SHORT_PRESS;
}
return ;
}
return ;
}
return ;
} char gokit_key2down(void)
{
int unsigned long keep_time = ;
if (digitalRead(KEY2) == LOW)
{
delay();
if (digitalRead(KEY2) == LOW)
{
keep_time = gokit_time_s();
while (digitalRead(KEY2) == LOW) //until open the key
{ if ((gokit_time_s() - keep_time) > KEY_LONG_TIMER)
{
Last_KeyTime = gokit_time_s();
return KEY2_LONG_PRESS;
}
}
if ((gokit_time_s() - Last_KeyTime) > KEY_LONG_TIMER)
{
return KEY2_SHORT_PRESS;
}
return ;
}
return ;
}
return ;
}
char gokit_keydown(void)
{
char ret = ;
ret |= gokit_key2down();
ret |= gokit_key1down();
return ret;
}
void KEY_Handle(void)
{
switch (gokit_keydown())
{
case KEY1_SHORT_PRESS:
myGizwits.setBindMode(WIFI_PRODUCTION_TEST);
break;
case KEY1_LONG_PRESS:
myGizwits.setBindMode(WIFI_RESET_MODE);
break;
case KEY2_SHORT_PRESS:
myGizwits.setBindMode(WIFI_SOFTAP_MODE);
break;
case KEY2_LONG_PRESS:
myGizwits.setBindMode(WIFI_AIRLINK_MODE);
digitalWrite(,HIGH);
digitalWrite(,HIGH);
delay();
digitalWrite(,LOW);
digitalWrite(,LOW);
break;
default:
break;
}
}
void wifiStatusHandle()
{
if(myGizwits.wifiHasBeenSet(WIFI_SOFTAP))
{
}
if(myGizwits.wifiHasBeenSet(WIFI_AIRLINK))
{
}
} void setup() {
// put your setup code here, to run once: mySerial.begin();
pinMode(KEY1, INPUT_PULLUP);
pinMode(KEY2, INPUT_PULLUP);
pinMode(,INPUT);//红外探头
pinMode(,OUTPUT);//指示灯
pinMode(,OUTPUT);//beeWIFI_AIRLINK成功报警提示
pinMode(,OUTPUT);//test
pinMode(,OUTPUT);
digitalWrite(,LOW);
digitalWrite(,LOW);
digitalWrite(,HIGH);
myGizwits.begin();
}
void loop() {
KEY_Handle();//key handle , network configure网络配置
wifiStatusHandle();//WIFI Status Handle无线网络状态处理
unsigned long varW_timeh ;//Add Sensor Data Collection
unsigned long varR_T_Minutes;
bool varR_on_off ;
if (digitalRead()==LOW)
{
digitalWrite(,LOW);
}
if(myGizwits.hasBeenSet(EVENT_on_off))
{
myGizwits.read(EVENT_on_off,&varR_on_off);//Address for storing data
if(varR_on_off==)
{
digitalWrite(,LOW);
}
else
digitalWrite(,HIGH);
}
if(myGizwits.hasBeenSet(EVENT_T_Minutes))
{
myGizwits.read(EVENT_T_Minutes,&varR_T_Minutes);//Address for storing data analogWrite(,int(varR_T_Minutes));
varW_timeh=varR_T_Minutes;
myGizwits.write(VALUE_timeh, varW_timeh);
}
myGizwits.process(); }
基于esp8266的智能台灯DIY的更多相关文章
- Diy智能家居-1.基于esp8266的语音控制系统(开篇)
目录Diy智能家居-1.基于esp8266的语音控制系统(开篇) https://blog.csdn.net/arno1988/article/details/82628589 Diy智能家居-2.基 ...
- 智能家居-3.基于esp8266的语音控制系统(软件篇)
智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) 赞赏支持 QQ:505645 ...
- 智能家居-2.基于esp8266的语音控制系统(硬件篇)
智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) 赞赏支持 QQ:505645 ...
- 智能家居-1.基于esp8266的语音控制系统(开篇)
智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) apache-apollo安 ...
- 毕业论文系列之基于WiFi的智能农业大棚管控系统设计代码
#include <dht11.h>//dht11库 #include <MsTimer2.h> //定时器库的 头文件 #include < ...
- 基于Linux的智能家居的设计(3)
2 硬件设计 本课题的硬件设计包含主控制器.传输数据设计.数据採集设计.控制驱动设计.显示设计.门禁设计. 2.1 主控制器 依据方案三选择S3C6410主控芯片,S3C6410是由Samsung ...
- 基于Linux的智能家居的设计(4)
3 开发环境的搭建 本次课题使用的开发环境比較特殊.没有一个现成的集成开发环境,需要自己一步一步的搭建开发环境,开发环境的搭建的过程十分复杂,并且假设没有这个开发环境本次课题就无法进行. 因此.在进 ...
- 基于Linux的智能家居的设计(2)
1 系统整体设计方案 智能家居系统的是一个实时查询家庭的温湿度.照明控制.自己主动控制的设定.集家庭娱乐.智能安防为一体,大量数据快处理.可靠的系统,因此在硬件和软件上都有非常大的要求,因此在这里进 ...
- Arduino 基于 ESP8266 配置WIFI模块
Arduino 基于 ESP8266 配置WIFI模块 使用ESP8266作为服务器,使用浏览器访问该服务器,从而控制LED灯 选择 [文件]->[示例]->[ESP8266WIFI]-& ...
随机推荐
- angular4.0使用JSONP数据请求
ng4中有很多获取数据的API,为了满足跨域的需求,我选择JSONP模块: 应该有很多小伙伴遇到这个报错吧 injected script did not invoke callback: 下面我写个 ...
- 实战开发-》融云tp3.2.3
1.先去下载sdk 2.我放在的位置如下: 3.之前试了试,怎么引入都不成功,所以我加入了命名空间 还有,我把methods下的所有类都加了命名空间,心里安慰吧. 4.在公共函数写函数,例如 填写自己 ...
- iOS开发的另类神器:libimobiledevice开源包【类似android adb 方便获取iOS设备信息】
简介 libimobiledevice又称libiphone,是一个开源包,可以让Linux支持连接iPhone/iPod Touch等iOS设备.由于苹果官方并不支持Linux系统,但是Linux上 ...
- Latex 学习之旅(一)
学习资料: LaTeX笔记(八)--数学建模专题 如何用Markdown写论文? LaTeX排版札记 LaTeX排版札记:part 2-速查手册.导言区.扉页和公式 论文格式细节整理汇总 https: ...
- EasyUI学习笔记---Datagrid真分页
EasyUI Datagrid组件在我看来功能还是很强大的,在我使用过程中遇到分页请求的问题困扰了一天才解决,下面我就把我遇到的问题分享一下 //datagrid数据表格渲染 $("#dg& ...
- ActiveMQ入门介绍
1.JMS简介 JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息.把它应用到实际的业务需 ...
- 云服务器 远程mysql 无法连接
问题:mysql不管是用免安装版的,还是用直接安装的,还是用phpStudy直接发布的mysql服务.都只能用localhost登录,不能用服务器的ip进行远程访问 遇到这个问题.按照网上大家介绍的方 ...
- 嵌入式Tomcat容器的参数(maxParameterCount)设定
背景 昨天同事遇到了error一起看了一下感觉比较重要在这记录一下 基本情况是页面上选中9K+的数据向后台发送请求,然后系统就崩了... error信息如下 More than the maximum ...
- ionic滑动框 ---轮播图(ion-slide-box) 的使用
1. html : <ion-slide-box auto-play="true" slide-interval=3000 show-pager="false&qu ...
- vue的组件小操作
项目技术: webpack + vue + element + axois (vue-resource) + less-loader+ ... vue的操作的方法案例: 1.数组数据还未获取到,做出预 ...