999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Arduino編程

2019-09-10 07:22:44
電腦報 2019年6期
關鍵詞:信號

一、什么是紅外接收頭?

紅外遙控器發出的信號是一連串的二進制脈沖碼。為了使其在無線傳輸過程中免受其他紅外信號的干擾,通常都是先將其調制在特定的載波頻率上,然后再經紅外發射二極管發射出去,而紅外線接收裝置則要濾除其他雜波,叧接收該特定頻率的信號并將其還原成二進制脈沖碼,也就是解調。

二、工作原理

內置接收管將紅外發射管發射出來癿光信號轉換為微弱的電信號,此信號經由IC內部放大器進行放大,然后通過自動增益控制、帶通濾波、解調變、波形整形后還原為遙控器發射出的原始編碼,經由接收頭的信號輸出腳輸入到電器上的編碼識別電路。

三、紅外接收頭的引腳與連線

紅外接收頭有三個引腳,用的時候將VOUT接到模擬口,GND接到實驗板上的GND,VCC接到實驗板上的+5V。

四、紅外遙控實驗

1.實驗器件

紅外遙控器:1個

紅外接收頭:1個

LED燈:6個

220Ω電阻:6個

多彩面包線:若干

2.實驗連線

首先將板子連接好;接著將紅外接收頭按照上述方法接好,將VOUT接到數字11口引腳,將LED燈通過電阻接到數字引腳2,3,4,5,6,7。這樣就完成了電路部分的連接。

3.實驗原理

要想對某一遙控器進行解碼必須要了解該遙控器的編碼方式。本產品使用的遙控器的編碼方式為:NEC協議。下面就介紹一下NEC協議:

·NEC協議、特點:

(1)8位地址位,8位命令位

(2)為了可靠性地址位和命令位被傳輸兩次

(3)脈沖位置調制

(4)載波頻率38kHz

(5)每一位的時間為1.125ms或2.25ms

·邏輯 0和1的定義,按鍵按下立刻松開的發射脈沖:

顯示了NEC協議典型的脈沖序列。注意:這首先發送LSB(最低位)的協議。在上面的脈沖傳輸的地址為0x59,命令為0x16。一個消息是由一個9ms的高電平開始,隨后有一個4.5ms的低電平(返兩段電平組成引尋碼),然后有地址碼和命令碼。地址和命令傳輸兩次。第二次所有位都取反,可用于對所收到的消息確認使用??倐鬏敃r間是恒定的,因為每一點與它取反長度重復。如果你不感興趣,你可以忽略這個可靠性取反,也可以擴大地址和命令,以每16位按鍵按下一段時間才發射脈沖:

一個命令發送一次,即使在遙控器上的按鍵仍然按下。當按鍵一直按下時,第一個110ms的脈沖與一樣,之后每110ms重復代碼傳輸一次。這個重復代碼是由一個9ms的高電平脈沖和一個2.25ms低電平及560μs的高電平組成。

注意:脈沖波形進入一體化接收頭以后,因為一體化接收頭里要進行解碼、信號放大和整形,故要注意:在沒有紅外信號時,其輸出端為高電平,有信號時為低電平,故其輸出信號電平正好和發射端相反。接收端脈沖大家可以通過示波器看到,結合看到的波形理解程序。

程序代碼

#include <IRremote.h>

int RECV_PIN = 11;

int LED1 = 2;

int LED2 = 3;

int LED3 = 4;

int LED4 = 5;

int LED5 = 6;

int LED6 = 7;

long on1? = 0x00FFA25D;

long off1 = 0x00FFE01F;

long on2 = 0x00FF629D;

long off2 = 0x00FFA857;

long on3 = 0x00FFE21D;

long off3 = 0x00FF906F;

long on4 = 0x00FF22DD;

long off4 = 0x00FF6897;

long on5 = 0x00FF02FD;

long off5 = 0x00FF9867;

long on6 = 0x00FFC23D;

long off6 = 0x00FFB047;

IRrecv irrecv(RECV_PIN);

decode_results results;

// Dumps out the decode_results structure.

// Call this after IRrecv::decode()

// void * to work around compiler issue

//void dump(void *v) {

//? decode_results *results = (decode_results *)v

void dump(decode_results *results) {

int count = results->rawlen;

if (results->decode_type == UNKNOWN)

{

Serial.println(“Could not decode message”);

}

else

{

if (results->decode_type == NEC)

{

Serial.print("Decoded NEC:");

}

else if (results->decode_type == SONY)

{

Serial.print("Decoded SONY:");

}

else if (results->decode_type == RC5)

{

Serial.print("Decoded RC5:");

}

else if (results->decode_type == RC6)

{

Serial.print("Decoded RC6:");

}

Serial.print(results->value, HEX);

Serial.print(" (");

Serial.print(results->bits, DEC);

Serial.println("bits)");

}

Serial.print("Raw (");

Serial.print(count, DEC);

Serial.print("):");

for (int i = 0; i < count; i++)

{

if ((i % 2) == 1) {

Serial.print(results->rawbuf[i]*USECPERTICK, DEC);

}

else

{

Serial.print(-(int)results->rawbuf[i]*USECPERTICK, DEC);

}

Serial.print(" ");

}

Serial.println(" ");

}

