• lilypad arduino main +红外+风扇


    lilypad是为可穿戴技术和电子织物设计的微控制器板

    利用该开发板做了一个红外遥控控制的风扇

    函数,LilyPad Arduino上的14个数字I/O引脚可以用作输入或输出。它们在5V电压下工作。每个引脚最多可提供或接收40 mA电流,

    并具有20 kOhms的内部上拉电阻(默认情况下已断开)。此外,某些引脚还具有特殊功能:PWM:5、6、9、10、11通过analogWrite()函数

    提供8位PWM输出模拟输入:A0-A5。 LilyPad Simple Arduino具有6个模拟输入,标记为A0至A5,所有这些都还可用作数字I/O。

    每个模拟输入提供10位分辨率(即1024个不同值)。默认情况下,模拟输入的测量范围是从地面到5伏,

    使用之前需要先将红外遥控的码值读出来

    这里风扇驱动使用的L298N

      1 #include <IRremote.h>     // IRremote库声明  
      2   
      3 int RECV_PIN = 11;        //定义红外接收器的引脚为11  
      4 int IN1 = 1;   // IN1 connected to pin 1
      5 int IN2 = 2;   
      6 int ENA = 5;   //pwm
      7 int flag_se = 0;
      8 int flag_ts = 0;
      9 int value = 64;
     10 IRrecv irrecv(RECV_PIN);   
     11   
     12 decode_results results;   //解码结果放在 decode results结构的 result中
     13 
     14 void blink()
     15 {
     16   digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
     17   delay(200);                       // wait for a second
     18   digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
     19   delay(200);                       // wait for a second
     20 }
     21 void start_end()
     22 {
     23   if (flag_se == 0)
     24   {
     25     analogWrite(ENA, value);
     26     flag_se = 1;
     27   }
     28   else if(flag_se == 1)
     29   {
     30 
     31     analogWrite(ENA, 0);
     32     flag_se = 0;
     33   }
     34 }
     35 
     36 void tiaosu()
     37 {
     38   switch(flag_ts)
     39   {
     40     case 0:value= 64;analogWrite(ENA,value);flag_ts=1;break;
     41     case 1:value=128;analogWrite(ENA,value);flag_ts=2;break;
     42     case 2:value=192;analogWrite(ENA,value);flag_ts=3;break;
     43     case 3:value=255;analogWrite(ENA,value);flag_ts=0;break;
     44     default:break;
     45   }  
     46 }
     47 
     48 void fenglei()
     49 {
     50   int i;
     51   for(i=0;i++;i<16)
     52   { 
     53     value+=16;
     54     if(value > 255) 
     55       value=255;
     56     if(value < 0 )  
     57       value = 0;
     58     analogWrite(ENA,value);
     59   }
     60   
     61 }
     62 
     63 void do_test(int data)
     64 { 
     65   int temp = data;
     66   switch(temp)
     67   {
     68     case 2155864095: blink();Serial.print(1);tiaosu();break; //风速
     69     case 2155855935: blink();Serial.print(2);start_end();break; //开关
     70     case 2155857975: blink();Serial.print(3);break; //摇头
     71     case 2155860015: blink();Serial.print(4);break; //定时
     72     case 2155809525: blink();Serial.print(5);break; //静音
     73     case 2155868175: blink();Serial.print(6);fenglei();break; //风类
     74     case 16726215:   blink();Serial.print(2);start_end();break;   //ok
     75     case 16753245:   blink();Serial.print(1);tiaosu();break;      //1
     76     default: break;  
     77   }
     78 }
     79 
     80 void setup()  
     81   {  
     82       Serial.begin(57600);  
     83       irrecv.enableIRIn(); // 启动接收器  
     84       pinMode(IN1, OUTPUT);
     85       pinMode(IN2, OUTPUT);
     86       digitalWrite(IN1, HIGH);
     87       digitalWrite(IN2, LOW);
     88       pinMode(LED_BUILTIN, OUTPUT);
     89   }  
     90   
     91 void loop() {  
     92     if (irrecv.decode(&results))//解码成功,收到一组红外讯号   
     93     {  
     94       //Serial.println(results.value, HEX);//以16进制换行输出接收代码 
     95       Serial.println(results.value); //10进制输出
     96       do_test(results.value);
     97       irrecv.resume(); // 接收下一个值  
     98     }  
     99     delay(100);  
    100   } 
    807FE01F   风速   7
    807FC03F  开关
    807FC837  摇头
    807FD02F  定时
    807FF00F  风类
    807F0AF5 静音
    
    1    FFA25D    16753245
    2    FF629D    16736925
    3    FFE21D    16769565
    4    FF22DD    16720605
    5    FF02FD    16712445
    6    FFC23D    16761405
    7    FFE01F    16769055
    8    FFA857    16754775
    9    FF906F    16748655
    0    FF9867    16750695
    *    FF6897    16738455
    #    FFB04F    16756815
    上    FF18E7    16718055
    下    FF4AB5    16730805
    左    FF10EF    16716015
    右    FF5AA5    16734885
    ok    FF38C7    16726215
  • 相关阅读:
    mv命令(转)
    Linux获得命令帮助(学习笔记五)
    Shell解释器(学习笔记四)
    rmdir 命令(转)
    Java从零开始学十八(抽象类和接口)
    rm 命令(转)
    Centos6.6系统root用户密码恢复案例(转)
    Java从零开始学十七(简单工厂)
    Java从零开始学十六(多态)
    mkdir命令(转)
  • 原文地址:https://www.cnblogs.com/miaorn/p/13928934.html
Copyright © 2020-2023  润新知