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

1. 功能描述

莲花灯是一款基于莲花形象设计的机器人,本文示例将用两种模式来实现莲花灯的亮灭功能。

自主模式:用 光强传感器 控制莲花灯的灯叶开合。暗光情况下灯叶打开,灯亮;强光情况下灯叶闭合,灯灭。

遥控模式:采用 蓝牙串口模块控制灯叶开合。灯叶打开,灯亮;灯叶闭合,灯灭。

2. 结构说明

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

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

3. 电子硬件

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

电路连接:

① 灯带:连在Bigfish扩展板的D9、D10接口上

② 舵机:连在Bigfish扩展板的D4端口上

③ 蓝牙串口模块:安装在Bigfish扩展坞上

④ 光强传感器:连在Bigfish扩展板的A0端口上

4. 功能实现

4.1自主模式

编程环境:Arduino 1.8.19

下面提供一个实现暗光情况下灯叶打开,灯亮;强光情况下灯叶闭合,灯灭的参考程序(light.ino):

java 复制代码
/*------------------------------------------------------------------------------------

  版权说明: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-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);   //OPEN

        break;

        case '3':

          Serial.println("CLOSE");

          ServoGo(1550);   //CLOSE

        break;

        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: CLOSE

  if(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文件
资料下载链接:莲花灯-概述

相关推荐
fthux9 小时前
GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
人工智能·ai·开源·github·open source
修己xj10 小时前
让README “活”起来:Readme Typing SVG 介绍与本地化改造实践
开源
ApacheSeaTunnel13 小时前
为什么 Data Ingestion 还没有被 Fivetran/Airbyte 完全解决?
大数据·开源·数据集成·seatunnel·技术分享·数据同步·airbyte·fivetran
程序员吕洞宾14 小时前
开源多维表格SmartTable V1.6:自动化工作流,把重复操作交给系统即可
开源·自动化·github·多维表格·飞书多维表
GitCode官方14 小时前
基于《人工智能 智能体互联》国标的 AIP 开源项目在 AtomGit 正式开源
人工智能·开源·atomgit
小弥儿16 小时前
GitHub今日热榜 | 2026-07-09:OfficeCLI 以 92% 日增幅入围
学习·开源·github
柒星栈17 小时前
国产大模型“三国杀“:豆包收费、DeepSeek 开源、Kimi 2.5 万亿参数
人工智能·开源
文慧的科技江湖17 小时前
一文读懂光伏、储能,充电工作原理,是如何实现闭环的,其中微电网(ems)是什么;这个内容,就看懂了源网荷储。十五五规划里面最核心的能源管理内容
开源·springboot·储能·光伏
茯苓gao17 小时前
嵌入式开发笔记:工业机器人通信协议深度解析——从现场总线到工业以太网
笔记·嵌入式硬件·学习·机器人·信息与通信
鲁邦通物联网19 小时前
基于GPIO与高频滤波的状态机:非侵入式机器人梯控精准平层判定实现
机器人·巡检机器人·机器人梯控·agv梯控·非侵入式采集·机器人乘梯·机器人自主乘梯