1. 运动功能说明
本文示例将实现R330样机机器鱼胸鳍能够灵活的上下摆动的功能。
2. 结构说明
本样机采用舵机模块来进行仿生机器鱼结构的设计。
3. 电子硬件
在这个示例中,我们采用了以下硬件,请大家参考:
主控板 | Basra主控板(兼容Arduino Uno) |
扩展板 | Bigfish2.1扩展板 |
电池 | 7.4V锂电池 |
电路连接:将舵机连接在Bigfish扩展板的D4端口。
4. 运动功能实现
编程环境:Arduino 1.8.19
下面提供一个机器鱼胸鳍上下摆动的参考例程(fishQi.ino),实验效果可参考官网演示视频。
/*------------------------------------------------------------------------------------
版权说明: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 机器谱 2023-05-23 https://www.robotway.com/
------------------------------*/
#include <Servo.h>
int _ABVAR_1_angle_current2 = 0 ;
int _ABVAR_2_num = 0 ;
Servo servo_pin_4;
int _ABVAR_3_angle_current1 = 0 ;
void up_down();
void down_up();
void setup()
{
servo_pin_4.attach(4);
}
void loop()
{
down_up();
up_down();
}
void down_up()
{
_ABVAR_1_angle_current2 = 30 ;
for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 16 ); _ABVAR_2_num++ )
{
_ABVAR_1_angle_current2 = ( _ABVAR_1_angle_current2 + 5 ) ;
servo_pin_4.write( _ABVAR_1_angle_current2 );
delay( 50 );
}
}
void up_down()
{
_ABVAR_3_angle_current1 = 110 ;
for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 16 ); _ABVAR_2_num++ )
{
_ABVAR_3_angle_current1 = ( _ABVAR_3_angle_current1 - 5 ) ;
servo_pin_4.write( _ABVAR_3_angle_current1 );
delay( 50 );
}
}
下面再给大家提供一个机器鱼鱼尾摆动的参考例程(fishTail.ino),大家可以尝试改写一下舵机摆动角度参数,让机器鱼尾能够灵活的摆动。
/*------------------------------------------------------------------------------------
版权说明: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 机器谱 2023-05-23 https://www.robotway.com/
------------------------------*/
#include <Servo.h>
int _ABVAR_1_angle_right = 0 ;
int _ABVAR_2_num = 0 ;
Servo servo_pin_4;
int _ABVAR_3_angle_left = 0 ;
void Right_Left();
void left_Right();
void setup()
{
servo_pin_4.attach(4);
}
void loop()
{
left_Right();
Right_Left();
}
void Right_Left()
{
_ABVAR_1_angle_right = 70 ;
for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 8 ); _ABVAR_2_num++ )
{
_ABVAR_1_angle_right = ( _ABVAR_1_angle_right + 5 ) ;
servo_pin_4.write( _ABVAR_1_angle_right );
delay( 100 );
}
}
void left_Right()
{
_ABVAR_3_angle_left = 110 ;
for (_ABVAR_2_num= 1; _ABVAR_2_num<= ( 8 ); _ABVAR_2_num++ )
{
_ABVAR_3_angle_left = ( _ABVAR_3_angle_left - 5 ) ;
servo_pin_4.write( _ABVAR_3_angle_left );
delay( 100 );
}
}
程序源代码及样机3D文件资料内容详见 机器鱼-概述