六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 107|回复: 0

简单的空中翻书的实现

[复制链接]

升级  10.67%

16

主题

16

主题

16

主题

秀才

Rank: 2

积分
66
 楼主| 发表于 2013-1-19 04:10:47 | 显示全部楼层 |阅读模式
 
简单的空中翻书的实现
 
所需硬件
USB接口arduino板一个 约100多块钱


用arduino电路板的目的是能够把各种传感器和电脑相连接,很简单
数字避障传感器2个 每个25元


这个传感器相当于红外开关,当传感器前方有物体障碍时,读取这个传感器的两种开关状态
 
翻书感应原理
当手臂在每个传感器上方划过时,记录该传感器的时间,比较这两个时间值,如果这个值的绝对值介于设定的阈值内(防止划过的时间过快或者过慢)则表示一个划过的动作,当这个差值大于0时 表示一个方向,如果这个差值小于0,则表示是相反的方向。
 
产生感应动作后,arduino向主机发送一个串口命令,电脑程序读取到命令,根据命令的方向向软件发送前翻页或者后翻页的控制命令。
 
传感器连接方法:
红线接板子上的5v端口
绿线接公共地端口
第一个传感器黄线接数字端口30
第二个传感器黄线接数字端口35
(可根据需要自定义)
arduino程序:
 
const int button1Pin = 30;const int button2Pin = 35;const int ledPin =  13;int button1State = 0;int button2State = 0;int A = 0;int B = 0;int C = 0;void setup() {  Serial.begin(9600);  pinMode(ledPin, OUTPUT);        pinMode(button1Pin, INPUT);       pinMode(button2Pin, INPUT);     }void loop(){  button1State = digitalRead(button1Pin);  if (button1State == HIGH) {         digitalWrite(ledPin, LOW);  }   else {    digitalWrite(ledPin, HIGH);     A = millis();  }    button2State = digitalRead(button2Pin);  if (button2State == HIGH) {         digitalWrite(ledPin, LOW);  }   else {    digitalWrite(ledPin, HIGH);     B = millis();  }    C = abs(A - B);  if(C>10 && C<1000){    if(A>B)      Serial.print("1");    else      Serial.print("2");    A = 0;    B = 0;    delay(500);  }  }  
 
 
附一个开源的flash电子书
http://www.megazine3.de/
 
 
 
实现之后又想到一种更简便省钱的方法是用过摄像头 通过感应画面的向左或向右的变化量
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表