lilypad arduino main +红外+风扇

时间:2024-03-17 17:59:47

 

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