文章目录[隐藏]
arduino是什么
arduino是连接物联网和创客的桥梁
初始准备
官方网站
arduino软件下载安装
1. 进入官网,点击software
2. 选择合适的进行下载
3. 安装选择所有的依赖
4. 驱动安装点同意
5. 打开首选项进行一些基本配置
arduino IDE
1.工具
2.开发板型号
3.端口号
基本操作:
1. 编写代码)
2. 验证(编译)
3. 上传
开源硬件
arduino Uno R3
芯片旁边的白色是引脚。
开发板继承了端口的集成。
初始arduino程序语言C++
//两个函数:
void setup()
{
// put your setup code here, to run once:
}
void loop()
{
// put your main code here, to run repeatedly:
}
arduino程序的结构
// the setup function runs once when you press reset or power the board
void setup()
{
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop()
{
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
程序分析
arduino中的函数库
点亮LED
pinMode()
说明
通过pinMode()函数,你可以将Arduino的引脚配置为以下三种模式:
- 输出(OUTPUT)模式
- 输入(INPUT)模式
- 输入上拉(INPUT_PULLUP)模式 (仅支持Arduino 1.0.1以后版本)
在输入上拉(INPUT_PULLUP)模式中,Arduino将开启引脚的内部上拉电阻,实现上拉输入功能。一旦将引脚设置为输入(INPUT)模式,Arduino内部上拉电阻将被禁用。
设置pinMode为输出(OUTPUT)模式
当引脚设置为输出(OUTPUT)模式时,引脚为低阻抗状态。这意味着Arduino可以向其它电路元器件提供电流。也就是说,Arduino引脚在输出(OUTPUT)模式下可以点亮LED或者驱动电机。(如果被驱动的电机需要超过40mA的电流,Arduino将需要三极管或其它辅助元件来驱动他们。)
设置引脚为输入(INPUT)模式
当引脚设置为输入(INPUT)模式时,引脚为高阻抗状态(100兆欧)。此时该引脚可用于读取传感器信号或开关信号。
注意:当Arduino引脚设置为输入(INPUT)模式或者输入上拉(INPUT_PULLUP)模式,请勿将该引脚与负压或者高于5V的电压相连,否则可能会损坏Arduino控制器。
设置引脚为输入上拉(INPUT_PULLUP)模式
Arduino 微控制器自带内部上拉电阻。如果你需要使用该内部上拉电阻,可以通过pinMode()将引脚设置为输入上拉(INPUT_PULLUP)模式。
注意:当Arduino引脚设置为输入(INPUT)模式或者输入上拉(INPUT_PULLUP)模式,请勿将该引脚与负压或者高于5V的电压相连,否则可能会损坏Arduino控制器。
digitalWrite()
将数字引脚写HIGH(高电平)或LOW(低电平)
如果该引脚通过pinMode()设置为输出模式(OUTPUT),您可以通过digitalWrite()语句将该引脚设置为HIGH(5伏特)或LOW(0伏特/GND)。
如果该引脚通过pinMode()设置为输入模式(INPUT),当您通过digitalWrite()语句将该引脚设置为HIGH时,
这与将该引脚将被设置为输入上拉(INPUT_PULLUP)模式相同。
获得更多关于输入上拉(INPUT_PULLUP)模式信息请参阅:INPUT_PULLUP
请注意: 比起其它数字引脚,数字引脚13由于内部串联了一个LED并焊接了一个限流电阻,所以该引脚比其他引脚更不易用来实现数字输入功能。如果将数字引脚13设置为输入上拉(INPUT_PULLUP)模式,该引脚将会悬在1.7伏特而不是正常的高电平5伏特。如果必须使用引脚13做为数字输入,请将该引脚配合外部下拉电阻使用。
示例代码
/*
digitalWrite()示例程序
v1.0
Created 2016
by 太极创客
www.taichi-maker.com
This example code is in the public domain.
*/
int ledPin = 13;
// 当Arduino控制器通电或复位后,setup函数会运行一次
void setup()
{
// 将引脚13设置为输出(OUTPUT)模式
pinMode(ledPin, OUTPUT);
}
// 当Arduino控制器通电或复位后,loop函数会反复运行
void loop()
{
digitalWrite(ledPin, HIGH); // 引脚13高电平,点亮LED
delay(1000); // 等待1秒
digitalWrite(ledPin, LOW); // 引脚13底电平,关闭LED
delay(1000); // 等待1秒
}
delay()
delay()
说明
delay()函数可用于暂停程序运行。暂停时间可以由delay()函数的参数进行控制,单位是毫秒(1秒钟=1000毫秒)。
语法
delay(ms)
参数
ms: 暂停时间,该时间单位是毫秒( unsigned long型数据)
返回值
无
示例程序
Arduino
int ledPin = 13; // Arduino Uno引脚13接有LED
void setup()
{
pinMode(ledPin, OUTPUT); // 将LED连接引脚设置为输出模式
}
void loop()
{
digitalWrite(ledPin, HIGH); // 点亮LED
delay(1000); // 等待一秒钟(1000毫秒)
digitalWrite(ledPin, LOW); // 熄灭LED
delay(1000); // 等待一秒钟(1000毫秒)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
int ledPin = 13; // Arduino Uno引脚13接有LED
void setup()
{
pinMode(ledPin, OUTPUT); // 将LED连接引脚设置为输出模式
}
void loop()
{
digitalWrite(ledPin, HIGH); // 点亮LED
delay(1000); // 等待一秒钟(1000毫秒)
digitalWrite(ledPin, LOW); // 熄灭LED
delay(1000); // 等待一秒钟(1000毫秒)
}
LED
LED灯珠工作电流:20mA
工作时,LED产生2v左右的电压降
仿真软件
面包板
一般上下两行是接电源用。
arduino数字输入
arduino的引脚设置为数字输入(INPUT)状态时可以识别两种状态:
HIGH(高电平)
LOW(低电平)
根据上述内容做了一个合集
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the Serial Monitor
This example code is in the public domain.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/DigitalReadSerial
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
pinMode(5, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1); // delay in between reads for stability
if(buttonState==1)
{
digitalWrite(5, LOW);
}
else
{
digitalWrite(5,HIGH);
}
}
叨叨几句... NOTHING