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