int stat= HIGH;unsigned
long startTime;
void setup() { Serial.begin(
9600); pinMode(
10, INPUT); startTime = millis();}
void loop() { unsigned
long curTime;
int value = digitalRead(
10);
if(
value != stat){ curTime = millis(); stat =
value;
if(stat == HIGH){ Serial.print(
"0\t"); Serial.println(curTime-startTime); startTime = curTime; }
else{ Serial.print(
"1\t"); Serial.println(curTime-startTime); startTime = curTime; } }}
一切就绪,先在电脑上监听串口 然后手机重新打开app,点击绑定,输入wifi密码 11111111 然后下一步直到提示放上来点。这个时候把光敏电阻模块的感光头对准屏幕中心区域,开始入网后马上屏幕上就开始刷数据了。将所有输出保存到data.txt,然后我们拉一段出来分析。
很明显的两种长度 一种是50毫秒左右 一种是200毫秒左右。而且有个很奇怪的现象,200毫秒左右的数据只会出现在1的时候 而0全部都是50毫秒左右。如果按照我们上面的假设 两种颜色分别代表1和0, 那么所有0都是50毫秒这也太不正常了。
而且1只有50或者200毫秒两种情况也不对劲。
直接看数据有点不够直观,想办法转换成图形:

phpgd库直接画的 凑合看吧 图中横坐标是时间 纵坐标是数据(0|1)。我们原先的推测是这样的:

显然有问题, 再看上面的图片想到另一种推测:会不会1的宽度才是实际数据,而0只是做为一个间隔。