xukejing
获得 501 次赞
帮助过660人
可以商用,但要遵循开源协议。软件如果是基于别人的GPL协议软件做的,不能把你修改的那部分代码藏着掖着。但是如果是MIT或BSD协议开源的软件就没什么问题,但你只有权对你做的那部分改进的部分闭源。全部自主开发的软件商用是没问题的。
舵机控制不需要图,你只要知道对于50HZ PWM,占空比50%到100%正好对应0到180度就可以了,也就是1000us时候0度,1500us时候位于中立点,2000us时候180度
理论上,调整PID参数让控制器的传递函数K(s)乘以被控对象传递函数G(s)小于1,就可以得到理想的结果。被控对象的传递函数G(s)是与被控对象的具体物理特性有关的。如果这个控制问题是“把一个弹簧阻尼器拉到多少长度”,这个G(s)函数就比较容易写出来。但是实际要控制的问题肯定不是“把一个弹簧阻尼器拉到多少长度”那样的简单问题,往往很难做数学建模。这时候就只能人肉脑补大胆猜测一下这个物体可能会怎样对某个大小的控制量做出响应。当然,人又不是上帝,还能自创物理规律不成?所以这种大胆猜测出来的规律往往是不靠谱的,有时候有效,有时候无效,于是变成了玄学。
先学会单环PID,一个位置PID控制器直接输出电机信号。然后修改这个位置PID控制器,把输出从电机驱动信号改成期望的角速度。并再做个角速度PID控制器,输入是实际角速度与期望角速度的误差,输出是电机驱动信号。这个串级PID控制器的流程如下:用期望位置和实际位置得到位置误差,输入给位置环PID控制器,位置环PID控制器输出期望角速度。期望角速度与实际角速度得到角速度误差,输入给角速度环PID控制器,角速度环PID控制器输出电机驱动信号。
对于stdio库和math库里的那些函数,这些函数都是为了实现特定的功能、解决具体的问题而存在的。学习是要有循序渐进的方法,先掌握这些函数都是做什么的,需要怎样的输入输出变量类型,然后再看函数的具体形式(当然,对于大部分学编程的人来说,没必要浪费时间去看这些函数的具体形式)
手机的通讯方式,比较方便的有蓝牙透传,还有wifi的UDP和TCP,以及基于TCP的MQTT和http协议。蓝牙透传的数据解析很容易在UDP或TCP直接互相移植。比如,用手机通过UDP(蓝牙透传或TCP)发送一个字符串。对于手机的发送端,字符串第一位作为数据起始校验,比如0x53(这个值随便定)第二位开始,顺序以每4个字节写入float数据(int也一样)。比如一个float型的亮度值 0.5,可以用共用体的方式拆成4个char类型变量。对于单片机的解析端,收到这个数据后,按发送端的方式做个反操作。 可以参考这个页面,http://bbs.icxbk.com/thread-96649-1-1.html我在里面这写了个串口解析函数,void ma10_serial_cope(void)它演示了怎样把8位数据与32位float之间转换
如果只在电脑上装linux不要Windows,这种情况,直接全盘安装就可以。linux发行版可以选择centos、opensuse、ubuntu、debian等,这几个发行版都可以做服务器7x24小时工作的,稳定性都可以。比较好看且稳定的linux桌面主要就两种,KDE、GNOME;KDE桌面的OpenSUSE很漂亮,赏心悦目。另外,KDE在centos和openSUSE上有一些很漂亮的主题,还可以个性化美化一下。当然,越花哨的桌面,越有可能引入各种不确定因素。KED过去有中文显示的问题,虽然现在解决了,但是还是英文的好看。另外还有个unity桌面,是Ubuntu推荐的。其实桌面都是可以换的,装了KDE桌面,还可以同时装GNOME、LXDE等,根据心情换。