zoukankan      html  css  js  c++  java
  • Windows on Device 项目实践 3

    在前两篇《Windows on Device 项目实践 1 - PWM调光灯制作》和《Windows on Device 项目实践 2 - 感光灯制作》中,我们学习了如何利用Intel Galileo开发板和Windows on Device来设计并完成PWM调光灯和感光灯的制作。在这个项目中,我们会使用火焰传感器和蜂鸣器,完成一个简单的火焰报警器的制作。

    1.火焰传感器

    火焰传感器外形和LED很像,(即红外接收三极管)是机器人专门用来搜寻火源的传感器,本传感器对火焰特别灵敏。火焰传感器利用红外线对火焰非常敏感的特点,使用特制的红外线接收管来检测火焰,然后把火焰的亮度转化为高低变化的电平信号,输入到中央处理器,中央处理器根据信号的变化做出相应的程序处理。

    红外接收三极管的短引线端为负极,长引线端为正极。按照下图将负极接到5V接口中,然后将正极和10K电阻相连,电阻的另一端接到GND接口中,最后从火焰传感器的正极端所在列接入一根跳线,跳线的另一端接在模拟口中。如图1所示。

    clip_image002

    图1:火焰传感器的连接

    2. 元器件和硬件连接

    这次实践项目需要使用的元器件有:

    • 火焰传感器:1个
    • 蜂鸣器:1个
    • 10K电阻:1个
    • 面包板实验跳线:若干

    1)蜂鸣器的连接

    蜂鸣器有两个引脚,标记为“正”极性的引脚接Galileo的数字接口输出,“负”极性的引脚接Galileo的地。在程序控制上,Galileo数字接口输出高低电平就可以控制蜂鸣器的鸣响。

    2)火焰传感器的连接

    火焰传感器按照上图1所讲述的火焰传感器的接线方法,将火焰传感器接到Galileo的模拟5接口。完成整个实验的连线。

    3.实验原理

    在有火焰靠近和没有火焰靠近两种情况下,模拟口读到的电压值是有变化的。实际用万用表测量可知,在没有火焰靠近时,模拟口读到的电压值为0.3V左右;当有火焰靠近时,模拟口读到的电压值为1.0V左右,火焰靠近距离越近电压值越大。

    所以在程序一开始,我们可以先存储一个没有火焰时模拟口的电压值i。接着不断的循环读取模拟口电压值j、同存储的值做差值k=j-i、差值k与0.6V做比较。差值k如果大于0.6V,则判断有火焰靠近让蜂鸣器发出声音以作报警;如果差值小于0.6V,则蜂鸣器不响。

    4.源代码解析

    // Main.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include "arduino.h"

    int _tmain(int argc, _TCHAR* argv[])
    {
        return RunArduinoSketch();
    }

    int flame = 0;//定义火焰接口为模拟0 接口
    int Buzzer = 8;//定义蜂鸣器接口为数字8 接口
    int val = 0;//定义数字变量

    void setup()
    {
        pinMode(Buzzer, OUTPUT);//定义蜂鸣器为输出接口
        pinMode(flame, INPUT);//定义火焰传感器为输入接口   
    }
    void loop()
    {
        unsigned char i, j;//定义变量
        val = analogRead(flame);//读取火焰传感器的模拟值    
        Log(L"val: %d ", val);//输出模拟值,并将其打印出来
        if (val >= 600)//当模拟值大于600 时蜂鸣器鸣响
        {
            for (i = 0; i<80; i++)//发出一个频率的声音
            {
                digitalWrite(Buzzer, HIGH);//发声音
                delay(1);//延时1ms
                digitalWrite(Buzzer, LOW);//不发声音
                delay(1);//延时ms
            }
            for (i = 0; i<100; i++)//发出另一个频率的声音
            {
                digitalWrite(Buzzer, HIGH);//发声音
                delay(2);//延时2ms
                digitalWrite(Buzzer, LOW);//不发声音
                delay(2);//延时2ms
            }
        }
        else
        {
            digitalWrite(Buzzer, LOW);
        }
    }

    4. 调试结果

    启动Galileo,利用TelNet建立连接,然后点击调试。程序就会通过网口下载到Galileo上。当有火焰靠近火焰传感器时,蜂鸣器发出报警。当火焰熄灭时,蜂鸣器报警停止。

    IMG_0517

    调试的视频链接如下,大家可以看到火焰报警的效果:http://v.youku.com/v_show/id_XODU5MzMwNDc2.html

  • 相关阅读:
    Servlet 生命周期、工作原理(转)
    JVM的内存区域划分(转)
    Java的四个基本特性和对多态的理解
    单例模式和多例模式的区别(转)
    TCP/IP协议体系结构简介
    数据库优化性能
    存储过程的优缺点(转)
    ConurrentHashMap和Hashtable的区别
    XML和JSON优缺点
    HashMap和HashTable的区别
  • 原文地址:https://www.cnblogs.com/dearsj001/p/WindowsOnDevice_3.html
Copyright © 2011-2022 走看看