使用Arduino Uno数字读写

Digital Read and Write Using the Arduino Uno

Arduino Uno提供了使用其数字引脚与现实世界进行交互的能力。您可以使用这些引脚来控制LED,电动机和继电器等设备,或者从传感器,按钮和开关中读取输入。本教程将说明如何设置数字别针,执行读写操作并利用 if 您项目中基于逻辑的决策的语句。


你需要什么

  1. 带有USB电缆的Arduino Uno
  2. LED和220-OHM电阻(用于输出示例)
  3. 按钮和10k-Ohm电阻(用于输入示例)
  4. 面包板和跳线电线
  5. 安装了带有Arduino IDE的计算机

步骤1:设置数字别针

数字销模式

Arduino Uno有14个数字引脚(D0-D13)。这些引脚可以配置为:

  • 输入: 从传感器或开关读取信号。
  • 输出: 控制LED,电动机或其他执行器。

使用 pinMode() 功能以设置PIN的模式 setup() 功能:

pinMode(pinNumber, mode);
  • pinNumber:您要配置的引脚(例如2、3等)。
  • mode: 任何一个 INPUT, INPUT_PULLUP, 或者 OUTPUT.

步骤2:写入数字别针

您可以通过写作来控制设备 HIGH 或者 LOW 使用输出引脚使用 digitalWrite() 功能:

digitalWrite(pinNumber, value);
  • value: 任何一个 HIGH (5V)或 LOW (0V)。

示例:眨眼LED

这是眨眼连接到引脚13的LED的方法:

#define ledPin 13 // LED connected to pin 13

void setup() {
  pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}

void loop() {
  digitalWrite(ledPin, HIGH); // Turn the LED on
  delay(1000);               // Wait for 1 second
  digitalWrite(ledPin, LOW);  // Turn the LED off
  delay(1000);               // Wait for 1 second
}

步骤3:从数字别针阅读

要阅读PIN的状态,请使用 digitalRead() 功能:

int state = digitalRead(pinNumber);
  • state:将是 HIGH 或者 LOW 基于输入信号。

示例:读取按钮按下

将按钮与下拉电阻(10k-Ohm)连接到2引脚2。按下时,按钮将发送 HIGH 信号。

#define buttonPin 2 // Button connected to pin 2
#define ledPin 13   // LED connected to pin 13

void setup() {
  pinMode(buttonPin, INPUT); // Set pin 2 as an input
  pinMode(ledPin, OUTPUT);   // Set pin 13 as an output
}

void loop() {
  int buttonState = digitalRead(buttonPin); // Read the button state

  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH); // Turn on the LED if the button is pressed
  } else {
    digitalWrite(ledPin, LOW); // Turn off the LED otherwise
  }
}

步骤4:使用 if 用数字别针的陈述

if 语句允许您在程序中创建有条件的逻辑。结合数字读取和写作以根据输入执行操作。

示例:切换LED按钮按下

每次按下按钮时,此草图都会切换LED状态:

#define buttonPin 2 // Button connected to pin 2
#define ledPin 13   // LED connected to pin 13

bool ledState = false; // Current state of the LED
bool lastButtonState = LOW; // Previous state of the button

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  bool currentButtonState = digitalRead(buttonPin);

  if (currentButtonState == HIGH && lastButtonState == LOW) {
    ledState = !ledState; // Toggle the LED state
    digitalWrite(ledPin, ledState ? HIGH : LOW);
  }

  lastButtonState = currentButtonState; // Update the button state
  delay(50); // Debounce delay
}

步骤5:具有逻辑操作的高级用法

您可以使用多个 if 陈述, else if和逻辑运营商(&&, ||等等))创建更复杂的行为。

示例:多输入控件

根据两个按钮的状态控制LED:

#define button1 2 // Button 1 connected to pin 2
#define button2 3 // Button 2 connected to pin 3
#define ledPin 13 // LED connected to pin 13

void setup() {
  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  bool button1State = digitalRead(button1);
  bool button2State = digitalRead(button2);

  if (button1State == HIGH && button2State == HIGH) {
    digitalWrite(ledPin, HIGH); // Turn on LED if both buttons are pressed
  } else {
    digitalWrite(ledPin, LOW); // Turn off LED otherwise
  }
}

故障排除

  • LED没有点亮:

    • 确保正确连接LED(长腿到正销)。
    • 使用220欧姆电阻器以避免损坏。
  • 按钮不响应:

    • 检查与下拉或上拉电阻的正确接线。
    • 验证Pinmode设置为 INPUT 或者 INPUT_PULLUP.
  • 调试问题:

    • 使用少量延迟或实施软件审核机制来处理机械按钮的信号噪声。

结论

您已经学习了如何使用Arduino Uno,配置PIN模式进行数字读写操作,并使用 if 条件逻辑的语句。这些基本技能使您能够控制各种硬件组件并创建互动式响应式项目。通过组合多个输入和输出以实现更复杂的行为,进一步实验!

发表评论

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.