找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6118|回复: 0
收起左侧

用Arduino在“视觉辅助”中的运用

[复制链接]
ID:75263 发表于 2015-4-19 23:08 | 显示全部楼层 |阅读模式
       超声波距离传感器的功耗小、成本低,并且在距离检测上拥有不俗的性能,而与此同时有许多人萌生尝试用超声波传感器为有视觉障碍的人设计开发辅助视觉设备的念头。

       近年来,随着开源硬件大热,市场上出现了越来越多性能强大并且成本低廉的开发板。而有许多设计就选择了用Ariduino来开发“导盲”装置。下面这个实用的装置,由电子制作收集整理:
      “导盲”帽子",这顶帽子出自station420之手,采用了Arduino Uno、超声波传感器以及蜂鸣器等元件。其中通过传感器可检测到前方是否有障碍物,并通过蜂鸣器发出不同频率的声音来反馈与障碍物之间的距离,提醒佩戴者前方是否有危险。

        整个装置的结构非常简单,将超声波传感器嵌于鸭嘴帽的帽檐,装有Arduino、蜂鸣器和电池等主体电子设备的“黑盒”挂于帽子的后面。而使用时,佩戴者只需要“戴上”帽子,并不需要任何其它的繁琐步骤。当然,在帽子上加装这些装置仍然有许多不尽人意的地方。
  

Arduino主板

       为这个运用,我在网上找到了一个 Arduino超声波测距程序,大家可以去实践。程序如下:

arduio 超声波测距模块
------------------------------------------
5v ----- Vcc
GND ----- GND
pin 7 ----- Echo
pin 8 ----- Trig

程序如下:


const int PIN_ECHO = 7;
const int PIN_TRIG = 8;
const int PIN_LED = 13;

void setup()
{
Serial.begin(9600);
pinMode(PIN_LED, OUTPUT);

pinMode(PIN_ECHO, INPUT);
pinMode(PIN_TRIG, OUTPUT);
}


// led blink
void blink(const int interval = 300)
{
digitalWrite(PIN_LED, HIGH);
delay(interval);
digitalWrite(PIN_LED, LOW);
delay(interval);
}

// distance detect
int distanceDetect()
{
digitalWrite(PIN_TRIG, LOW); // 保持超声波控制接口低电平2us
delayMicroseconds(2);

digitalWrite(PIN_TRIG, HIGH); // 保持超声波控制接口高电平10us
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);    // 超声波控制接口转低电平以触发测距过程

// 距离测试公式为 脉冲长度 * 音速 / 2;
const int SONIC_SPEED = 340; // 音速在大气中传播速度为340米/秒
int duration = pulseIn(PIN_ECHO, HIGH); // 读出脉冲时间
return duration * SONIC_SPEED / 2;
}

// loop control
void loop()
{
int val = Serial.read();
if (val == 'r')
{
// notify msg
blink();
Serial.println("cmd rcv, begin detect.");
// detect
int distance = distanceDetect();
if (0 >= distance)
{
Serial.println("detect fail.");
}
else
{
Serial.print("distance: ");
Serial.println(distance);
}
}

delay(500);
}









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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