การตรวจสอบสถานะของสวิตช์ (Digital Read Serial) - Arduino Basics

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ข้อมูลพื้นฐานเกี่ยวกับ Arduino นี้กล่าวถึงวิธีการใช้งานรหัสซึ่งสามารถอ่านหรือตรวจสอบสถานะเปิดหรือปิดของปุ่มกดภายนอกภายใน Arduino

อนุกรมอ่านดิจิตอล

ที่นี่เราเรียนรู้ผ่านตัวอย่างวิธีตรวจสอบสถานะของสวิตช์โดยทำการสื่อสารแบบอนุกรมผ่าน Arduino และพีซีของคุณผ่าน USB



เกินกว่าบอร์ด Arduino ของคุณคุณจะต้องมีรายการพื้นฐานดังต่อไปนี้:

ฮาร์ดแวร์

สวิตช์ปุ่มหรือสวิตช์กดเพื่อเปิดชั่วขณะ



ตัวต้านทาน 10k, 1/4 วัตต์โอห์ม

เขียงหั่นขนม
การเชื่อมต่อสายเบ็ดหรือจัมเปอร์

การทำงานของวงจร

การดำเนินการอาจทำได้ตามขั้นตอนต่อไปนี้:

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

สายที่สามใช้สำหรับเชื่อมต่อพินดิจิตอล 2 กับหนึ่งในสายนำของสวิตช์กดเพื่อเปิด

ตะกั่วพิเศษของปุ่มนี้ยังเชื่อมโยงกับตัวต้านทาน 10k แบบดึงลงกับรางจ่ายเชิงลบหรือกราวด์ ตะกั่วฟรีอื่น ๆ ของสวิตช์เชื่อมโยงกับขั้วบวกของแหล่งจ่ายไฟ 5 โวลต์

ด้วยการเชื่อมต่อข้างต้นสวิตช์จะสลับหรือดำเนินการแบบคู่ในวงจรเมื่อได้รับการผลักดัน

โดยปกติเมื่อสวิตช์อยู่ในตำแหน่งที่ถูกตัดการเชื่อมต่อผู้นำทั้งสองของมันจะอยู่แยกกันเช่นนั้นพินที่เชื่อมโยงกับกราวด์ผ่านตัวต้านทานแบบดึงลงจะแสดงผล LOW หรือระดับลอจิก 0

ในสถานการณ์ที่ถูกกดสวิตช์จะเรียกใช้การเชื่อมต่อของทั้งสองลีดชั่วขณะหนึ่งเพื่อให้โอกาสในการขายอยู่ภายใต้ + 5 โวลต์แสดงผลระดับ HIGH หรือลอจิก 1

การแยกพิน I / o ดิจิทัลออกจากสิ่งอื่น ๆ อาจบังคับให้ LED ทำงานผิดพลาดและทำให้กะพริบผิดปกติ นี่เป็นเพราะความจริงที่อินพุตไม่ได้แสดงผลกับสิ่งใดเลยหรือเก็บไว้ในตำแหน่ง 'แขวน' - หมายความว่ามันไม่ได้กำหนดให้เป็นตรรกะที่แน่นอนใด ๆ ทั้งสูงหรือต่ำ (+ 5V หรือ 0V) นี่คือเหตุผลว่าทำไมเราจึงใช้ ตัวต้านทานแบบดึงลงพร้อมสวิตช์

แผนผัง

การทำความเข้าใจรหัส

ในโปรแกรมต่อไปนี้ด้านล่างเราเริ่มต้นด้วยการสื่อสารแบบอนุกรมภายในฟังก์ชั่นการตั้งค่าที่อัตราข้อมูล 9600 บิตต่อวินาทีซึ่งเริ่มต้นระหว่างบอร์ด Arduino และคอมพิวเตอร์ที่เชื่อมต่อ: Serial.begin (9600)

ในขั้นตอนต่อไปเราจะทริกเกอร์พินดิจิทัล 2 พินที่จะรับผิดชอบต่อเอาต์พุตด้วยสวิตช์แบบพุชเป็นอินพุต: pinMode (2, INPUT) นี่เป็นการเสร็จสิ้น 'การตั้งค่า' ของเราตอนนี้เราเข้าสู่ลูปหลักของโค้ดของเรา .

ในการกดปุ่มกด 5 โวลต์จะได้รับอนุญาตให้ผ่านวงจรของเราในขณะที่พินอินพุตเชื่อมต่อกับกราวด์ผ่านตัวต้านทาน 10 กิโลโอห์มเมื่ออยู่ในสภาพที่ไม่มีการบีบอัด

ข้างต้นคือสิ่งที่เราเรียกว่าอินพุตดิจิทัลซึ่งหมายถึงสภาวะที่สวิตช์สามารถอยู่ในสถานะเฉพาะไม่ว่าจะเป็นสถานะเปิด (ยอมรับโดย Arduino เป็น '1' หรือ LOGIC HIGH) หรือสถานะปิด (แสดงภาพ โดย Arduino เป็น '0' หรือ LOGIC LOW) โดยไม่มีฐานข้อมูลอื่นใดที่ไม่ได้กำหนดไว้ระหว่างกัน

การดำเนินการพื้นฐานที่เราต้องดำเนินการในลูปหลักของโปรแกรมคือการใช้ตัวแปรเพื่อเก็บข้อมูลที่ส่งผ่านปุ่มกด

ตามที่กล่าวไว้ข้างต้นว่าสัญญาณอยู่ในรูปแบบของ '1' หรือ '0' ที่นี่เราใช้ประเภทข้อมูล int เราสามารถตั้งชื่อตัวแปรนี้ว่า sensorValue และแก้ไขให้สอดคล้องกับทุกสิ่งที่อ่านบนพินดิจิทัล 2 ทั้งหมดนี้สามารถทำได้ผ่านโค้ดบรรทัดเดียว:

int sensorValue = digitalRead (2) เมื่อ Arduino อ่านอินพุตแล้วให้พิมพ์กลับไปที่คอมพิวเตอร์ในรูปของค่าทศนิยม

สิ่งนี้สามารถนำไปใช้ได้ด้วยความช่วยเหลือของคำสั่ง Serial.println () ในบรรทัดสรุปของรหัส: Serial.println (sensorValue)

หลังจากนี้เมื่อใดก็ตามที่ Serial Monitor เริ่มต้นในโดเมน Arduino เราจะได้เห็นโซ่ '0 ระหว่างที่ปุ่มกดเปิดอยู่ในตำแหน่งเปิดและโซ่ 1 ในกรณีที่ปุ่มนั้นอยู่ในสภาพปิด

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// 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)
}
// 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
}




คู่ของ: ตัวควบคุมการไหลของน้ำที่กำหนดเองพร้อมวงจรตั้งเวลา ถัดไป: การแปลงอนาล็อกเป็นดิจิตอล (อนุกรมอ่านอนาล็อก) - พื้นฐาน Arduino