我用的是arduino uno,舵機是那個寶買的大功率舵機,范圍是0°~300°
程序如下:
int sp1=9;//定義舵機接口數字接口7
int pulsewidth;//定義脈寬變量
int val;
int val1;
int myangle1;
//下面是servopulse函數部分
void servopulse(int sp1,int val1)//定義一個脈沖函數
{
myangle1=map(val1,0,300,1000,2000);//將角度轉化為1000~2000的脈寬值
digitalWrite(sp1,HIGH);//將舵機接口電平至高
delayMicroseconds(myangle1);//延時脈寬值的微秒數
digitalWrite(sp1,LOW);//將舵機接口電平至低
delay(20-val1/1000);
}
//servopulse函數部分到此結束
void setup()
{
pinMode(sp1,OUTPUT);//設定舵機接口為輸出接口
//設置兩組串口波特率
Serial.begin(9600);
delay(500);
Serial.println("servu=o_seral_simple ready" ) ;
}
void loop()//將0到9的數轉化為0到300角度,并讓LED閃爍相應數的次數
{
val=Serial.read();//讀取串行端口的值
if(val>='0'&&val<='9')
{
val1=val-'0';//將特征量轉化為數值變量
val1=map(val1,0,9,0,300);//將角度轉化為1000~2000的脈寬值
Serial.print("moving servo to ");
Serial.print(val1,DEC);
Serial.println();
for(int i=0;i<=50;i++)//給予舵機足夠的時間讓它轉到指定角度
{
servopulse(sp1,val1);//引用脈沖函數
}
}
}
舵機供電用的是12v動力鋰電池
問題:能不能做成輸入多少角度比如80,而不是0到9數字
|