ดิจิตอลอ่านและเขียนโดยใช้ Arduino Uno

Digital Read and Write Using the Arduino Uno

Arduino Uno ให้ความสามารถในการโต้ตอบกับโลกแห่งความเป็นจริงโดยใช้หมุดดิจิตอล คุณสามารถใช้พินเหล่านี้เพื่อควบคุมอุปกรณ์เช่นไฟ LED มอเตอร์และรีเลย์หรืออ่านอินพุตจากเซ็นเซอร์ปุ่มและสวิตช์ บทช่วยสอนนี้จะอธิบายวิธีการตั้งค่าพินดิจิตอลดำเนินการอ่านและเขียนและใช้ประโยชน์ if งบสำหรับการตัดสินใจตามตรรกะในโครงการของคุณ


สิ่งที่คุณต้องการ

  1. Arduino Uno พร้อมสาย USB
  2. LED และตัวต้านทาน 220 โอห์ม (สำหรับตัวอย่างเอาต์พุต)
  3. ปุ่มกดและตัวต้านทาน 10K-OHM (สำหรับตัวอย่างอินพุต)
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

ขั้นตอนที่ 1: การตั้งค่าหมุดดิจิตอล

โหมดพินดิจิตอล

Arduino Uno มี 14 หมุดดิจิตอล (D0-D13) พินเหล่านี้สามารถกำหนดค่าเป็น:

  • ป้อนข้อมูล: ในการอ่านสัญญาณจากเซ็นเซอร์หรือสวิตช์
  • เอาท์พุท: เพื่อควบคุมไฟ LED มอเตอร์หรือแอคทูเอเตอร์อื่น ๆ

ใช้ pinMode() ฟังก์ชั่นในการตั้งค่าโหมดของพินใน 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

นี่คือวิธีการกะพริบ LED ที่เชื่อมต่อกับ PIN 13:

#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: การอ่านจากพินดิจิตอล

หากต้องการอ่านสถานะของพินให้ใช้ไฟล์ digitalRead() การทำงาน:

int state = digitalRead(pinNumber);
  • state: จะเป็นอย่างใดอย่างหนึ่ง HIGH หรือ LOW ขึ้นอยู่กับสัญญาณอินพุต

ตัวอย่าง: การอ่านปุ่มกด

เชื่อมต่อปุ่มกดกับ PIN 2 ด้วยตัวต้านทานแบบดึงลง (10K-OHM) เมื่อกดปุ่มจะส่งไฟล์ 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.
  • ปัญหา debounce:

    • ใช้ความล่าช้าเล็กน้อยหรือใช้กลไกการ debounce ซอฟต์แวร์เพื่อจัดการกับสัญญาณรบกวนสัญญาณจากปุ่มกล

บทสรุป

คุณได้เรียนรู้วิธีดำเนินการอ่านและเขียนดิจิตอลด้วย 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.