void setup()

{

pinMode(RECV_PIN, INPUT);

pinMode(LED1, OUTPUT);

pinMode(LED2, OUTPUT);

pinMode(LED3, OUTPUT);

pinMode(LED4, OUTPUT);

pinMode(LED5, OUTPUT);

pinMode(LED6, OUTPUT);

pinMode(13, OUTPUT);

Serial.begin(9600);

irrecv.enableIRIn(); // Start the receiver

}

int on = 0;

unsigned long last = millis();

void loop()

{

if (irrecv.decode(&results))

{

// If it's been at least 1/4 second since the last

// IR received, toggle the relay

if (millis() - last > 250)

{

on = !on;

//? ? ? ?digitalWrite(8, on? HIGH : LOW);

digitalWrite(13, on? HIGH : LOW);

dump(&results);

}

if (results.value == on1 )

digitalWrite(LED1, HIGH);

if (results.value == off1 )

digitalWrite(LED1, LOW);

if (results.value == on2 )

digitalWrite(LED2, HIGH);

if (results.value == off2 )

digitalWrite(LED2, LOW);

if (results.value == on3 )

digitalWrite(LED3, HIGH);

if (results.value == off3 )

digitalWrite(LED3, LOW);

if (results.value == on4 )

digitalWrite(LED4, HIGH);

if (results.value == off4 )

digitalWrite(LED4, LOW);

if (results.value == on5 )

digitalWrite(LED5, HIGH);

if (results.value == off5 )

digitalWrite(LED5, LOW);

if (results.value == on6 )

digitalWrite(LED6, HIGH);

if (results.value == off6 )

digitalWrite(LED6, LOW);

last = millis();

irrecv.resume(); // Receive the next value

}

}

五、程序功能

對遙控器發射出來的編碼脈沖進行解碼,根據解碼結果執行相應的動作。這樣大家就可以用遙控器遙控你的器件了,讓它聽你的指揮。

注意:把 IRremote 文件夾放到 編譯器安裝目錄下的\Arduino\libraries里,不然編譯不過。例如我的:C:\Program Files\Arduino\libraries。

猜你喜歡
信號
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
7個信號,警惕寶寶要感冒
媽媽寶寶(2019年10期)2019-10-26 02:45:34
孩子停止長個的信號
《鐵道通信信號》訂閱單
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
基于Arduino的聯鎖信號控制接口研究
《鐵道通信信號》訂閱單
基于LabVIEW的力加載信號采集與PID控制
Kisspeptin/GPR54信號通路促使性早熟形成的作用觀察
主站蜘蛛池模板: 大学生久久香蕉国产线观看| 国产精品第一区| 亚洲九九视频| 国产主播喷水| 亚洲精品动漫在线观看| 欧美在线观看不卡| 日韩不卡高清视频| 日韩人妻少妇一区二区| 97色婷婷成人综合在线观看| 欧美另类图片视频无弹跳第一页| 亚洲第一成年免费网站| 91福利片| 色网在线视频| 色婷婷亚洲十月十月色天| 色偷偷av男人的天堂不卡| www.国产福利| 干中文字幕| 午夜a视频| 国产自视频| 男人天堂亚洲天堂| 永久免费av网站可以直接看的| 亚洲伊人久久精品影院| 91啦中文字幕| аv天堂最新中文在线| 国产成人综合日韩精品无码首页| 国产福利2021最新在线观看| 久久中文字幕2021精品| 国产麻豆福利av在线播放| 2020极品精品国产| 日韩毛片免费视频| 日韩少妇激情一区二区| 视频一区视频二区日韩专区| 青青操视频在线| jizz在线观看| 91无码国产视频| 婷婷久久综合九色综合88| 777国产精品永久免费观看| 狠狠亚洲婷婷综合色香| 国产精品福利社| 国产又爽又黄无遮挡免费观看| 亚洲综合网在线观看| 国产成人a毛片在线| 伦精品一区二区三区视频| 乱码国产乱码精品精在线播放| 亚洲国产天堂在线观看| 91青青草视频在线观看的| 天堂av高清一区二区三区| 亚洲第一区欧美国产综合 | 免费无码又爽又黄又刺激网站| 99热这里都是国产精品| 国产成人精品综合| 国产亚洲精久久久久久无码AV| 伊人成人在线视频| 精品视频一区二区观看| 国产精品成人啪精品视频| 午夜激情福利视频| 99成人在线观看| 国产区在线观看视频| 人妻少妇久久久久久97人妻| 成人无码区免费视频网站蜜臀 | 在线免费看黄的网站| 亚洲无码高清免费视频亚洲| 日韩欧美91| 久久久久免费看成人影片| 毛片基地视频| 日韩欧美中文在线| 欧美午夜在线视频| 亚洲综合极品香蕉久久网| 国产最新无码专区在线| 色哟哟国产精品一区二区| 国产成人AV综合久久| 97久久精品人人做人人爽| 欧美激情视频二区| 亚洲欧洲美色一区二区三区| 日韩欧美国产另类| 欧美v在线| 国产成人欧美| 看av免费毛片手机播放| 91久久偷偷做嫩草影院精品| 伊在人亚洲香蕉精品播放| 亚洲男人天堂2020| 精品国产美女福到在线不卡f|