初见arduino

发布于 2021-11-16  458 次阅读


arduino是什么

arduino是连接物联网和创客的桥梁

初始准备

官方网站

arduino官方网站

arduino软件下载安装

file

1. 进入官网,点击software
2. 选择合适的进行下载
3. 安装选择所有的依赖
4. 驱动安装点同意
5. 打开首选项进行一些基本配置

arduino IDE

file

1.工具
2.开发板型号
3.端口号

file

基本操作:
1. 编写代码)
2. 验证(编译)
3. 上传

开源硬件

file

arduino Uno R3

file

芯片旁边的白色是引脚。
开发板继承了端口的集成。

file

初始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中的函数库

file

点亮LED

file

pinMode()

file

说明
通过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()

file

将数字引脚写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

file

file

LED灯珠工作电流:20mA
工作时,LED产生2v左右的电压降

file

file

仿真软件

file

file

file

file

面包板

file

file

一般上下两行是接电源用。

arduino数字输入

file

arduino的引脚设置为数字输入(INPUT)状态时可以识别两种状态:
HIGH(高电平)
LOW(低电平)

file

file

file

file

根据上述内容做了一个合集

/*
  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);
  }
 }

file


擦肩而过的概率