机器人制作开源方案 | 莲花灯

2023-11-22 08:36

本文主要是介绍机器人制作开源方案 | 莲花灯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 功能描述

       莲花灯是一款基于莲花形象设计的机器人,本文示例将用两种模式来实现莲花灯的亮灭功能。
       自主模式:用 光强传感器 控制莲花灯的灯叶开合。暗光情况下灯叶打开,灯亮;强光情况下灯叶闭合,灯灭。
       遥控模式:采用 蓝牙串口模块控制灯叶开合。灯叶打开,灯亮;灯叶闭合,灯灭。

0-机器人制作开源方案 | 莲花灯

2. 结构说明

       莲花灯采用“探索者”结构件搭建、辅以外观设计而成,由曲柄摇杆机构和平行四连杆机构构成一个二级升降机构,通过杠杆来控制莲花灯的开合。

       莲花灯的灯叶开合主要是由膨胀机构来控制的,膨胀轮是整个结构的核心部分,这种结构的优点是可实现收缩和膨胀,从而来控制灯叶的开合。

膨胀轮

3. 电子硬件

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

电路连接:

       ① 灯带:连在Bigfish扩展板的D9、D10接口上
       ② 舵机:连在Bigfish扩展板的D4端口上
       ③ 蓝牙串口模块:安装在Bigfish扩展坞上
       ④ 光强传感器:连在Bigfish扩展板的A0端口上

4. 功能实现

4.1自主模式
编程环境:Arduino 1.8.19
下面提供一个实现暗光情况下灯叶打开,灯亮;强光情况下灯叶闭合,灯灭的参考程序(light.ino):

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-10-25 https://www.robotway.com/------------------------------*//** Light测试例程* 2018/04/17* ————————————* 接线:*    灯带:9、10*    舵机:4*    蓝牙:Bigfish扩展坞*    光强:A0* ————————————* 功能:*    控制模式:蓝牙控制灯叶开合*    自主模式:光强传感器控制灯叶开合*   *    灯叶打开,灯亮;灯叶闭合,灯灭*/#include <ServoTimer2.h>#include "light.h"ServoTimer2 myServo;int servo_port = 4;       //定义舵机引脚int sensor_port = A0;     //定义光强传感器引脚int servo_value = 1550;   //定义舵机初始值 PWM/*int open_angle = 1150;    //灯叶打开时舵机的值int close_angle = 1550;   //灯叶闭合时舵机的值*/void setup() {Serial.begin(9600);PortInit();myServo.write(servo_value);delay(1000);}void loop() {/*Bluetooth Mode*/   if(SerialRead() == '1'){Serial.println("Bluetooth Mode");while(true){switch(SerialRead()){case '2':Serial.println("OPEN");ServoGo(1150);   //OPENbreak;case '3':Serial.println("CLOSE");ServoGo(1550);   //CLOSEbreak;default:break;}if(SerialRead() == '4') {Serial.println("Auto Mode");break;}}}/* Auto Mode*/AutoMode();  }/*端口初始化*/void PortInit(){pinMode(sensor_port, INPUT);pinMode(servo_port, OUTPUT);pinMode(9, OUTPUT);pinMode(10, OUTPUT);digitalWrite(9, LOW);digitalWrite(10, LOW);myServo.attach(servo_port);}/*串口控制*/char SerialRead(){char c;while(Serial.available()) {c = Serial.read();  }return c;}/*自主模式*/void AutoMode(){if(digitalRead(sensor_port)){   //亮光下,光强返回值1,灯叶闭合,灯光关闭ServoGo(1550);}if(!digitalRead(sensor_port)){   //黑暗中,光强返回0,灯叶打开,灯光开启ServoGo(1150);}}/*舵机控制*/void ServoGo(int where){   //舵机控制函数,参数:目标角度int delta = where - servo_value;    //delta < 0: OPEN ; delta > 0: CLOSEif(delta == 0) return;float light_value = delta < 0 ? 0 : 255;   int diff = delta < 0 ? -1 : 1;for(int i=0;i<abs(delta);i++){servo_value += diff;if(delta < 0){light_value += 0.65;   //0.65 (255 / delta);if(light_value > 255) light_value = 255;}else if(delta > 0){light_value -= 0.65;if(light_value < 0) light_value = 0;}LightState(&light_value);  myServo.write(servo_value);delay(10);  }}/*灯光控制*/void LightState(float * value){analogWrite(9, *value);analogWrite(10, 0);}

4.2遥控模式
APP设置:将文末资料中的“BLE_SPP_PRO.apk”安装到手机中。
① 搜索蓝牙

​② 连接蓝牙

③ 模式选择

④ 按键设置

​⑤ 各按键发送值

5. 资料清单

①程序源代码
②样机3D文件
资料下载链接:莲花灯-概述

这篇关于机器人制作开源方案 | 莲花灯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/408870

相关文章

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

使用Python制作一个PDF批量加密工具

《使用Python制作一个PDF批量加密工具》PDF批量加密‌是一种保护PDF文件安全性的方法,通过为多个PDF文件设置相同的密码,防止未经授权的用户访问这些文件,下面我们来看看如何使用Python制... 目录1.简介2.运行效果3.相关源码1.简介一个python写的PDF批量加密工具。PDF批量加密

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推