极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15414|回复: 5

遥控舵机

[复制链接]
发表于 2013-7-25 16:11:27 | 显示全部楼层 |阅读模式
做了一个简单的,遥控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]
回复

使用道具 举报

 楼主| 发表于 2013-7-25 16:15:03 | 显示全部楼层
补充一下图片
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-25 16:15:57 | 显示全部楼层
???出问题了图片
回复 支持 反对

使用道具 举报

发表于 2013-8-5 23:57:44 | 显示全部楼层
图片???
回复 支持 反对

使用道具 举报

发表于 2013-8-24 14:03:07 | 显示全部楼层
为啥无法执行?
回复 支持 反对

使用道具 举报

发表于 2013-10-6 13:37:50 | 显示全部楼层
强顶,那是必须的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-11 03:53 , Processed in 0.042352 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表