1. 功能說(shuō)明
本文示例將實(shí)現(xiàn)R329樣機(jī)機(jī)器鳥(niǎo)扇動(dòng)翅膀的功能。
2. 結(jié)構(gòu)說(shuō)明
鳥(niǎo)類的翅膀主要由肩關(guān)節(jié)、肘關(guān)節(jié)、腕關(guān)節(jié)組成,本樣機(jī)利用組合機(jī)構(gòu)設(shè)計(jì)機(jī)器鳥(niǎo)的撲翼機(jī)構(gòu)。
擁有兩個(gè)關(guān)節(jié)的機(jī)器鳥(niǎo)撲翼機(jī)構(gòu)結(jié)構(gòu)圖單側(cè)翅膀雙翅尾部整機(jī)3. 電子硬件
在這個(gè)示例中,我們采用了以下硬件,請(qǐng)大家參考:
主控板 |
|
擴(kuò)展板 |
|
電池 |
7.4V鋰電池 |
電路連接:將舵機(jī)連接在Bigfish擴(kuò)展板的D3端口。
4. 功能實(shí)現(xiàn)
編程環(huán)境:Arduino 1.8.19
下面提供一個(gè)機(jī)器鳥(niǎo)扇動(dòng)翅膀的參考例程(Bird_Wing_Fly.ino),例程源代碼及樣機(jī)3D文件詳見(jiàn)【 https://www.robotway.com/h-col-231.html 】,實(shí)驗(yàn)效果可參考演示視頻。
/*------------------------------------------------------------------------------------
版權(quán)說(shuō)明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.
Distributed under MIT license.See file LICENSE for detail or copy at
https://opensource.org/licenses/MIT
by 機(jī)器譜 2023-05-24 https://www.robotway.com/
------------------------------*/
#include ?????Servo.h??????>
int _ABVAR_1_Subdivision_number = 0 ;
int _ABVAR_2_Flags = 0 ;
Servo servo_pin_3;
int _ABVAR_3_Servo3_Start = 0 ;
int _ABVAR_4_Servo3_End = 0 ;
int _ABVAR_5_Angle_Of_Each_Time = 0 ;
int _ABVAR_6_value1 = 0 ;
int _ABVAR_7_Angle_Of_Change = 0 ;
int _ABVAR_8_value2 = 0 ;
void Wing_Open();
void Wing_Close();
void setup()
{
servo_pin_3.attach(3);
_ABVAR_1_Subdivision_number = 14 ;
_ABVAR_2_Flags = 0 ;
servo_pin_3.write( 80 );
delay( 1000 );
}
void loop()
{
Wing_Close();
Wing_Open();
}
void Wing_Close()
{
_ABVAR_3_Servo3_Start = 10 ;
_ABVAR_4_Servo3_End = 80 ;
_ABVAR_5_Angle_Of_Each_Time = ( abs( ( _ABVAR_3_Servo3_Start - _ABVAR_4_Servo3_End ) ) / _ABVAR_1_Subdivision_number ) ;
if (( ( ( _ABVAR_3_Servo3_Start - _ABVAR_4_Servo3_End ) ) > ( 1 ) ))
{
_ABVAR_2_Flags = -1 ;
}
else
{
_ABVAR_2_Flags = 1 ;
}
for (_ABVAR_6_value1= 1; _ABVAR_6_value1<= ( ( _ABVAR_1_Subdivision_number + 1 ) ); _ABVAR_6_value1++ )
{
_ABVAR_7_Angle_Of_Change = ( _ABVAR_3_Servo3_Start + ( _ABVAR_5_Angle_Of_Each_Time * _ABVAR_2_Flags ) ) ;
servo_pin_3.write( _ABVAR_7_Angle_Of_Change );
_ABVAR_3_Servo3_Start = _ABVAR_7_Angle_Of_Change ;
delay( 28 );
}
}
void Wing_Open()
{
_ABVAR_3_Servo3_Start = 80 ;
_ABVAR_4_Servo3_End = 10 ;
_ABVAR_5_Angle_Of_Each_Time = ( abs( ( _ABVAR_3_Servo3_Start - _ABVAR_4_Servo3_End ) ) / _ABVAR_1_Subdivision_number ) ;
if (( ( ( _ABVAR_3_Servo3_Start - _ABVAR_4_Servo3_End ) ) > ( 1 ) ))
{
_ABVAR_2_Flags = -1 ;
}
else
{
_ABVAR_2_Flags = 1 ;
}
for (_ABVAR_8_value2= 1; _ABVAR_8_value2<= ( ( _ABVAR_1_Subdivision_number + 1 ) ); _ABVAR_8_value2++ )
{
_ABVAR_7_Angle_Of_Change = ( _ABVAR_3_Servo3_Start + ( _ABVAR_5_Angle_Of_Each_Time * _ABVAR_2_Flags ) ) ;
servo_pin_3.write( _ABVAR_7_Angle_Of_Change );
_ABVAR_3_Servo3_Start = _ABVAR_7_Angle_Of_Change ;
delay( 65 );
}
}
審核編輯 黃宇
-
Arduino
+關(guān)注
關(guān)注
187文章
6455瀏覽量
186363
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論