电子计数跳绳原型

引子

这些日子和跳绳杠上了,前些日子的拆解,让我有一个大胆的想法,就是能不能用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.hqwc.cn/news/910694.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

桌面小屏幕实战课程:DesktopScreen 17 HTTPS

飞书文档http://https://x509p6c8to.feishu.cn/docx/doxcn8qjiNXmw2r3vBEdc7XCBCh 源码参考&#xff1a; /home/kemp/work/esp/esp-idf/examples/protocols/https_request 源码下载方式参考&#xff1a; 源码下载方式 获取网站ca证书 openssl s_client -showcerts -connec…

Spring Cloud:高级特性与最佳实践

一、Spring Cloud 高级特性 &#xff08;一&#xff09;分布式配置管理 分布式配置管理是微服务架构中的一个重要功能&#xff0c;Spring Cloud 提供了多种配置管理解决方案&#xff0c;如 Spring Cloud Config 和 Spring Cloud Consul。 Spring Cloud Config Spring Cloud C…

理解图像的随机噪声

图像灰度信息很难精确测量&#xff0c;一般情况下测量值总在真实值附近晃动&#xff0c;使用概率模型可以对该随机性建模&#xff0c;大致如下&#xff1a; 1 概率密度函数 1&#xff09;随机变量 x 的概率密度函数 p(x) 定义为&#xff1a;当 趋近于 0 时&#xff0c;在区间 上…

spring中maven缺少包如何重新加载,报错java: 程序包org.springframework.web.reactive.function不存在

错误原因分析 java: 程序包org.springframework.web.reactive.function不存在 这个错误是由于 项目中缺少 Spring WebFlux 相关依赖 导致的。org.springframework.web.reactive.function 包属于 Spring WebFlux 模块&#xff08;用于响应式 Web 开发&#xff09;&#xff0c;如…

【C++】atoi和std::stoi

两个将字符串转为int的方法 atoi&#xff08;C语言&#xff09; atoi 是 C 库中的一个函数&#xff0c;它定义在 <cstdlib> 头文件里。其作用是把一个字符串转换为对应的整数。 /* Convert a string to an integer. */ extern int atoi (const char *__nptr)__THROW …

Re:从零开始的文件结构(融合线性表来理解 考研向)

文件管理 & 线性表 文件管理文件的结构无结构文件 有结构文件&#xff08;重点&#xff09;定长与不定长记录顺序文件&#xff08;类线性表&#xff09;它的逻辑结构它的物理结构&#xff08;存储结构&#xff09;小结 索引顺序文件与多级索引顺序文件形象化理解&#xff0…

Vue2 引入 Tailwind CSS 完整指南

目录 概述 安装步骤 1. 安装 Tailwind CSS 及相关依赖 2. 初始化 Tailwind CSS 配置 3. 配置 Tailwind CSS 重要说明&#xff1a; 4. 创建 PostCSS 配置 5. 在 CSS 中引入 Tailwind 6. 在 main.js 中引入 CSS 文件 使用说明 基础类使用 布局类 间距类 颜色类 字体类 边…

关于css的height:100%

这个问题&#xff0c;今天还搞了我两个小时&#xff0c;也是基础没搞好&#xff0c;再回顾了一下 问题描述&#xff1a;客户提出&#xff0c;在弹窗的时候就没办法滚动页面了&#xff0c;客户希望还可以滚动父页面。 基于这个问题&#xff0c;我想&#xff0c;本来就是可以滚…