arduino 控制舵机

关于 Arduino 

 

http://item.taobao.com/item.htm?id=6804680647

http://item.taobao.com/item.htm?id=4328931317

 

DFRobot 的板越来越糙了(比别家散货还是好些的),倒是不影响使用。如果很注重外观可以考虑iteadStudio的板 http://itead.taobao.com/,包装、做工好的一塌糊涂,还便宜。

 

电子商店:sparkfun, dfrobot, elecfreaks, iteadstudio

一个不错的视屏教程:http://v.youku.com/v_show/id_XMjYyMzY1MDU2.html

 

 

Knob舵机控制库

 

#include  
 
Servo servo1;
Servo servo2;

void setup() 
{
  Serial.begin(115200);
  Serial.println(":-]");
  
  servo1.attach(9);
  servo2.attach(8);
} 

void loop() 
{
  if (Serial.available()) {
    char val = Serial.read();
    if (val == '.') {
      Serial.println(' ');
      Serial.println("bye");
      Serial.end();
    }
    if (val == '>') {
      servo1.write(179);
      servo2.write(0);
    }
    if (val == '<') {
      servo1.write(0);
      servo2.write(179);
    }
  }  

  delay(100);
} 

 

用arduinoIDE自带的串口工具或者putty连接,输入<或者>,控制舵机正转、反转。

 

 

即使没有信号输出,舵机也在缓缓地转,是什么问题 囧。

 

感谢dfrobot店家热心的售后服务,问题解答如下:

 

  • 360度的舵机,信号为 频率50HZ,高电平1.5ms为停止,大于1.5ms正转,小于1.5反转所以要停下了,必须是标准的1.5ms
  • Arduino生产的信号不是很标准,所以会出现慢慢转我们都是用舵机控制器控制的

 

--- 分 - 割 - 线 --- 分 - 割 - 线 --- 分 - 割 - 线 ---

 

闪个灯,新买的板可以用它测个试。串口通信,接收一位数字(也就是说1-9,单位秒),以改变led闪烁时亮着的时间

 

int pin = 13;
int stay = 3000;

void setup() {                
  pinMode(pin, OUTPUT);     
  
  Serial.begin(9600);
  Serial.println(":-] hi");
  
  delay(300);
}

void loop() {
  if (Serial.available()) {
    char in = Serial.read();
    Serial.print(in);
    
    if (in > 48 && in <= 57) {
      Serial.print(" is in range (0, 9]");
      
      stay = (in - 48) * 1000;
      
      for (int i = 0; i < 3; i++) {
        digitalWrite(pin, HIGH);
        delay(100); 
        digitalWrite(pin, LOW);
        delay(100);
      }
    }
    
    Serial.println(".");
  }
  
  Serial.print("stay bright in ");
  Serial.print(stay);
  Serial.println(" ms");
  digitalWrite(pin, HIGH);
  delay(stay); 
  digitalWrite(pin, LOW);
  delay(1000);
}

 

 

你可能感兴趣的:(互动娱乐)