arduino没有端口的数字端口有什么用

对Arduino设为输出(OUTPUT)的引脚进行写操作(digitalWrite)的作用是什么? - 知乎102被浏览12141分享邀请回答19134 条评论分享收藏感谢收起82 条评论分享收藏感谢收起查看更多回答之前写过关于外部中断使用的笔记了,但是始终没有正式的对Arduino开个头。
也许大家很早很早就听说过Arduino 的大名,但是Arduino 却在专业开发者眼中显得如此不二流, 如此低级。但是福利君不这么认为,当然,如果我也这么想我就不会用了。
废话不说。
Arduino到底是什么
Arduino 是一个(或者说一套)较为完整的开源硬件开发平台。其实Arduino 是一个AVR的开发板。当然,他好像没有引出所有的接口,尤其对于MEGA2560和STM32系列的开发板来说。
对于Arduino硬件平台来说,他有好多种,主要的有下面几种。
幸亏二头同学的大力支持,现在福利君有两款 ,UNO和Mega 2560 还有从HouminLi 那里拿来的ArduPilot Mega 1.X
所以,在没有新设备进入的情况下,笔记内容不会超越这三个板子的功能。
当然,Mega2560 已经非常非常强大了,并且不和其他的atmegax8系列特性完全一样,所以程序是不能不修改直接移植的,就算我们使用了相同的扩展板。
说道atmega8 不得不说说这个系列芯片的特性。
根据这个图,我们很容易可以看出每个数字代表的含义。
比如 Atmega328P    -------- 32 代表32k flash   8 代表 8位机     P代表低功耗
这些是arduino所支持的主控芯片。
对于我们比较常见的应用来说,我们需要知道Arduino 的基本电气特性。
我们来一张大照片。
我们可以从丝印(神马是丝印? 去翻该篇的附录1)中看到:
14个数字IO
6个模拟输入
2路参考输入电压
1路3.3V输出
还有两个ICSP,现在对我们来说用处不大。 因为买来的板子bootloader都烧写完毕了。
下面详细介绍一下。
14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。每一路配置了20-50K欧姆内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能
串口信号RX(0号)、TX(1号): 与内部 ATmega8U2 USB-to-TTL 芯片相连,提供TTL电压水平的串口接收信号。
外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。
脉冲宽度调制PWM(3、5、6、9、10 、11):提供6路8位PWM输出。
SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。
LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。
6路模拟输入A0到A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能
接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。
AREF:模拟输入信号的参考电压。
Reset:信号为低时复位单片机芯片。
硬件资源就是这么多,就像普通单片机一样我们需要编程,虽然大家学过了数字电路,而且分高的一逼,那么真的明白寄存器是什么吗,好吧,学霸的答案是肯定的。真的理解寻址是什么吗,当然,学霸的答案也是肯定的,那我们真正理解时序吗,学霸的答案必须是肯定的,要不怎么能画时序图,做电路逻辑功能呢,但是,如果给学霸一份datasheet ,学霸能把一片Atmega8玩的和74LS163一样吗,哦,我们坚强的学霸告诉你,可以。好吧,我们认为,学霸是不需要用Arduino ,学霸直接从AVR学起就可以了,当然学霸必须选择32位,ARM才是学霸入门的正确选择,正所谓人间正道是沧桑,后话不提。
当然,福利君不是学霸,福利君很懒,福利君要做的是加速开发流程,所以福利君选择了Arduino。
让我们看一下Arduino最基础的小程序Blink,这个程序的地位如同编程语言中的Hello World ,通过这个,我们就能认识到Arduino编程语言的基本结构。
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(<span style="color: #, OUTPUT);
void loop() {
digitalWrite(<span style="color: #, HIGH);
// set the LED on
delay(<span style="color: #00);
// wait for a second
digitalWrite(<span style="color: #, LOW);
// set the LED off
delay(<span style="color: #00);
// wait for a second
忘了说,在Arduino的数字13脚连了一个LED,当输出高电平就亮,低电平就灭。板子上本身就带着这个LED以便测试Arduino的功能正常。
上面这个程序是合法的可执行的,让我们看一下结构。
有两个程序段:&#160;&#160; setup( ) 和 loop( )
根据简单的英语翻译,安装,循环。
setup( ) 段中的内容是用来定义io脚模式,载入库,初始化变量的。这个程序段只会在打开电源或者按下重启后运行一次。
loop ( ) 段内的code将在setup段执行后执行,并总在结束后重新开始。
从字面意思上来看,上面的程序让板载led 一灭一亮,间隔都是一秒。
digitalWrite 的用法就是定义针脚和输出电平,高电平电压为输入电压,低电平电压为ground电压。
delay 的单位是毫秒。
MEGA2560 我们以后再说,小程序还用不上大炮。
丝印:说明白点就是你在PCB电路板上看到的字。
例如UNO上面的
阅读(...) 评论()关于Arduino数字超声波接法与应用 - 简书
关于Arduino数字超声波接法与应用
时隔多日,我又来更新文章了。在大致系统地学习完Arduino后,终于腾出时间来。这一次是简单介绍超声波工作原理和示例代码。此次超声波为SRF-04超声波传感器。该超声波有四个端口,电源端、接地端、触发端和反馈端。超声波,最直接最常见的作用是拿来测距。其原理是触发端(trige)发射超声波,反馈端(echo)接收反射回来的超声波,利用中间的时间差用公式算出得到距离。单位cm。用超声波作的扩展作用一般是设在小车前端测距,对距离设定范围判断是否遇到障碍物。
SRF-04超声波传感器
由此我们知道,一般超声波反馈端得到的数据写入另外的数字端,连接我们需要的元件,常见的是小车轮子上的直流电机。
超声波接法
超声波传感器和直流电机代码const int TrigPin = 2; //超声波触发端口const int EchoPin = 3;//超声波的反馈端口void setup() {
Serial.begin(9600); //波特率 pinMode(TrigPin, OUTPUT); //超声波的触发端口为输出 pinMode(EchoPin, INPUT); //超声波的反馈端口为输出 }void loop() { digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH);
delayMicroseconds(10); digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm cm = (int(cm * 100.0)) / 100.0; pinMode(4, OUTPUT); if (cm & 5)//如果cm大于厘米
{digitalWrite(4, HIGH);
else//否则
{digitalWrite(4, LOW);
}其中加粗的部分代码是超声波测距的程序,在利用超声波时可直接使用。当然,该程序不能在串口监视器查看,想要加入串口监视,则要修改一下程序。const int TrigPin = 2; const int EchoPin = 3;
void setup() {
// 初始化串口通信及连接SR04的引脚
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");} void loop() {
// 产生一个10us的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
// 检测脉冲宽度,并计算出距离
distance = pulseIn(EchoPin, HIGH) / 58.00;
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(1000); }
串口监视器
以上是对超声波的简单介绍,实际具体情况编写的代码也会不同。

我要回帖

更多关于 arduino没有端口 的文章

 

随机推荐