首页 > 其他分享 >机器鸟实现扇动翅膀功能

机器鸟实现扇动翅膀功能

时间:2023-06-16 10:11:55浏览次数:33  
标签:功能 机器 int ABVAR 扇动翅膀 Flags Servo3 Wing

1. 功能说明

    本文示例将实现R329样机机器鸟扇动翅膀的功能。

2. 结构说明

    鸟类的翅膀主要由肩关节、肘关节、腕关节组成,本样机利用组合机构设计机器鸟的扑翼机构。

拥有两个关节的机器鸟扑翼机构结构图

单侧翅膀

双翅

尾部

整机

3. 电子硬件

    在这个示例中,我们采用了以下硬件,请大家参考:

    电路连接:将舵机连接在Bigfish扩展板的D3端口。

4. 功能实现

    编程环境:Arduino 1.8.19

    下面提供一个机器鸟扇动翅膀的参考例程(Bird_Wing_Fly.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-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 );

  }

}

5. 资料下载

资料内容:
①扇动翅膀-程序源代码
②扇动翅膀-样机3D文件
资料下载地址:机器鸟-扇动翅膀

想了解更多机器人开源项目资料请关注 机器谱网站

标签:功能,机器,int,ABVAR,扇动翅膀,Flags,Servo3,Wing
From: https://www.cnblogs.com/robotway/p/17468963.html

相关文章

  • 时间序列异常检测:统计和机器学习方法介绍
    理解时间序列数据在深入研究异常检测技术之前,先简单介绍时间序列数据的特征。时间序列数据通常具有以下属性:趋势:数据值随时间的长期增加或减少。季节性:以固定间隔重复的模式或循环。自相关:当前观测值与先前观测值之间的相关性。噪声:数据中的随机波动或不规则。让我们......
  • 网游服务器应分离实时功能
    网游服务器应分离实时功能(金庆的专栏)网游服务器功能可分成实时性功能和非实时性功能,分在不同的物理机。实时性功能如移动,战斗,要求立即处理,时延为100ms之内,所以机器不能满载运行,数据尽量在本地。可考虑采用UDP减少时延。非实时性功能如打造,交友,时延允......
  • 机器翻译中的文本分类与命名实体识别
    目录《机器翻译中的文本分类与命名实体识别》摘要:机器翻译是当前人工智能技术领域的一个重要应用方向,而文本分类与命名实体识别是机器翻译中的核心任务之一。本文将介绍机器翻译中的文本分类与命名实体识别技术原理和实现步骤,并通过应用示例和代码实现讲解,深入探讨了优化和改进......
  • 基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART
    基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART一、将GPIO功能配置为I2C1、本例以I2C4为例,若要配置GPIO为复用功能。需要查看数据手册了解其复用关系,如下图所示。不难看出,GPIO4_B2可复用为I2C4的SDA脚,GPIO_B3可复用为I2C4的SCL脚。2、进入/opt/tq356x-linux/kernel/arch/ar......
  • 基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART
    一、将GPIO功能配置为I2C  1、本例以I2C4为例,若要配置GPIO为复用功能。需要查看数据手册了解其复用关系,如下图所示。  不难看出,GPIO4_B2可复用为I2C4的SDA脚,GPIO_B3可复用为I2C4的SCL脚。2、进入/opt/tq356x-linux/kernel/arch/arm64/boot/dts/rockchip目录,打开rk3568-tqcoreA......
  • 基于TQ3568开发板分享如何配置GPIO功能为I2C_SPI_UART
    一、将GPIO功能配置为I2C  1、本例以I2C4为例,若要配置GPIO为复用功能。需要查看数据手册了解其复用关系,如下图所示。  不难看出,GPIO4_B2可复用为I2C4的SDA脚,GPIO_B3可复用为I2C4的SCL脚。2、进入/opt/tq356x-linux/kernel/arch/arm64/boot/dts/rockchip目录,打开rk3568-tqcoreA......
  • 使用 Spring 2.5 注释驱动的 IoC 功能
    http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/概述注释配置相对于XML配置具有很多的优势:它可以充分利用Java的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用JPA注释配置ORM映射时,我们就不需要指定PO的属性名、类型等信息,如果关系表字......
  • 托盘功能实现三步曲
    1.隐藏窗体BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){        if(!CFrameWnd::PreCreateWindow(cs))                 returnFALSE;        cs.style=WS_POPUP;//使主窗口不可见        cs.dwExStyle=WS_E......
  • Vue简单的分页功能实现一
    Vue简单的分页功能实现一前端的分页功能其实是对数据的分页处理,主要是在js中实现对数据的分页处理,这里分享两种简单的写法,以供参考。两种方法都是用vue来实现的。首先,相关的参数都一样,在vue里的data中定义好,如下所示:varvm=newVue({el:'#app',data:{list......
  • vue简单的分页功能实现二
    vue简单的分页功能实现二第二种使用vue实现分页功能的方法。首先,data数据定义:varvm=newVue({el:'#app',data:{listArray:[{'name':'赵*','age':'21','edu......