程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Windows on Device 項目實踐 3,ondevice

Windows on Device 項目實踐 3,ondevice

編輯:C++入門知識

Windows on Device 項目實踐 3,ondevice


在前兩篇《Windows on Device 項目實踐 1 - PWM調光燈制作》和《Windows on Device 項目實踐 2 - 感光燈制作》中,我們學習了如何利用Intel Galileo開發板和Windows on Device來設計並完成PWM調光燈和感光燈的制作。在這個項目中,我們會使用火焰傳感器和蜂鳴器,完成一個簡單的火焰報警器的制作。

1.火焰傳感器

火焰傳感器外形和LED很像,(即紅外接收三極管)是機器人專門用來搜尋火源的傳感器,本傳感器對火焰特別靈敏。火焰傳感器利用紅外線對火焰非常敏感的特點,使用特制的紅外線接收管來檢測火焰,然後把火焰的亮度轉化為高低變化的電平信號,輸入到中央處理器,中央處理器根據信號的變化做出相應的程序處理。

紅外接收三極管的短引線端為負極,長引線端為正極。按照下圖將負極接到5V接口中,然後將正極和10K電阻相連,電阻的另一端接到GND接口中,最後從火焰傳感器的正極端所在列接入一根跳線,跳線的另一端接在模擬口中。如圖1所示。

圖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\r\n", 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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved