一 实验目的
1.认识串口通信,利用串口通信进行程序调试
2.初步阅读datasheet,对实验现象做出解释/预测
3.了解PWM并做简单运用
二 串口通信与调试
1.介绍Serial库的基本用法(硬串口):程序通过串口监视器向电脑传输数据,串口绘图器对大量数据点进行画图
对应实验:模拟IO输入检测光敏电阻电压(analogRead),并做一个简单的平均滤波器
*2.电脑通过串口控制单片机:书本p66~72,课上没时间讲,要求自学
对应实验:p70.串口控制led开关
**3.蓝牙通信:手机上下一个蓝牙调试助手与HC05模块连接传输数据,注意蓝牙模块的TX(transport)连接单片机的RX(receive)端,蓝牙模块的RX连接Arduino的TX端。还可以在单片机上用软串口(SoftwareSerial)对蓝牙进行连接控制。这部分有兴趣可以先做,下节课会讲两个单片机之前通过蓝牙连接。参考资料:
https://www.arduino.cn/thread-2961-1-1.html
https://blog.csdn.net/Silent_F/article/details/73555308
*自己做DAC:http://lib.csdn.net/article/embeddeddevelopment/67105
三 元件资料阅读
1.光敏电阻电路图以及参数表阅读(感谢徐老师的j精心讲解😏)
2.RGB模块的datasheet阅读:
首要关注点:怎么才能烧!Absolute、Typical表格,从单位找参数属性。
作业:重新看RGB的datasheet(pdf),高亮出你认为重要的部分;解释光敏电阻电路图,并结合参数表说出光敏电阻模块输出电压与外界亮度的关系。
3.解释上拉/下拉电阻的概念。
四 PWM原理讲解及应用
1.下载呼吸灯程序,通过示波器波形了解PWM原理。
对应实验:呼吸灯
2.应用实验:通过光敏电阻的读取值控制LED亮度,要求环境越亮LED越亮(手机屏幕调光)
问题:怎么接线,算法怎么写来进行转换,溢出控制
五 实验报告要求(基本)
1.对于论坛/书本上有详细介绍的实验,只写实验中遇到的问题和解决方法即可;自己编写的关键代码(如PWM应用中光敏电阻值到亮度的算法),或者是觉得比较有意义、有感悟的代码可以写上并解释
2.理论作业:见datasheet阅读部分,阐述PWM原理
3.综合实验作业:除了代码和效果图/视频之外,还需要阐述程序的设计思路以及调试思路(如果有信心能一次编译完成实验就可以不写调试思路),比如这个实验的关键技术分为几个部分(串口读取、PWM、数组/字符串读取),之间有什么联系,觉得说不清楚画个流程图也行
(1)电脑串口控制LED灯亮度
(2)电脑串口控制呼吸灯频率(tips:使用数组)
(3)电脑串口控制RGB呼吸灯顺序以及频率:
a.只在程序开头进行设置;b.在程序循环中随时能改变(tips:字符串分割)
4.对课程进度以及讲解的意见与建议,给我点反馈我手才不会抖呀🌸🐔
*本次实验报告不要求这周末交,请坐和放宽,认真做完实验
*参考资料:Arduino基本函数库解释:https://arduino-wiki.clz.me/
六 我的感受
1.对硬件的熟悉程度比上节课好了,有些模块由于没接触过可能忘记了,问题不大多接触几次就好了。xyh单独研究了一下电路图还是研究出一点东西的,超过我的预想,以后我们还会接触一些不怎么能看懂的东西,还需要这种钻研的态度,再接再厉。zy的接线还是有点问题,不过起码面包版的逻辑弄清楚了,就是端口没接好,再仔细一点,相信很快可以做好。wmj做得挺顺利的,很稳。
2.关于datasheet。老实说,我平时用元件的时候一般都不会这么认真地读datasheet,只有当把东西烧了的时候才去认真看看是怎么回事😂 这不是个好习惯,如果要做电路设计,还是最好先认真读一下datasheet,标出主要参数,看一下符不符合自己设计的需要。这次还没有完全看懂也不要慌,后面我们还会陆续拿一些通用元件的datasheet慢慢研究~
3.软件方面,C语言的熟悉程度比上节课好了,起码没有这么多语法错误,可能有一些用法不太熟悉的后面我们慢慢巩固。这次印象比较深的是PWM的255溢出和wmj那个转换公式的bug。第一个是Arduino的int是16位的,而analogWrite函数的输入应该是一个unsigned char,如果实际值超出转换公式的范围brightness的值就会大于255溢出到0。第二个就是wmj转换公式的调试,首先使用了Serial.print对计算值进行输出来调试,即学即用,很好,然后在我去看之前已经发现乘除法的顺序问题并进行交换,可以看出来有一定C语言功底,最后发现真正的问题在于整数运算的范围和精度问题,使用了double进行变量储存,并用(double)和(int)运算符进行强制类型转换,解决问题。
4.进度不用急,我们一步一步来扎实基础,也已经可以逐步开始做一些有趣的事情了~如果觉得我的进度还是太快就在实验报告里面说一下,这个课不像其他的课程一样必须要你们做到什么什么样,主要目的还是培养你们的兴趣,知道自己所学的知识是可以做什么,去拥抱它们而不是畏惧它们
5.模电真的没有这么可怕!不过我不会再直接讲模电了,时间宝贵(逃