Whainte 发表于 2013-7-25 16:11:27

遥控舵机

做了一个简单的,遥控180度舵机
数字键记录数字
EQ键将记录的数字设为舵机的角度
U/SD将当前角度输出到Serial Monitor
|<<    ,-         角度减1
>>|   ,+         角度加1
,__
__)   键以90度为对称轴转对称角
(__,

|
(^) 归零

#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();
}
}

Whainte 发表于 2013-7-25 16:15:03

补充一下图片
http://cloud.mail.163.com/dfs/service/DSC00725.jpg?op=downloadFile&[email protected]&file=eyJzIjoiZnM6Y2xvdWRzdG9yYWdlLm1haWwuMTYzOjQ4NDIyNjE0Njk4NyIsInNmIjoiNDg1Mzg2NzUwMTE1OjQ4NDIyNjE0Njk4NyIsImkiOjEzNTg5OTYzNzU5NjIzMTgsImNzIjp7InQiOjEsInYiOiI2ZjFjZDcxMTYwODNjMzc2NDFiOTJiMDAzNTcyMDZhNCJ9LCJzeiI6MzgwNjk5NCwiY3QiOjEzNzQ3NDAwNTE4MDd9&callback=http://nf.mail.163.com:80/netfolder/html/downloadCallback.html

Whainte 发表于 2013-7-25 16:15:57

???出问题了图片

chqiyi 发表于 2013-8-5 23:57:44

图片???:funk::funk:

小小弧 发表于 2013-8-24 14:03:07

为啥无法执行?

jikegongfang007 发表于 2013-10-6 13:37:50

强顶,那是必须的
页: [1]
查看完整版本: 遥控舵机