使用M5stickC+8servos驱动板重写微信跳一跳-Arduino中文社区 - Powered by Discuz! Archiver

沧海笑1122 发表于 2020-2-11 23:16

使用M5stickC+8servos驱动板重写微信跳一跳

【使用M5stickC+8servos驱动板重写微信跳一跳】


【故事】
故事还是要讲的。这个小玩具纯粹是极客研究,没有实战价值,和家人朋友玩得时候,告诉人家一声,我用机器人啦。
原帖是受美科(microduino)官方公众号一个项目的启发,用processing+uno实现了一版,尝试了两种方案:一是用模拟电极的方式触摸屏幕,一种比较硬核一点,用舵机模拟手指。
链接在这里,感兴趣的同学可以去看看。
☞☞☞【微信跳一跳物理辅助工具】来自美科微信公众号的实践


宅家期间,使用M5stickC+8servos驱动板重写微信跳一跳。有两个知识点:
1、使用arduinojson 6.0来解析上位机发来的json格式的跳跃数据。
2、使用M5stickC+8servos驱动板来实现舵机驱动。




【代码】
/*
微信跳一跳arduino端程序,移植到M5stickC
2020-02-11
version:0.3
作者:沧海

基本原理:利用processing+摄像头+鼠标,测量跳跃点之间距离,将延时系数+跳跃距离用json格式+串口
送至M5stickC(arduino),arduino+servo,经过延时后,实现跳跃功能。

数据格式:
{"ratio":3.35,"dist":370}
使用M5出品的8servs 扩展板来实现舵机驱动


*/
//======M5StickC AND IIC_servo
#include <M5StickC.h>
#include "IIC_servo.h"
//===========ArduinoJson部分
#include <ArduinoJson.h>
//==========跳跃参数
float iratio=1.0;//延时系数
int idist=1;//跳跃距离
//====触摸屏幕的舵机角度
int ANGLEMIN=5;//
int ANGLEMAX=20;
void setup() {
Serial.begin(00);
// Initialize the M5StickC object
M5.begin();
// LCD display
M5.Lcd.println(" ");
M5.Lcd.println("WX_Jump 0.3");
IIC_Servo_Init();   //sda0   scl26
}


void loop() {
const size_t capacity = JSON_OBJECT_SIZE(3) + 60;   //定义来自arduinojson.org的助手生成
DynamicJsonDocument jsonBuffer(capacity);
while (!Serial.available())
   delay(100);
   DeserializationError error = deserializeJson(jsonBuffer, Serial);// json数据源来自serial。生成一个jsonBuffer
if (error) {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.c_str());
    return;
}

iratio=jsonBuffer["ratio"]; //解析jsonBuffer,得到iratio,跳跃系数
idist=jsonBuffer["dist"];//解析jsonBuffer,得到idist,跳跃距离

#Serial.println(iratio);
#Serial.println(idist);
dojump();//调用跳跃函数

}

void dojump()//跳跃函数
{
Servo_angle_set(1,ANGLEMAX); //舵机安装在CH1,一共八路舵机输出,模拟手指点击屏幕
delay(iratio*idist);         // 跳跃距离*延时系数
Servo_angle_set(1,ANGLEMIN);//模拟点击屏幕结束,抬起模拟手指

}


【感谢】感谢M5Stack提供有趣的硬件平台,这一版有两个新知识点,希望对大家有所启发。感谢美科该项目的原作者,如果我得到了名字,会及时更正致谢。感谢arduino.cn提供交流平台。

我的代码以及库,都打包附上,供各位玩家参考。arduinojson库请在arduinojson.org下载最新。




topdog 发表于 2020-2-13 20:57

学习一下沧海笑老师的最新研究。

沧海笑1122 发表于 2020-2-13 21:49

topdog 发表于 2020-2-13 20:57
学习一下沧海笑老师的最新研究。

感谢师兄关注,这个没有太多提升,只是试了一下M5最新的IIC舵机控制。:)
页: [1]
查看完整版本: 使用M5stickC+8servos驱动板重写微信跳一跳