goodzsq 发表于 2013-1-19 04:10:47

简单的空中翻书的实现

 
简单的空中翻书的实现
 
所需硬件
USB接口arduino板一个 约100多块钱

http://dl.iteye.com/upload/attachment/416547/3bc3877e-0216-32bb-8680-999507153231.jpg
用arduino电路板的目的是能够把各种传感器和电脑相连接,很简单
数字避障传感器2个 每个25元

http://dl.iteye.com/upload/attachment/416543/6d4d1311-7b0a-329a-8600-d206f4691824.jpg
这个传感器相当于红外开关,当传感器前方有物体障碍时,读取这个传感器的两种开关状态
 
翻书感应原理
当手臂在每个传感器上方划过时,记录该传感器的时间,比较这两个时间值,如果这个值的绝对值介于设定的阈值内(防止划过的时间过快或者过慢)则表示一个划过的动作,当这个差值大于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/
 
 
 
实现之后又想到一种更简便省钱的方法是用过摄像头 通过感应画面的向左或向右的变化量
页: [1]
查看完整版本: 简单的空中翻书的实现