11.28

作者: 李响lx | 来源:发表于2017-11-28 21:22 被阅读0次

    今天下午老师讲了红外遥控器。用延时取值的方式,把信号解码成数字。

    红外传送:

    1.平时常1,当有信号时先有9000us的下拉,再有4500us的上拉作为(引导头)握手。

    2.一个位用一个周期脉冲表示。

               0:     先下拉560us,再上拉560us;         实际测量有几次微妙的误差

               1:     先下拉560us,再上拉1680us;        实际测量有几次微妙的误差

    3.按键:一个按键4个字节,1.用户码    2.用户反码   3.键值码   4.键值反码

    void setup() {

    pinMode(3,INPUT_PULLUP);

    Serial.begin(9600);

    }

    char bit_val(void)

    {

    int i;

    delayMicroseconds(570);

    while(digitalRead(3) != 1);

    delayMicroseconds(500);

    for(i=0;i<10;i++)

    {

    delayMicroseconds(10);

    if(digitalRead(3) == 0)

    return 0;

    }

    delayMicroseconds(1040);

    return 1;

    }

    char byte_val(void)

    {

    int i;

    char data = 0x00;

    for(i=0;i<8;i++)

    {

    data |=(bit_val()<<i);

    }

    return data;

    }

    void loop() {

    int mydata[4]={0,0,0,0};

    int i;

    if(digitalRead(3) == 0)

    {for(i=1;i<=8&&(digitalRead(3) == 0);i++)

    {delayMicroseconds(1000);

    if(i==8)

    {delayMicroseconds(5500);

    for(i=0;i<4;i++)

    {

    mydata[i] =  byte_val();

    }

    Serial.print("DATA:");

    Serial.print(mydata[0],HEX);

    Serial.print(" ");

    Serial.print(mydata[1],HEX);

    Serial.print(" ");

    Serial.print(mydata[2],HEX);

    Serial.print(" ");

    Serial.println(mydata[3],HEX);

    delay(100);

    }

    }}

    }

    相关文章

      网友评论

          本文标题:11.28

          本文链接:https://www.haomeiwen.com/subject/uhfybxtx.html