
Arduino
grey_csdn
这个作者很懒,什么都没留下…
展开
-
478_Arduino telnet连接测试
全部学习汇总: https://github.com/GreyZhang/arduino_uno 利用一个Arduino的例子测试一下telnet,虽然我现在还不知道telnet是怎么玩的。简单网上搜了一个XX知道,就这么做个初步测试吧! 其实,这样的环境中Arduino算是一个小的网络服务器。部分配置如下: IP地址前面的一个例子中初步知道了,这里的客户端,我感觉跟我接下来的测试有一点相关性。不过,测试的数目似乎又有一点不对...原创 2020-12-12 10:36:54 · 696 阅读 · 0 评论 -
477_Arduino以太网板盾功能测试
全部学习汇总: https://github.com/GreyZhang/g_arduino 这个例程我第一次调试通过其实是花了不少时间的,主要是我对以太网几乎没有什么基础的知识积累。经过了一个晚上的煎熬,最终也是没能够调试成功。而更加不幸运的是,我买的两个扩展板有一个是坏掉的,而我第一次的测试其实就是使用了坏掉的那一个。 最初使用Arduino内置的例程的时候,调试没有通过。后来,用了一个网络的测试程序测试通过。 代码比较精简,...原创 2020-12-11 21:15:32 · 526 阅读 · 0 评论 -
476_Arduino abi.cpp文件内容分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 在Arduino的基础库文件实现中,发现了一个abi.cpp文件,文件内容非常简单,没太明白这个文件的设计意图。 从注释看,这个文件中的两个接口有可能是为了做部分UART诊断信息的处理。而从接口调用看,其实,运行到这里面的接口的时候其实是系统终止了一个线程的时候。 Abi,从这个文件看不好猜测是什么缩写,什么含义。我从网络上查了一...原创 2020-12-10 21:13:04 · 428 阅读 · 0 评论 -
475_使用Arduino学习C++之函数的weak属性
全部学习汇总: https://github.com/GreyZhang/Arduino_Cpp 其实,今天做的这个小结并不是一个C++的知识点。但是,这个知识点是我在看Arduino的C++代码的时候学到的,因此在此做一个简单的梳理总结。 在Arduino的main函数中有如下的代码: 而这个函数的声明: 上面的这个声明,涉及到了一个weak的属性。我查了一下网络的信息,其实这个并不是C++的一个功能...原创 2020-12-09 20:29:04 · 563 阅读 · 0 评论 -
474_Arduino中二进制的标识实现分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 在之前的学习工作经验中,C语言对于二进制的支持还是很自然的。我并不知道C++中到底是什么情况,毕竟在Arduino的开发环境中,C++其实才是占有的霸主。 我之前尝试使用过其他平台的二进制表达模式,但是编译的时候没有被识别。今天看了一个文件之后,恍然大悟,为什么例程中的用法是没有问题的。 在Arduino IDE的安装目中,我找到...原创 2020-12-08 19:13:35 · 1478 阅读 · 0 评论 -
473_Arduino.h内容分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 前面做了main.cpp的简单分析,大概的代码如下: 其中,包含了一个Arduino.h的头文件。今天,来看看这个头文件。 前面的头文件暂且不考虑,这里面的几个宏的信息其实主要是分为2部分。第一个是MCU的各个端口信号相关的状态或者属性,第二个则是数据中心用到的一些常量参数。 这个具体的作用我没有猜出来...原创 2020-12-07 22:12:40 · 2819 阅读 · 2 评论 -
472_Arduino setup之前的工作分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 在Arduino的一个程序的框架中,初始化的部分在setup函数中实现,而之后软件进入到一个叫做loop的无限循环。这个是大概的一个套路性的处理。 那么,在嵌入式的软件中,最初的软件执行一般是startup,然而用户真正需要了解的软件的初始其实还真就是main函数。C语言中如此,嵌入式的C++也是差不多的。如此,可以根据这个线索找到setup之前是否还有...原创 2020-12-06 11:01:00 · 616 阅读 · 0 评论 -
471_Arduino初始化以及loop的实现
全部学习汇总: https://github.com/GreyZhang/arduino_uno 在进行各种例程调试的时候,我们知道Arduino的工程中有一个初始化的函数setup,还有一个无线循环loop。 这是其中的一个例子,如果把这两个函数改一个名字会出现报错。例如,我修改一下setup为setup_test,之后打开编译的详细输出。 链接的时候,找不到这个函数。 为什么会出现这种情况呢?我在逐...原创 2020-12-05 11:44:49 · 3456 阅读 · 0 评论 -
470_Arduino LCD驱动初步
全部学习汇总: https://github.com/GreyZhang/arduino_uno 手里也有一个LCD的模块,最早的时候应该是跟着Arduino一起买的。但是,一直以来也没有用过。其实,有好几次想把这个模块开发出来,这样可以让我的很多测试信息可以方便的显示出来,后来全都放弃了。 最近打算从最底层的层面看看Arduino的整个开发基础框架,全部的例子以及驱动的开发全都摸一遍。还是看到了这里,找出来做了简单的测试。 几个...原创 2020-12-04 21:52:00 · 443 阅读 · 0 评论 -
469_Arduino超声波距离传感器例程调试
全部学习汇总: https://github.com/GreyZhang/arduino_uno 最近在逐个分析学习Arduino中自带的一部分例程,同时梳理一下学习笔记。中间有不少例子有一些雷同或者最基础的元素是相同的,我也就直接跳过了。这次看的这个超声波距离传感器则是比较新的,在此之前并没有接触过这样的模块。我手头正好也有这样的一个模块,在我手里也不知道多久了,一直没有用起来。正好,这个也是很好的机会,让我之前学习上的投资也算是有点回收。 首先看...原创 2020-12-03 20:52:56 · 963 阅读 · 0 评论 -
468_Arduino生成ASCII码表
全部学习汇总: https://github.com/GreyZhang/arduino_uno 看了一个ASCII码表的生成程序,其实非常简单,我估计这个例程的存在主要是为了演示串口的输出功能。 大概的软件如下: 其中,thisByte的初始值是33,而ASCII码的范围也是33到126。等全都处理完之后,进入到一个死循环。 相比C语言的printf来说,Arduino的这个串口输出功能其实功能还要丰富一...原创 2020-12-01 20:01:36 · 1946 阅读 · 0 评论 -
467_Arduino AD采集范围标定
全部学习汇总: https://github.com/GreyZhang/arduino_uno 这个其实电路跟我之前调试过的几个差不多,功能我也不再去调试了。不过,这里面有一个小技巧在里面。 管脚的配置其实没有什么特殊的地方,不过在这里有一个记录的过程,那就是尝试测试最小以及最大的AD值。当然,记录的时间在启动之后的5S之内。这样,如果硬件设计上有偏差的时候,就能够测试出一个具体的AD可以采集到的范围。 这里其实还是AD...原创 2020-11-30 21:35:43 · 1267 阅读 · 0 评论 -
466_Arduino模拟输入与模拟输出例程调试分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 看了一个模拟量输入以及输出的例子,实现了AD的采集以及AD的输出。原理图如下: 比较简单,就是一个变阻器实现一个分压的AD采集,然后还有一个可以输出AD量的管脚控制一个LED的亮度。 软件实现其实没什么可以分析的,实现了一个LED亮度跟随电压采集变化的功能。同时,通过串口输出了电压测试的数据以及接下来的输出数值。...原创 2020-11-29 09:31:59 · 1129 阅读 · 0 评论 -
465_Arduino蜂鸣器乐曲输出例程分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 今天调试测试一个有意思的小程序,这个在我日常的工作中基本上碰不到。日常的工作中,各种输出相对来说都是比较单调的东西。但是,这个例子实现的是音乐节奏的输出。 原理图如下: 我正好手里有一个蜂鸣器,不知道参数什么状态。我直接按照这个例子搭建了电路,调试的时候却发现声音很低。后来发现眼神不好,100欧姆的电阻整成了100K欧姆。既然这样...原创 2020-11-28 09:56:51 · 557 阅读 · 0 评论 -
464_Arduino状态变化检测例程分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 其实,这个例子跟之前看过的Debounce例子还是有一丝相同的地方的。具体,可以直接在代码分析的时候说明一下。 这里,我还是按照我自己的电路修改了管脚的配置。 这里,其实就涉及到了前面提到的功能了。但是,这里使用的是一个阻塞模式的延时。其实,在实际的应用中是不实用的。而之前的例程中,这部分采用了CPU占用率更低的模式。...原创 2020-11-27 21:09:48 · 901 阅读 · 0 评论 -
463_Arduino Debounce例程分析
全部的学习汇总: https://github.com/GreyZhang/arduino_uno 近期,计划把Arduino里面的例子全都分析一下,看看是否有值得参考借鉴的设计。今天看了一下Debounce的例程,其实还是有一点分析的价值的。 我觉得,如果是到了消费类电子里面这种按键设计肯定是大把存在。但是,正在汽车电子里面,尤其是以控制为主的控制器设计里面这部分还是很少的。但是技术其实是想通的,汽车电子里面也有一些其他的信号处理会有Debounc...原创 2020-11-26 21:01:32 · 663 阅读 · 0 评论 -
462_Arduino LED不用delay功能的闪烁例程分析
全部学习汇总: https://github.com/GreyZhang/arduino_uno 其实,这是通用的Arduino例程,只是我正好用的UNO这个版本进行的调试以及分析。暂且,这部分的学习笔记归档放在这个分类中。 其实,Arduino的很多例程本身的复杂度都是很低的,甚至说里面的信息量是不大的。但是,但凡有一点与众不同的地方都值得我们去学习小结一下。 在Arduino的例程当中,有一个不需要delay的LED闪烁例程。...原创 2020-11-25 21:01:47 · 1296 阅读 · 0 评论 -
410_Arduino UNO库模块梳理
全部的学习汇总:https://github.com/greyzhang 通过Arduino的IDE帮助菜单,其实能够找到一部分库的文档。首先,内置的标准库有如下的一个概括总结。 上面这个标准的库清单基本上是一个通用的库,其中有几个我基本上用过或者接触过了。接下来一个个看一下。EEPROM,其实这个是AVR单片机里面的一个模块; 以太网,使用以太网的板盾连接以太网。目前,我手里已经有这么一个板盾了,但是更多可能是在用他的SD卡卡槽。后面抽时...原创 2020-09-26 09:16:41 · 1297 阅读 · 0 评论 -
408_在Arduino上尝试实现S19、MOT等文件的解析
全部的学习汇总: https://github.com/GreyZhang/arduino_uno Srecord格式的文件解析其实还是很有规律的,之前看过一个NXP提供的一个解析的功能。但是,功能混在在了串口Bootloader里面,不是很通用。今天在Arduino上,尝试做这样的一个移植修改。 为了这个功能调试,我还参考了其他人网上printf的功能移植,一同放在了这一份代码里面。 为了保证调试的容易,直接使用C模式。...原创 2020-09-23 22:02:29 · 634 阅读 · 0 评论 -
406_Arduino EEPROM存储清空例程分析
全部的学习汇总:https://github.com/GreyZhang/arduino_uno 今天有点晚了,本来想就此收住直接休息。正好换了一个九块九包邮的键盘,试试手感,玩玩emacs。于是,又看了这个例程。 例程的代码如下: 跟官方的显示效果或许稍有不同,我按照我的习惯进行了一点排版的调整。 上面的代码太简单了,其实一看就懂。一个for循环,用0填充了整个EEPROM的空间。写完之后,点了一个灯。...原创 2020-09-22 23:19:30 · 879 阅读 · 0 评论 -
405_Arduino BootLoader实现代码阅读
全部的学习汇总:https://github.com/GreyZhang/arduino_uno 在安装目中找到了Arduino的BootLoader源代码,找出了UNO相关的那一份做了一个简单的代码阅读。 后面会附加全部的代码片段到Github上,代码内容就不在博客中贴了,比较站空间。其中,看到的几点小结如下:里面的延时相对来说都不是很精确的,直接使用了软件CPU死等; 没有用到定时器; EEPROM的编程十分简单; 进入到编程环节之后,...原创 2020-09-22 20:08:27 · 1025 阅读 · 0 评论 -
404_SdFat文件的创建和删除
全部的学习汇总: https://github.com/GreyZhang/SdFatFs 看一下SdFat的文件创建以及删除功能,还是从例程开始。 测试,首先检查是否有example.txt这个文件,并给出结果。然后,尝试打开文件,没有的时候创建。之后,再次测试是否存在,并给出结果。最后删除,在此检查并给出结果。 运行一下效果如下: 接下来,我直接在SD卡中创建一个这样的文件进行测试。...原创 2020-09-21 21:48:55 · 681 阅读 · 0 评论 -
403_SdFat的文件读取测试
全部的学习汇总:https://github.com/GreyZhang/SdFatFs 想测试一下SdFat的读取功能,根据例程修改一下,读取一个5M的文件,看看速度。读取速度,我按照串口打印的时间戳来算。测试代码如下: 其他的代码,跟例子基本一致。首先,第一次我把全部的数据打印出来做了一次对比,先确认这个读取动作是没有问题的。这一次测试,去掉了串口打印,应该不会减缓文件的读取。但是,目前的读取方式看上去似乎是一个字节一个字节读取而不是一行行读...原创 2020-09-21 21:04:35 · 510 阅读 · 0 评论 -
402_PETIT FAT文件系统目录读取测试
全部的学习汇总:https://github.com/GreyZhang/SdFatFs 还有一个目录的操作没有测试,干脆测试一下。不然,感觉总有一部分工作没做。在原来的软件上修改测试代码如下: 软件运行效果: 看上去,有一个打印符号弄错了。不过,已经成功找到了磁盘上的文件。这个系统的确是显得有一点点简陋,看起来,后面还是得用一个功能更完整的来继续我的探索。...原创 2020-09-20 19:48:26 · 493 阅读 · 0 评论 -
401_Petit FAT文件系统在Arduino上的移植测试
全部的学习汇总:https://github.com/GreyZhang/SdFatFs PETIT文件系统其实是FatFs的一个缩减版本,主要面向8bit的MCU等存储资源比较有限的平台。具体的资料参考官方网站:http://elm-chan.org/fsw/ff/00index_p.html。 尝试做了一下移植,我觉得一个文件系统比较理想的移植状态是改一下SPI其他的基本上自动适配。其实,这个基本上就做到了这样子。 整个文件系...原创 2020-09-20 19:07:44 · 727 阅读 · 0 评论 -
399_FAT文件系统DPT分区表小结
全部的学习汇总: https://github.com/GreyZhang/SdFatFs 一个文件系统的实现,一点点看下来似乎还是很麻烦的。主要是有很多概念性的信息没有弄清楚。 文件系统的区块0是预留区,这里面其实分为两部分:前面的446个字节是MBR,后面的64个自己是DPT分区。这次先小结一下DPT分区的结构。 找到一份微软的FAT文件系统的硬件白皮书,这部分是Arduino的库文件中提到的,发现这部分没有找到描述。不过,比...原创 2020-09-18 21:20:44 · 715 阅读 · 1 评论 -
398_Arduino上实现SD卡类型判断
全部学习汇总: https://github.com/GreyZhang/SdFatFs 前面已经测试了Card Command的功能正常,接下来使用相应的功能尝试判断SD卡的类型。主要的测试流程在文档中有一个描述: 这里需要注意的是,有些命令比如ACMD41属于Application CMD。发送的方式跟CMD有一定相似,但是多一部分信息。尝试做CMD的发送的时候,我顺便把这个命令实现了,这次正好测试一下。 ACMD的发送实...原创 2020-09-18 21:14:45 · 475 阅读 · 0 评论 -
397_Arduino SD卡驱动命令测试
SD卡以及文件系统的分析学习整理汇总: https://github.com/GreyZhang/SdFatFs 上次实现了一个SD卡的SPI命令,今天设计一段代码对此进行测试。这个测试可以通过一个SD卡SPI模式的初始化来实现。 直接截取一部分文档信息,这样能够更容易理解。 按照这部分信息,接下来我的测试可以先发至少74个时钟周期信号,这个可以通过发10个字节来实现,正好80个时钟信号,满足要求。接下来,测试CMD0的响应,...原创 2020-09-18 20:46:23 · 468 阅读 · 0 评论 -
396_Arduino SD卡驱动命令发送C实现尝试
全部的学习汇总:https://github.com/GreyZhang/SdFatFs 这次总结一下Arduino的SD卡驱动实现,并把这部分代码尽量改成更加容易移植的C模式。因为,C模式在C++中依然可用,反之则不然。再者,我现在的工作主要的编程环境还是C。 看一下主要的代码实现: 根据代码,大致分析一下过程。我增加一份加了中文注释批注的代码如下: 这样,比我直接用文本去描述整个过程看起来会更加清晰...原创 2020-09-17 23:42:46 · 436 阅读 · 0 评论 -
395_使用Arduino学习C++-变量赋值
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 最初觉得像初始化、赋值等都是再通用不过的模式了。但是,现在看来似乎还是有注意的地方,在此放一个例子对比下看看。 软件编译运行效果: 看得出来,可以这样进行批量的统一赋值。 可能是因为之前编程规范的约束,之前一直没有这么用过。接下来,测试下C语言中的相应操作。 代码如下:...原创 2020-09-17 20:34:41 · 1530 阅读 · 0 评论 -
394_Arduino SD卡驱动实现分析-私有成员和方法
全部的学习汇总:https://github.com/GreyZhang/SdFatFs 私有成员变量或者方法,应该类似于C版本设计中的static类的信息,有一定的访问的限制处理。 根据代码,大概总结一下SD卡的操作。先看几个成员变量,包括的信息大概有:块(编号?)、片选管脚、错误码、在块中(操作?)、偏移量(一个块的偏移量?)、部分块读取、状态、类型。 卡命令发送分为两个,一个是应用命令另一个是命令。从是先看,应用命令的实现是一个内联函...原创 2020-09-17 20:28:01 · 355 阅读 · 0 评论 -
393_Arduino SD卡驱动库实现分析-全局接口
全部的学习汇总: https://github.com/GreyZhang/SdFatFs 对着代码,理解一下做一个SD卡驱动实现所需要的一些功能。代码是用C++实现的,这次了解的主要内容应该是class中的public部分。 我看了一下,代码中这个类的定义挺大。因此,代码分片段一点点来看。 接下来,直接来一个逐行分析。179,是这个类的一个构造函数,指定了一部分成员的初始化数值; 180,获取SD卡的容量大小; 18...原创 2020-09-17 20:22:49 · 593 阅读 · 0 评论 -
389_使用Arduino学习C++-成员的初始化
全部的学习汇总: https://github.com/GreyZhang/Arduino_Cpp 前面,已经小结过通过构造函数完成成员的初始化的方法。其实,还存在其他的方法可以实现,那就是直接在类的成员定义的时候进行初始化。一份测试代码如下: 软件编译之后的运行效果: 这样,在进行成员初始化的时候其实比使用构造函数的方式更加简洁清晰。此外,还有一种专门处理初始化的方式,其方式看上去有点像两种方式的结合。例子如下:...原创 2020-09-16 21:28:15 · 490 阅读 · 0 评论 -
388_使用Arduino学习C++-private的使用
全部学习的汇总:https://github.com/GreyZhang/Arduino_Cpp 之前总结过了public,在此结合public一起看一下private的使用。之前的一份代码如下: 运行效果: 其实,上面的部分代码等效模式如下: 可以有同样的运行效果。除此之外,需要说明的是public和private可以在一个类中多次出现。比如如下可能: 这样也会有同样的效果...原创 2020-09-16 21:22:39 · 578 阅读 · 0 评论 -
387_使用Arduino学习C++-在类内实现的函数
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 在小结类内实现的函数之前,先看一个之前总结过的设计。 软件运行效果如下: 接下来尝试在类中实现一个函数,这种使用方式我在Arduino的库实现中是看到了的。按照教程上的描述,其实这是设计了一个内联函数。这种函数一般是使用频繁且涉及简单的函数。上面的例子重新修改如下: 软件重修编译测试结...原创 2020-09-16 21:13:59 · 515 阅读 · 0 评论 -
386_使用Arduino学习C++-默认的构造函数行为
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 回到之前熟悉的一个状态: 给类增加一个构造函数,这会带来一个问题,如果不进行显式的初始化编译会报错。如下面的代码会报错。 如果避开这个操作如何实现呢?比如,让初始值默认为0?之前也小结过这个问题,当时使用了函数重载的技巧。 修改前面的设计: 这样,软件可以正常编译通过。...原创 2020-09-15 20:48:39 · 525 阅读 · 0 评论 -
385_使用Arduino学习C++-函数的默认参数
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 看一个函数参数默认值的处理,设计如下测试代码: 软件可以正常编译通过,运行的结果如下: 从上面的结果看得出,这样的函数其实可以接收变化数目的参数,参数具有缺省的效果。这种行为类似python中的效果了。如果给了明确的参数,则会按照传递的参数进行初始化。如果传递参数少,看结果应该是按顺序传入,后面的采用默认。...原创 2020-09-15 20:22:37 · 791 阅读 · 0 评论 -
384_使用Arduino学习C++-类以及public参数
全部的学习汇总:https://github.com/GreyZhang/Arduino_Cpp 在进行关于C++ class的小结之前,再次看一下struct。其实,这个在我找到的上一份教程中大量地使用了。 写一段测试代码如下: 以上是对一个类的定义,使用的struct。执行的测试代码如下: 最终的执行效果: 接下来,做一下修改,struct改成class的一种实现:...原创 2020-09-15 19:57:10 · 1017 阅读 · 0 评论 -
383_实现SD卡文件系统所需要的指令梳理
全部的学习记录汇总: 这一份命令集合不是来自于SD卡的文档,尽管我也找那份文档参考过。我整理的主要依据还是Arduino的库文件实现。 涉及到的命令整理如下:CMD0,在片选拉低的时候让SD卡切换到SPI模式; CMD8,验证SD卡接口工作状态; CMD9,读取CSD寄存器,其中CSDN的缩写为:Card Specific Data; CMD10,读取SD卡的ID信息; CMD13,读取卡的状态信息; CMD17,从SD卡中读取单个bl...原创 2020-09-14 22:00:59 · 579 阅读 · 0 评论 -
382_使用Arduino学习C++-namespace的用法
全部学习笔记汇总:https://github.com/GreyZhang/Arduino_Cpp 之前选择了一本不算是很合适的学习教程,《像计算机科学家一样思考C++》版本。可能这本书的主要目的还是在于教人一套思考的方法而不是教授C++编程本身。 之所以转过来学习C++,主要是我在看Arduino库文件设计的时候看到了一个namespace就完全蒙圈了,不知其意。 重新换了一份教程,C++之父编写的。开篇不远,找到了nameps...原创 2020-09-14 20:33:43 · 834 阅读 · 0 评论