【雕爷学编程】Arduino 手册之数字 I/O pinMode()

在这里插入图片描述
在这里插入图片描述
什么是Arduino?
Arduino 是一款开源的电子原型平台,它可以让你用简单的硬件和软件来创建各种创意的项目。无论你是初学者还是专家,Arduino 都能为你提供无限的可能性。你可以用 Arduino 来控制传感器、灯光、马达、机器人、物联网设备等等,只要你能想到的,Arduino 都能帮你实现。

如果你想了解更多关于 Arduino 的信息,你可以访问 Arduino 的官方网站,那里有丰富的资源和教程供你参考。你也可以加入 Arduino 的社区,和来自世界各地的爱好者、学生、设计师和工程师交流心得和经验。此外,你还可以使用 Arduino 的在线编程工具,在云端编写代码并上传到你的开发板上。

Arduino 是一个不断发展和创新的平台,它有着广泛的应用领域和潜力。这里希望本手册能激发你对 Arduino 的兴趣和热情,让你享受 Arduino 带来的创造力和乐趣

在这里插入图片描述

维基百科的定义
Arduino 是一个开源嵌入式硬件平台,用来供用户制作可交互式的嵌入式项目。此外 Arduino 作为一个开源硬件和开源软件的公司,同时兼有项目和用户社群。该公司负责设计和制造Arduino电路板及相关附件。这些产品按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)许可的开源硬件和软件分发的,Arduino 允许任何人制造 Arduino 板和软件分发。 Arduino 板可以以预装的形式商业销售,也可以作为 DIY 套件购买。

Arduino 2005 年时面世,作为意大利伊夫雷亚地区伊夫雷亚互动设计研究所的学生设计,目的是为新手和专业人员提供一种低成本且简单的方法,以建立使用传感器与环境相互作用的装置。初学者和爱好者可用Arduino制造传感器、简单机器人、恒温器和运动检测器等装置。

Arduino 这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人过去常常会去这家酒吧。 酒吧以伊夫雷亚的 Arduin(Arduin of Ivrea)命名,他是伊夫雷亚边疆伯爵,也是 1002 年至 1014 年期间的意大利国王。

在这里插入图片描述

十三、Arduino数字 I/O pinMode()

Arduino数字 I/O pinMode()是一种用于设置数字引脚的模式的函数。pinMode()的作用是让Arduino知道该引脚是用于输入还是输出,以及是否启用内部上拉电阻。这样可以实现一些基本的数字信号的读取或控制,例如开关、按钮、LED灯等。

pinMode()的应用场景有以下几种:
1)当需要将一个数字引脚设为输出模式时,例如控制LED灯、蜂鸣器、继电器等。
2)当需要将一个数字引脚设为输入模式时,例如读取开关、按钮、霍尔传感器等。
3)当需要将一个数字引脚设为输入模式,并启用内部上拉电阻时,例如读取没有外部上拉或下拉电阻的开关、按钮等。

使用pinMode()时,需要注意以下事项:
1)pinMode()函数的第一个参数是要设置的数字引脚的编号,可以是0到13,也可以是A0到A5(表示模拟引脚)。第二个参数是要设置的模式,可以是OUTPUT(输出模式)、INPUT(输入模式)或INPUT_PULLUP(输入模式并启用内部上拉电阻)。
2)pinMode()函数通常在setup()函数中调用,以便在程序开始时就确定好各个引脚的模式。如果在loop()函数中调用pinMode()函数,可能会导致程序运行不稳定或不可预测。
3)如果将一个数字引脚设为输出模式,并向其写入高电平或低电平,那么该引脚会产生5伏或0伏的电压。如果将一个数字引脚设为输入模式,并从其读取高电平或低电平,那么该引脚会检测是否有大于3伏或小于1.5伏的电压。如果将一个数字引脚设为输入模式并启用内部上拉电阻,那么该引脚会默认读取高电平,除非有外部电路将其拉低至接近0伏。

以下是Arduino数字 I/O pinMode()的几个实际运用程序案例:

案例一:使用pinMode()实现LED灯的控制

void setup() {
  // 将13号引脚设为输出模式,用于控制LED灯
  pinMode(13, OUTPUT);
}

void loop() {
  // 将13号引脚设为高电平,即点亮LED灯
  digitalWrite(13, HIGH);
  // 等待一秒
  delay(1000);
  // 将13号引脚设为低电平,即熄灭LED灯
  digitalWrite(13, LOW);
  // 等待一秒
  delay(1000);
}

