|
做了一个简单的,遥控180度舵机
数字键记录数字
EQ键将记录的数字设为舵机的角度
U/SD将当前角度输出到Serial Monitor
|<< ,- 角度减1
>>| ,+ 角度加1
,__
__) 键以90度为对称轴转对称角
(__,
|
(^) 归零
[pre lang="arduino" line="1" file="remoteServo.ino"]#include <IRremote.h>
#include <Servo.h>
int action;
const int irRcv=8;
int deg=0;
int t;
Servo servo;
IRrecv ir(irRcv);
decode_results results;
int deckey(unsigned long t)
{
switch(t){
case 0xFFA25D:
return 1;
break;
case 0xFF629D:
return 2;
break;
case 0xFFE21D:
return 3;
break;
case 0xFF22DD:
return 4;
break;
case 0xFF02FD:
return 5;
break;
case 0xFFC23D:
return 6;
break;
case 0xFFE01F:
return 7;
break;
case 0xFFA857:
return 5;
break;
case 0xFF906F:
return 9;
break;
case 0xFF6897:
return 10;
break;
case 0xFF9867:
return 11;
break;
case 0xFFB04F:
return 12;
break;
case 0xFF30CF:
return 13;
break;
case 0xFF18E7:
return 14;
break;
case 0xFF7A85:
return 15;
break;
case 0xFF10EF:
return 16;
break;
case 0xFF38C7:
return 17;
break;
case 0xFF5AA5:
return 18;
break;
case 0xFF42BD:
return 19;
break;
case 0xFF4AB5:
return 20;
break;
case 0xFF52AD:
return 21;
break;
default:
return 0;
break;
}
}
void setup()
{
Serial.begin(9600);
ir.enableIRIn();
servo.attach(9);
servo.write(0);
t=0;
}
void loop()
{
deg=servo.read();
if (ir.decode(&results))
{
action=deckey(results.value);
switch(action)
{
case 1:
servo.write(0);
break;
case 5:
if(deg>0)
{
servo.write(deg-1);
}
break;
case 6:
if(deg<180)
{
servo.write(deg+1);
}
break;
case 7:
servo.write((t-1)%180+1);
Serial.print("f");
Serial.print(t);
if(t>180)
{
Serial.print("->");
Serial.println((t-1)%180+1);
}else{
Serial.println("");
}
t=0;
break;
case 8:
if(deg>0)
{
servo.write(deg-1);
}
case 9:
if(deg<180)
{
servo.write(deg+1);
}
break;
case 11:
servo.write(180-deg);
break;
case 12:
Serial.println(deg);
break;
case 10:
t*=10;
break;
case 13:
t*=10;
t+=1;
break;
case 14:
t*=10;
t+=2;
break;
case 15:
t*=10;
t+=3;
break;
case 16:
t*=10;
t+=4;
break;
case 17:
t*=10;
t+=5;
break;
case 18:
t*=10;
t+=6;
break;
case 19:
t*=10;
t+=7;
break;
case 20:
t*=10;
t+=8;
break;
case 21:
t*=10;
t+=9;
break;
}
delay(10);
ir.resume();
}
}[/code] |
|