单片机arduino傻瓜教程(单片机基础与arduino应用pdf)
arduino怎么和scratch用
1、由于scratch软件和arduino连接需要使用s4A软件,在浏览器中搜索S4A,然后找到官网,下载软件。点击我接受,下一步。
2、在浏览中选择需要安装的盘的位置,然后选中要安装在哪个文件夹中,点击安装,直到开始安装程序。
3、安装完成之后打开软件,如下图所示,有scratch软件所有的模块信息,右侧又增加了arduino单片机的显示信息。为了要连接arduino需要先关闭软件。
4、打开arduino单片机程序编写界面,点击打开选项,找到arduino连接scratch的固件程序,连接arduino单片机,配置端口,下载程序到单片机。
5、下载成功后再打开s4A软件,显示你当前连接的单片机的端口状态,以及数据信息。说明单片机和scratch连接成功。
6、试着连接电路,写个简单的小程序来运行试试。首先在界面,拖动需要的各个模块,按照积木形式排成程序。如图所示。然后将连接好的电路,单片机连接电脑,连接scratch软件。
7、点击软件右侧小绿旗开始运行程序。可以看到通过scratch图形化界面编写的小程序,控制单片机上的端口,执行让灯亮灭的操作,至此实验完成。
如何用arduino开发单片机
1 去Arduino官网下载最新版本的IDE版本,这样你就可以在计算机上编写和烧录自己的Arduino程序了。
2 如果是在网上买的单片机,卖家一定送你很多资料吧,跟着资料里的步骤一个实验一个实验的做,先从点亮数码管开始慢慢来,等熟悉了之后就可以更加精密的器件,编写更加复杂的程序了。
比如PWM电机驱动,摄像头驱动之类。
3 如果想好好学习单片机的话建议买块51打好基础。学号C语言也很重要;
如何将arduino产生HEX文件 以及如何写入HEX
步骤如下:
一: Hex文件的提取
1:在arduino工具的File-preferences中找到preferences.txt文件。
2:用记事本打开preferences.txt,选择hex文件存放的路径,在最后行加入 build.path=d:\arduino\MyHexDir,
3:关闭arduino。
4:关闭preferences.txt ,关闭时对话框显示是否保存,选择保存。
Note:1:hex文件存放的路径可以由自己来定。
2:以上操作时不连接arduino硬件。
二:仿真时单片机晶振频率的选择
在arduino软件包的hardware\arduino\bootloaders\atmega路径下有一个makefile的文件,用记事本打开,可以看到相应的arduino板对应用到的bootloader程序和晶振频率。
在用proteus仿真时,选择相对应的单片机,配置晶振。单片机应该与arduino在编译时选择的board上的一致。
三:往其他单片机板上烧录
编译得到的Hex文件往其他的单片机板上烧录时也是一样要选择相对应的单片机和晶振频率。
四:Hex文件的保存
建立保存路径后,每次编译的文件都会存在此路径下,所以程序实验OK后,就应该将相应的Hex文件保存到其他地方,以免在编译别的程序时被覆盖。
如何启用单片机中的上拉电阻arduino
首先,我估计大家都没有USB TO TTL 硬件,也不是所有的坛友都有mangoII,所以我今天就写个特别的arduino程序,让arduino变成一个串口转发器。
原理很简单。。从串口芯片到单片机和这个口是个并联关系。。然后usb 到这个IO口有1k电阻,我就启用了单片机的内上拉稍微平衡下阻抗,,就把arduino板子作为usb to ttl工具了。。嘿嘿
(本设置在mangoII板硬件环境下测试通过,不确定其他硬件是否可以使用,请自行尝试)
代码如下:
ARDUINO 代码复制打印
void setup() {
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
}
因为程序很简单,我又偷懒就没写注释了。主要内容就是创建一个软串口,软串口接模块 ,然后让软串口的回显数据转发到硬件串口,硬件串口的输入数据转发到软串口。
下面来介绍下接线
3V3 ------------ VCC
ARDUINO GND ------------ GND esp8266
IO1 ------------ TX
IO0 ------------ RX
注意,TX 是直接对应板子上的TX RX 对应RX。,。原因自己思考下。
非常简单的接线,就是把我们的WIFI模块接到arduino的软串口上,需要注意的是,wifi模块是3.3V供电。
好了。已经全部准备好了。我们要正式开始了。首先我们打开串口监视器,然后重新插拔一下模块的VCC接线(让模块重启,显示其启动信息),你应该能看到如下图所示的启动信息,说明已经没有任何问题了。
1.png
前面的乱码是因为模块启动信息的波特率与后面启动后不一致造成的,不管就行了
重点来了看窗口的右下角“没有结束符”
这个要选择成“回车”如下图
1.png
我们输入下面这个指令
AT+Reset
复制代码
点击发送后,模块会重启
显示如下
AT+Reset
done
返回字符是done 为啥d没了呢,实际上是有的。可能是软串口的bug,这个我们不研究了。。反正能用知道就行了,不影响使用。
好上面的重启命令我们等会会经常用到
下面,我们要查询一下模块的工作模式,模块一共有三种工作模式1.Station 2.AP 3.Station+AP 第一种是客户端模式,第二种是接入点模式,第三种是两种模式共存。既然我们是登陆路由器然后往指定网络传数据,所以我们选第一种模式。。
设置之前先查询
AT+MODE?
复制代码
返回内容:
AT+MODE?
+MODE:0
done
这个0就是没配置的意思。。我们配置成1即可
用这个命令来设置
AT+MODE=1
复制代码
这样就设置成模式1了。具体的详细指令请参阅上面的指令手册以及自己多尝试
返回如下:
AT+MODE=1
one
坑爹的d又丢了,不管~~~这个时候,关键的时刻来了,这时候虽然设置了。但还没有生效,需要重启模块。还记得我之前说的指令么?我就不重复写了。。反正这时候要重启(拔电源插头也是可以的)
然后我们来查询下
AT+MODE?
复制代码
返回如下:
AT+MODE?
+MODE:1
done
大概就是这样就设置好模式了。
我们后面就暂时不介绍回显内容了,很简单
然后就是查询一下附近能搜索到的wifi网络信号
AT+ShowAP
复制代码
回显内容就是周围wifi信号
看到自己的wifi就可以加入网络了
AT+JoinAP="SSID","PASSWD"
复制代码
很简单的命令对吧,前面写SSID号,后面写密码。回车发送命令就可以加入网络了。记得加完网络重启下模块
好了,这样模块就连上路由器了
下面就需要有个小工具,在自己计算机(局域网内)上建立一个TCP端口的监听,来模拟服务器
小工具连接
我计算机IP是192.168.1.101 我打算监听8089端口,如下图配置,监听(当然你也可以监听你需要的任何端口)
tcp.png
(说明:任何网络服务器都可以看成是工作在指定端口,负责解析指定协议的端口监听器)
设置模块到单链接模式(只能使用一个连接的模式,这种比较方便简单,多链接模式我们以后再讲)
AT+MUX=0
复制代码
然后重启模块(拔电或者用reset指令都可以)
好了。以上的设置模块设置一次后,断电后还是会有记忆的。。也就是说只需要配置一次。。下面开始建立TCP连接啥的。断电不会重连了。。
下面我们在模块上建立一个TCP的连接
使用指令
AT+NewSTA=“TCP”,“192.168.1.101”,8089
复制代码
很简单的指令,首先说明连接类型,目标ip地址,端口号。。这样就建立好了。。
然后我们就能发送数据了
指令
AT+UpDate=11
复制代码
然后串口会返回一个号,我们继续输入hello world发送
这样就会从TCP监听的一端看到数据了。很简单吧
指令后面的11的意思就是你要发送的字符的长度。系统是靠字符长度判断一句话是否可以发送,所以我们的数据长度要和下面要发送的字符串的长度等长才行。。
简单的教程目前就到这里了,有助于大家理解AT指令的使用。
另外我们还有一个arduino的库,虽然目前开发的不太完全,基本函数都开发完了,例程还没写好,bug可能还有不少,也都在调试中,有兴趣的可以去看看
arduino怎么快速入门,零基础学习
学习Arduino和学习单片机的方法几乎相同。但是学习Arduino更像是学习自动挡汽车驾驶,传统单片机更像是手动挡汽车。自动档汽车的学习主要是上路实践的注意事项,手动挡汽车的学习更重要的是挂挡摘档避免熄火等基础操作,熟练后考虑上路实践注意事项。但是自动档汽车学习你最好要明白手动挂摘档是怎么一回事,对自动挡汽车才能更好理解,只是不必花费主要时间精力去熟练这些基础操作。
可见Arduino像自动挡一样越过了很多底层操作,比如寄存器映射,库函数创建封装,电源拓扑结构的选择等。工作时阅读芯片数据表的寄存器定义章节可以仅简单看一下而已。精通使用Arduino实际上要求你有过系统的电子学专业学习经历,通览电子信息工程各门课程,并且有过C语言学习经历,当然不必要达到很高的分数,好比自动挡汽车学挂挡和离合一样。学习Arduino更加强调实际应用,也就是学校里的高年级学科,比如信号处理,通信工程,EDA中的PCB设计等。淡化低年级基础课程比如模电数电等,这倒不是说基础学科没用,模电数电对于芯片设计和制造等集成电路产业很重要,对于应用芯片来进行终端产品开发的意义就不大了。
以往学习单片机,最终目的是什么不用考虑,先学会单片机的硬件方案设计,软件驱动设计就要学很久,学完也不知道要做什么,可能这款单片机就快淘汰了。然后又学新的芯片,M3完了M0,M0完了F4,会的越来越多,经历却很单调。
学习Arduino不是这样,Arduino直接给你提供了几十种硬件平台和软件驱动,主流内核和方案都有,语言学起来很简单。你独立开发时要考虑最严峻的问题是:
1。现在软硬件环境都现成了,我要用它来做什么???
2。我做出的产品如何运营?靠什么盈利,定价多少,以何种方式出售?
如果你是工程师,在一家公司,团队开发项目,你面临的最严峻的问题是
1。数十种Arduino我要选取哪一种,是否能实现项目的要求功能,是否可以熟练的找到开放资料,比如工程文件?硬件工程师是否可以根据开放资料按需要进行PCB修改?软件工程师是否可以写出数据采集或信号处理或组网方面的程序?
2。如何说服领导采用这种自动挡的方法去开发?同时老板又不会因此而降低我们待遇?
3。如何改变现在出力不出功的公司文化。轻轻松松搞开发而不是像苦力一样却碌碌无为。
客户只在意最终实现的效果,却不在乎你盒子里用的是哪种系统,客户只在意结果。但现实是,很多公司只为员工的过程买单,客户却只为公司的结果买单。多数时候员工让领导看到的过程都是徒劳却充满表现色彩的。