案例二:使用pinMode()实现按钮的读取

void setup() {
  // 将2号引脚设为输入模式,并启用内部上拉电阻,用于读取按钮
  pinMode(2, INPUT_PULLUP);
}

void loop() {
  // 定义一个局部变量buttonState,表示按钮的状态,并从2号引脚读取
  int buttonState = digitalRead(2);
  
  // 如果按钮被按下,则在串口监视器上打印"Button pressed"
  if (buttonState == LOW) {
    Serial.println("Button pressed");
  }
}

案例三:使用pinMode()实现霍尔传感器的检测

void setup() {
  // 将3号引脚设为输入模式,用于读取霍尔传感器
  pinMode(3, INPUT);
}

void loop() {
  // 定义一个局部变量hallState,表示霍尔传感器的状态,并从3号引脚读取
  int hallState = digitalRead(3);
  
  // 如果霍尔传感器检测到磁场,则在串口监视器上打印"Magnetic field detected"
  if (hallState == HIGH) {
    Serial.println("Magnetic field detected");
  }
}

案例四:控制LED灯:

const int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);  // 将引脚设置为输出模式
}

void loop() {
  digitalWrite(ledPin, HIGH);  // 将引脚输出高电平,点亮LED
  delay(1000);  // 延迟1秒
  digitalWrite(ledPin, LOW);  // 将引脚输出低电平,熄灭LED
  delay(1000);  // 延迟1秒
}

在这个案例中,通过将引脚13设置为输出模式(pinMode(ledPin, OUTPUT)),可以控制连接到该引脚的LED灯。digitalWrite()函数用于将引脚输出高电平或低电平,从而点亮或熄灭LED。

案例五:读取按钮状态:

const int buttonPin = 2;

void setup() {
  pinMode(buttonPin, INPUT);  // 将引脚设置为输入模式
  Serial.begin(9600);  // 初始化串口通信
}

void loop() {
  int buttonState = digitalRead(buttonPin);  // 读取按钮引脚状态

  if (buttonState == HIGH) {
    Serial.println("Button pressed");
  } else {
    Serial.println("Button released");
  }

  delay(500);  // 延迟0.5秒
}

在这个案例中,通过将引脚2设置为输入模式(pinMode(buttonPin, INPUT)),可以读取连接到该引脚的按钮的状态。digitalRead()函数用于读取引脚的状态(高电平或低电平)。通过使用串口通信,可以将按钮的状态打印到串口监视器上。

案例六:驱动舵机:

#include <Servo.h>

const int servoPin = 9;
Servo myservo;

void setup() {
  myservo.attach(servoPin);  // 将引脚连接到舵机对象
  pinMode(servoPin, OUTPUT);  // 将引脚设置为输出模式
}

void loop() {
  myservo.write(90);  // 将舵机转动到90度位置
  delay(1000);  // 延迟1秒

  myservo.write(0);  // 将舵机转动到0度位置
  delay(1000);  // 延迟1秒
}

在这个案例中,通过将引脚9连接到舵机对象(myservo.attach(servoPin)),可以控制舵机的位置。pinMode(servoPin, OUTPUT)将引脚设置为输出模式。myservo.write()函数用于控制舵机转动到指定的角度。通过调整参数,可以控制舵机在不同的位置旋转。

案例七:设置针脚A0为输入模式,读取模拟值:

int sensorPin = A0;

void setup() {
  pinMode(sensorPin, INPUT); 
}

void loop() {
  int sensorValue = analogRead(sensorPin);
}

案例八:设置针脚2~7为输入模式,同时读取状态:

int pins[] = {2, 3, 4, 5, 6, 7};

void setup() {
  for(int i=0; i<6; i++) {
    pinMode(pins[i], INPUT); 
  }
}

void loop() {
  for(int i=0; i<6; i++) {
    bool state = digitalRead(pins[i]);
  }  
}

总结:
pinMode()函数在Arduino中用于设置数字I/O引脚的工作模式。它可以设置引脚为输入模式或输出模式,从而实现不同的功能。在控制LED灯、读取按钮状态和驱动舵机等场景下,pinMode()是一个常用的函数。通过合理设置引脚的工作模式,可以实现各种有趣的交互和控制功能。

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值