当前位置: 首页 > news >正文

电子计数跳绳原型

引子

这些日子和跳绳杠上了,前些日子的拆解,让我有一个大胆的想法,就是能不能用3D打印+写程序的方式实现一个计数功能的,当然看到有些结构这个现在实现起来有些难度,只能那原有的部件充数。目标只是说明一下原理,直接上面包板原型

正文

两个霍尔传感器(49e425)这个完全可以网上采购到,很便宜,引脚说明如下图:

本来想用esp32C3带屏幕的当主机,结果没有说明和实验的时候让我这刷坏了,直接用上我的Aridunio Nano (前几年的存货),接上线,让AI帮我写一版本程序,结果费了半天的经理来调试程序,最后还是万用表起到了作用。接线图如下:

其中红框框上的就是Nano + 霍尔传感器【2个】

Nano程序如下:

// 模拟引脚定义(两个传感器平分圆,相距180度)
const int hallA = A0;   // 霍尔传感器 A 接 A0
const int hallB = A1;   // 霍尔传感器 B 接 A1// 参数设置
const int threshold = 410;      // 磁场阈值(根据实际校准)
const int debounceDelay = 5;    // 去抖动时间(毫秒)// 变量声明
long totalRevolutions = 0;       // 总圈数(整数)
int lastTriggered = 0;           // 上次触发的传感器(0: 无,1: A,2: B)void setup() {pinMode(hallA, INPUT);pinMode(hallB, INPUT);Serial.begin(9600);Serial.println("双霍尔传感器测试 - 平分圆安装(不区分方向)");
}void loop() {static long lastRev = -1;if (totalRevolutions != lastRev) {Serial.print("当前总圈数:");Serial.print(totalRevolutions);Serial.println(" 圈");lastRev = totalRevolutions;}checkHall();  // 检测并更新状态delay(10);  // 控制刷新频率
}// 获取当前状态(转换为高低电平)
int getState(int pin) {int val = analogRead(pin);return (val < threshold) ? LOW : HIGH;
}// 检测并处理触发事件
void checkHall() {static unsigned long lastTime = 0;unsigned long now = millis();if (now - lastTime < debounceDelay) return;lastTime = now;int stateA = getState(hallA);int stateB = getState(hallB);// 判断是哪一个传感器被触发if (stateA == LOW && stateB == HIGH) {// A 被触发if (lastTriggered == 2) {// B → A = 完成一圈totalRevolutions++;}lastTriggered = 1;} else if (stateA == HIGH && stateB == LOW) {// B 被触发if (lastTriggered == 1) {// A → B = 半圈(暂不计数)}lastTriggered = 2;} else if (stateA == LOW && stateB == LOW) {// A 和 B 同时触发 -> 中间位置,忽略lastTriggered = 0;}
}

编译完成,上传一直停留在如下界面:

原因(应该选择Old Bootloader,因为我们的nano有些年头了):

当然轴承的支撑件是用Freecad设计打印的

感受

1、AI确实可以帮我们写第一个版本的程序,之后的改进还是要用人来修改和完善。

2、为什么一直停留在uploading,浪费一些时间,希望对后来人有帮助。

3、等研究完了esp32C3 led 版,用它做主机写一个程序,往后在直接打出一个真正的跳绳手柄,后续估计也的去研究一下PCB设计,这样就可以设计出自己的主机内核。

http://www.lqws.cn/news/570007.html

相关文章:

  • 数据结构 哈希表、栈的应用与链式队列 6.29 (尾)
  • Hive SQL 快速入门指南
  • GO 语言学习 之 数组和切片
  • Docker镜像制作案例
  • MATLAB中formattedDisplayText函数用法
  • 用户行为序列建模(篇八)-【阿里】DIEN
  • 由dbc文件解析can消息(一)
  • 信创背景下应用软件迁移解析:从政策解读到落地实践方案
  • 使用Xshell学习Linux的一些基本操作
  • JavaScript基础-常见网页特效案例
  • NumPy 统计函数与矩阵运算指南
  • 【大语言模型入门】—— 浅析LLM基座—Transformer原理
  • FPGA实现CameraLink视频解码,基于Xilinx ISERDES2原语,提供4套工程源码和技术支持
  • 【系统分析师】2021年真题:案例分析-答案及详解
  • SpringCloud系列(41)--SpringCloud Config分布式配置中心简介
  • 《从Backprop到Diffusion:深度学习的算法进化树全景图》
  • C++洛谷P1001 A+B Problem
  • 7类茶叶嫩芽图像分类数据集
  • 低延时高速数据链技术在无人平台(无人机无人船无人车)中的关键作用与应用
  • 2025年前端最新面试题及答案
  • S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
  • 【算法设计与分析】(三)二分搜索技术与大整数乘法
  • Spring Cloud:分布式事务管理与数据一致性解决方案
  • stm32之普通定时器
  • C++并发编程-5.C++ 线程安全的单例模式演变
  • 从代码学习深度学习 - 自然语言推断:使用注意力 PyTorch版
  • burp suit使用
  • 自动化提示工程:未来AI优化的关键突破
  • mysql数据库完整备份导出
  • 板凳-------Mysql cookbook学习 (十--15)