<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_46139849的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_46139849</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_46139849]]></copyright><item><title><![CDATA[arduino下esp32连接openmv]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/109034332</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/109034332</guid><author>m0_46139849</author><pubDate>Sat, 07 Nov 2020 21:29:36 +0800</pubDate><description><![CDATA[#include &lt;Arduino.h&gt;
#include &lt;WiFi.h&gt;
#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

#define DJ0_PWM 32]]></description><category></category></item><item><title><![CDATA[混一个1024]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/109253643</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/109253643</guid><author>m0_46139849</author><pubDate>Sat, 24 Oct 2020 08:46:52 +0800</pubDate><description><![CDATA[混一个1024

]]></description><category></category></item><item><title><![CDATA[arduino环境下用ESP32连接PS2手柄]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/108185219</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/108185219</guid><author>m0_46139849</author><pubDate>Sun, 23 Aug 2020 17:23:26 +0800</pubDate><description><![CDATA[一、PS2接线说明

功能：
1，数据：控制器- &gt; PlayStation 游戏机。这是一个集电极开路输出，需要一个上拉电阻（10K，或许更多）。（上拉电阻是必要的，因为控制器只能连接线对地，它不能真正把电压就行了）。
2，命令：PlayStation - &gt;控制器。
4，地线，接电源负极。
5，电源：任何官方的索尼控制器应在 3-5V。
6，注意：各组发送/接收的字节前，此行必须被拉低，然后重新置高之后。在我们的测试中，它是不足够的，以配合永久-它被赶下来，周围每一组 Digitan 认为这]]></description><category></category></item><item><title><![CDATA[arduino环境下ESP32定时器的应用]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/108034140</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/108034140</guid><author>m0_46139849</author><pubDate>Sun, 16 Aug 2020 11:46:13 +0800</pubDate><description><![CDATA[此定时器用起来非常简单，说明都在程序注释里一看就懂了
直接上程序
hw_timer_t* timer= NULL;  //定义存放定时器的指针

//定时器中断函数
void IRAM_ATTR onTimer()
{
  
}

void setup() 
{
  Serial.begin(115200);
  timer = timerBegin(0, 80, true);  //设置定时器0，80分频，定时器是否上下计数
  timerAttachInterrupt(timer, onTimer, t]]></description><category></category></item><item><title><![CDATA[arduino环境下用ESP32通过蓝牙串口APP控制舵狗完成动作]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/108032555</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/108032555</guid><author>m0_46139849</author><pubDate>Sun, 16 Aug 2020 11:00:01 +0800</pubDate><description><![CDATA[我使用的是Goouuu-ESP32它自带了蓝牙模块所以不用再另外购买
此蓝牙的使用程序可参考https://blog.youkuaiyun.com/m0_46139849/article/details/107441056
#include &lt;Arduino.h&gt;
#include &lt;WiFi.h&gt;
#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)]]></description><category></category></item><item><title><![CDATA[arduino环境下ESP32的蓝牙通信]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/107441056</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/107441056</guid><author>m0_46139849</author><pubDate>Sun, 26 Jul 2020 11:13:34 +0800</pubDate><description><![CDATA[。

]]></description><category></category></item><item><title><![CDATA[arduino环境下利用ESP32控制舵狗（前进步态的编写）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/107295765</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/107295765</guid><author>m0_46139849</author><pubDate>Sun, 12 Jul 2020 22:12:34 +0800</pubDate><description><![CDATA[舵狗的步态有许多种 ，我用的是比较常用的对角步态，及对角的足的动作一致不断交替运动完成行走的一种步态。
代码的实现方面是利用运动学的逆解计算出各角度值，然后与初始值进行比较，通过比较后的结果对舵机进行控制，就完成了舵狗的运动控制，其中需要注意的是延迟函数的使用，如果延迟过小会造成舵机来不及反应而只维持一个动作，如果延迟过大，会造成动作的不稳定。
//逆运动学测试，初始坐标（0，135.36）
#include &lt;Arduino.h&gt;
#include &lt;WiFi.h&gt;

#defin]]></description><category></category></item><item><title><![CDATA[arduino环境下利用ESP32控制舵狗（逆运动学测试）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/107055918</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/107055918</guid><author>m0_46139849</author><pubDate>Sun, 05 Jul 2020 20:17:45 +0800</pubDate><description><![CDATA[利用几何法对狗的的一条腿进行逆运动学的求解

具体的算法可以看我以前机械臂逆运动学的博客，原理都一样

]]></description><category></category></item><item><title><![CDATA[arduino环境下利用ESP32控制舵狗（初始位置的调试）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/106978880</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/106978880</guid><author>m0_46139849</author><pubDate>Sat, 27 Jun 2020 10:17:21 +0800</pubDate><description><![CDATA[用ESP32输出PWM波需要用到ledc函数
下面先对ledc函数做一下介绍
ledcSetup(channel0, freq0, resolution0);
ledcAttachPin(DJ0_PWM, channel0);
ledcWrite(channel0,dutyCycle0);

第一个是设置通道、频率和分辨率的函数。
channel用来设置输出PWM波的通道。
freq设置频率，这里将频率设置成50也就是周期20ms用来控制舵机。
resolution设置分辨率，分辨率能够大致理解成决定将周期]]></description><category></category></item><item><title><![CDATA[在arduino环境下用ESP32控制机械臂(逆运动学算法)]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/105330742</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/105330742</guid><author>m0_46139849</author><pubDate>Sun, 05 Apr 2020 19:45:36 +0800</pubDate><description><![CDATA[我用的机械臂的动力来源是舵机，所以需要通过pwm波来控制，而在arduino中没有专门输出pwm波的函数有的是一个ledc的函数，它是用来控制led灯的，但是同样可以用来输出pwm波。
ledc详细的学习可以参考这位大佬的博客
我们首先需要确定机械臂的初始位置并找到各个舵机的初始值，这需要根据实际的数据去自己测定，这里我们以L2与Z轴重合方向指向Z轴正方向，L3垂直L2方向指向X正轴为初始位置且...]]></description><category></category></item><item><title><![CDATA[正逆运动学解（三维）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/105031454</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/105031454</guid><author>m0_46139849</author><pubDate>Sun, 22 Mar 2020 21:38:36 +0800</pubDate><description><![CDATA[我又来了！之前写了一个在二维直角坐标下的正逆运动学解今天写一下在三维坐标下如何进行正逆运动学的计算及程序实现。
一、正运动学
首先还是要建立一个坐标系，依然以机械臂举例，这里放一个正视图和一个俯视图。


正运动学：已知α、β、γ求C点坐标
咱们废话不多说了直接上公式
先求出AEAE=L2cos(α)+L3cos(β)
然后是X坐标X=AEcos(γ)
Y轴Y=AEsin(γ)
最后Z轴Z=L2s...]]></description><category></category></item><item><title><![CDATA[正逆运动学解（二维）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104879664</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104879664</guid><author>m0_46139849</author><pubDate>Sun, 15 Mar 2020 21:35:31 +0800</pubDate><description><![CDATA[提要：我是为了研究机械狗的步态算法而去学习的正逆运动学算法，实际上可以将机械狗的每一条足理解成是一个机械臂，所以我就用机械臂来举例了。
一、正运动学
这里所谓的运动学解其实就是舵机的转动角度与足尖的坐标值相互转化的数学运算方法。
要想进行计算首先需要一个坐标轴。
在这里我只先研究二维的运算。
首先我们可以很轻易地算出C点的X坐标X=L2COS(α)+L3COS(β)
同样的我们也可以算出C点的Z坐...]]></description><category></category></item><item><title><![CDATA[python学习笔记（字典）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104332873</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104332873</guid><author>m0_46139849</author><pubDate>Sat, 15 Feb 2020 22:27:40 +0800</pubDate><description><![CDATA[1.字典的定义

字典是无序对象的集合
字典用{ }定义
字典使用键值对存储数据，键值对之间使用,逗号分隔

键key是索引
值value是数据
键和值之间使用:分隔
键必须是唯一的
值可以取任何数据类型，但键只能使用字符串、数字或元组



xiaoming = {"name":"小明",
			"age":18,
			"gender":True,
			"height":1.75}

2.字...]]></description><category></category></item><item><title><![CDATA[python学习笔记（元组）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104330967</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104330967</guid><author>m0_46139849</author><pubDate>Sat, 15 Feb 2020 19:13:48 +0800</pubDate><description><![CDATA[1.元组的定义

Tuple(元组)与列表类似，不同之处在于元组的元素不能修改
用于储存一串信息，数据之间使用，分隔
元组用( )定义
元组的索引从0开始

例如：
#定义一个有多元素的元组
info_tuple = ("zhangsan",18,1.75)
#创建空元组
enpty_tuple = ()
#定义一个单元素的元组
single_tuple = (5,)


元组中只包含一个元素时，...]]></description><category></category></item><item><title><![CDATA[python学习笔记（列表）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104310361</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104310361</guid><author>m0_46139849</author><pubDate>Sat, 15 Feb 2020 12:51:14 +0800</pubDate><description><![CDATA[1.python中的“列表”其实就是c语言中的“数组”
1.1格式
定义时用中括号，其中的数据用双引号，数据之间用逗号
list = ["shuju1","shuju2","shuju3"]

1.2取值和去索引
读取时列表是从0开始计数的
#读取第一个数据
list[0]
#读取shuju2的索引值
list.index("shuju2")

1.3列表常用的操作方法
在ipython中编辑时输...]]></description><category></category></item><item><title><![CDATA[python学习笔记（模块化）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104298748</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104298748</guid><author>m0_46139849</author><pubDate>Thu, 13 Feb 2020 17:02:19 +0800</pubDate><description><![CDATA[将之前写的案例九九乘法表写成函数
def jjcfb():
    row = 1 # 行
    while row &lt;= 9:
        col = 1 # 列
        while col &lt;= row:
            print("%d * %d = %d"%(row,col,row * col),end="\t")
            col += ...]]></description><category></category></item><item><title><![CDATA[python学习笔记（函数）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104296242</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104296242</guid><author>m0_46139849</author><pubDate>Thu, 13 Feb 2020 16:32:24 +0800</pubDate><description><![CDATA[1.函数的概念

所谓函数，就是把具有独立功能的代码块组织为一个小模块，在需要的时候调用
函数的作用，在开发程序时，使用函数可以提高编写的效率以及代码的重用

2.函数的定义
def 函数名():
    """注释"""
    函数封装的代码
    


定义的函数如果不调用，是不会执行的
调用函数之前必须先定义函数
函数体相对比较独立，函数定义的上方，应该和其他代码（包括注释）保留两个空行...]]></description><category></category></item><item><title><![CDATA[python学习笔记（while循环）（赋值运算符）（第二个案例九九乘法表）（转义字符）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104261695</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104261695</guid><author>m0_46139849</author><pubDate>Tue, 11 Feb 2020 16:47:14 +0800</pubDate><description><![CDATA[1.while的基本使用
while 条件(判断计数器是否达到目标次数):
    满足条件时，做的事情1
    满足条件时，做的事情2
    满足条件时，做的事情3
    
    处理条件(计数器 + 1)

例如输出100次hello python
#定义计数器
i = 0    #建议：除非有特殊要求，否则都从0开始计数
while i &lt; 100:
    print("he...]]></description><category></category></item><item><title><![CDATA[python学习笔记（第一个案例石头剪刀布）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104237874</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104237874</guid><author>m0_46139849</author><pubDate>Sun, 09 Feb 2020 18:15:34 +0800</pubDate><description><![CDATA[#导入工具包
import random
#从控制台输入——石头（1）/剪刀（2）/布（3）
player = int(input("请输入您要出的拳 石头（1）/剪刀（2）/布（3）： "))
#电脑的随机出拳
computer = random.randint(1,3)
#提示玩家电脑出的是什么
if computer == 1:
    print("电脑出的是石头")
elif compu...]]></description><category></category></item><item><title><![CDATA[python学习笔记（if判断语句）]]></title><link>https://blog.youkuaiyun.com/m0_46139849/article/details/104233519</link><guid>https://blog.youkuaiyun.com/m0_46139849/article/details/104233519</guid><author>m0_46139849</author><pubDate>Sun, 09 Feb 2020 13:24:05 +0800</pubDate><description><![CDATA[1.if的基本语法
ps：python中判断正确是输出的是True错误是输出的是False而不是1和0，区别于c语言
if 要判断的条件: #if顶格写
    条件成立时，要做的事情 #缩进一个tab或4个空格，不可混用

在python中根据缩进判断代码块，所以不需要大括号，不同于c语言
2.if else的用法
if 要判断的条件：
    条件成立时，要做的事情
else:
    条件不...]]></description><category></category></item></channel></rss>