Dzpszied

用 Arduino 实现的微信跳一跳物理辅助

前段时间微信小游戏比较火啊,比较清新的跳一跳刷了朋友圈。
拿来 Github 上的 python 辅助跑了一下,总觉得不够粗暴..
于是我拿起了角落的 Arduino ...

准备工作

  • Arduino UNO
  • 舵机
  • 4*4薄膜键盘(可选)

算法(??)

考虑到用舵机模拟手指按压屏幕,按压的时长和两个方块的距离成正相关关系,所以先通过不同距离不同按压的测试和记录,导入 Excel 并拟合出一条函数关系。

y=220.06x+244.51

代码

#include <Servo.h> //引入lib
Servo myservo;  // 创建一个伺服电机对象

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  myservo.attach(3);  // 3号引脚输出电机控制信号
  myservo.write(30);  // 舵机抬起
}

void loop() {
  while (Serial.available())
  {
    float input = Serial.parseFloat();
    int interval;
    if (input > 100) {
      // 这里当输入大于100的数值时判断为直接按下相应的毫秒数,调试用
      interval = (int) input;
      Serial.print("Interval:");
      Serial.print(interval);
      Serial.println("ms");
    }
    else {
      
      float distance = input;
      int interval = (int) (distance * 220.06 + 244.51); // 计算按下的时间
      Serial.print("Distance:");
      Serial.print(distance);
      Serial.print("cm | Interval:");
      Serial.print(interval);
      Serial.println("ms");
    }
    myservo.write(10); // 舵机按下
    delay(interval); // 按下的时间
    myservo.write(30); // 舵机抬起
  }
}

效果


知乎视频

One more thing..

好的刚刚宿舍外面钻进来一只猫

试着让猫哥来跳一下..

情绪逐渐激动.jpg

评论