电子计数跳绳原型

引子

这些日子和跳绳杠上了,前些日子的拆解,让我有一个大胆的想法,就是能不能用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设计,这样就可以设计出自己的主机内核。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值