บทที่ 98-2: วิธีเปิดและปิด LED โดยใช้ปุ่มกดกับ Arduino
โปรเจกต์นี้แสดงวิธีควบคุม LED ด้วยปุ่มกดโดยใช้ Arduino แทนที่จะให้ LED กะพริบเอง คุณเป็นคนตัดสินใจว่าเมื่อไหร่มันจะติด: กดปุ่มค้างไว้ LED จะติด ปล่อยปุ่ม LED จะดับ นี่คือก้าวต่อไปตามธรรมชาติหลังจากสเก็ตช์กะพริบธรรมดา เพราะมันแนะนำแนวคิดสองอย่างที่ปรากฏในเกือบทุกโปรเจกต์ Arduino ที่คุณจะสร้าง — การอ่านอินพุตดิจิทัล และการใช้ อินพุตนั้นเพื่อตัดสินใจในโค้ด
คุณค่าที่แท้จริงตรงนี้คือการเรียนรู้ว่าไมโครคอนโทรลเลอร์รับรู้โลกทางกายภาพได้อย่างไร ปุ่มกดเป็นอุปกรณ์อินพุตของมนุษย์ที่เรียบง่ายที่สุดที่มี แต่รูปแบบเดียวกัน — อ่านอินพุต ทดสอบเงื่อนไข ขับเคลื่อนเอาต์พุต — ก็เป็นวิธีเดียวกับที่คุณจะอ่านลิมิตสวิตช์บนเครื่องพิมพ์ 3D ตรวจจับการเปิดประตูในระบบรักษาความปลอดภัย หรือสตาร์ทมอเตอร์จากแผงควบคุม เมื่อคุณเข้าใจวงจรนี้แล้ว คุณสามารถเปลี่ยน LED เป็นอะไรก็ได้เกือบทั้งหมด
นี่คือสิ่งปฏิบัติที่คุณสามารถสร้างได้ด้วยเทคนิคเดียวกัน:
- กริ่งประตูหรือปุ่มเรียกแบบกดชั่วขณะที่เปิดโคมไฟขณะกด
- "สวิตช์คนตาย" ที่จ่ายไฟให้รีเลย์ (และสิ่งที่มันจ่ายไฟให้) ทำงานเฉพาะขณะกดปุ่มเท่านั้น
- ปุ่มทดสอบแบบแมนนวลสำหรับเครื่องจักร โดยมี LED ตัวบ่งชี้ยืนยันว่าอินพุตถูกรับรู้
- ปุ่มสตาร์ทสำหรับไดรเวอร์มอเตอร์หรือปั๊ม โดย LED ทำหน้าที่เป็นไฟสถานะ
- กริ่งเกมง่ายๆ ที่ผู้เล่นคนแรกที่กดชนะ และ LED ประกาศผู้ชนะ
- ปุ่มคาลิเบรตหรือ "เรียนรู้" บนโปรเจกต์เซ็นเซอร์ที่ติดสว่างขณะโหมดทำงานอยู่
ฮาร์ดแวร์และส่วนประกอบ
รายการชิ้นส่วนตั้งใจให้มีน้อยชิ้น ซึ่งเป็นเหตุผลว่าทำไมมันจึงเป็นโปรเจกต์อินพุตแรกที่ยอดเยี่ยม:
- บอร์ด Arduino — Uno, Nano, Mega หรือบอร์ดที่เข้ากันได้
- LED หนึ่งตัว ขนาด 5 มม. หรือ 3 มม. สีใดก็ได้
- ตัวต้านทานหนึ่งตัวสำหรับ LED ตั้งแต่ 200 Ω ถึง 1000 Ω
- สวิตช์ปุ่มกดแบบกดชั่วขณะหนึ่งตัว
- เบรดบอร์ดและสายจัมเปอร์ DuPont
หากคุณสงสัยว่าทำไมต้องใช้ตัวต้านทาน วิดีโอจะอธิบายการคำนวณ (ในวิดีโอที่ 03:49) LED ทั่วไปจะตกคร่อมตัวเองประมาณ 2 V และต้องการกระแสประมาณ 10 mA ด้วยแหล่งจ่าย 5 V อีก 3 V ที่เหลือต้องถูกตกคร่อมโดยตัวต้านทาน ดังนั้นกฎของโอห์มให้ R = 3 V / 0.01 A = 300 Ω ค่าใดก็ได้ตั้งแต่ 300 Ω ขึ้นไปถึงประมาณ 1000 Ω จะใช้ได้ — ยิ่งค่าสูง LED ยิ่งสว่างน้อยลง แต่ปลอดภัยและมีประสิทธิภาพมากขึ้น กระแสไม่ใช่เรื่องวิกฤต คุณเพียงแลกความสว่างกับการดึงกระแสที่ต่ำลง
คู่มือการต่อสาย
วงจรนี้เป็นวงจร LED เดียวกับที่คุณใช้ในสเก็ตช์กะพริบ โดยเพิ่มปุ่มกดเข้าไป ขาอาโนดของ LED (ขาที่ยาวกว่า) เชื่อมต่อผ่านตัวต้านทานไปยังขา 3 ของ Arduino และขาแคโทด (ขาที่สั้นกว่า ซึ่งมีเครื่องหมายเป็นด้านแบนของขอบพลาสติก) ต่อลงกราวด์ ปุ่มกดเชื่อมต่อระหว่างขา 2 และกราวด์
รายละเอียดหนึ่งที่ควรรู้: ปุ่มกดมีสี่ขา แต่ภายในจับคู่กันอยู่ สองขาจะเชื่อมต่อถึงกันอย่างถาวร และอีกสองขาก็เชื่อมต่อถึงกันอย่างถาวร — การกดปุ่มจะเชื่อมทั้งสองคู่เข้าด้วยกัน หากคุณมีมัลติมิเตอร์ ให้ใช้โหมดความต่อเนื่อง (เสียงบี๊บ) เพื่อหาว่าขาใดเชื่อมต่อกันอยู่แล้วเมื่อไม่ได้กดปุ่ม สองขานั้นคือคู่ที่คุณไม่ควรใช้ เลือกหนึ่งขาจากแต่ละคู่ที่เป็นอิสระต่อกัน (ในวิดีโอที่ 07:50)
โค้ดทำงานอย่างไร
สเก็ตช์นั้นสั้น และเกือบทั้งหมดเป็นการตั้งค่าที่คุณปรับได้ สามบรรทัดด้านบนคือบรรทัดที่คุณจะแตะจริงๆ:
const int pushButtonPin = 2;//define a pin number for push button
const int LEDPin = 3;//define a pin that is connected to LED
const int delayLED = 0;//how long the LED should stay ON
pushButtonPin คือขาดิจิทัลที่ปุ่มต่ออยู่ เปลี่ยนค่านี้หากคุณย้ายปุ่มไปขาอื่น — เพียงจำไว้ว่าต้องย้ายสายจริงให้ตรงกันด้วย
LEDPin คือขาที่ขับ LED ขาดิจิทัลใดก็ได้ แต่พึงระลึกว่าขา 0 และ 1 ถูกใช้โดยการเชื่อมต่ออนุกรม ดังนั้นจึงควรหลีกเลี่ยง
delayLED เป็นการตั้งค่าที่น่าสนใจที่สุด โดยควบคุมว่า LED จะติดค้างไว้นานเท่าใดหลังจากคุณปล่อยปุ่ม โดยวัดเป็นมิลลิวินาที การตั้งค่าเป็น 0 หมายความว่า LED จะดับทันทีที่คุณยกนิ้วขึ้น การตั้งค่าเป็น 1000 จะทำให้ LED ติดค้างไว้หนึ่งวินาทีเต็มหลังจากปล่อย และ 5000 จะทำให้ติดค้างไว้ห้าวินาที (ในวิดีโอที่ 16:31) ตัวเลขเพียงตัวเดียวนี้เปลี่ยนความรู้สึกของโปรเจกต์ไปโดยสิ้นเชิง และเป็นวิธีที่ดีในการดูว่าตัวแปรในโค้ดแปลงเป็นพฤติกรรมที่คุณสังเกตได้โดยตรงอย่างไร
มีอีกสองสิ่งในการตั้งค่าที่น่าสังเกต ประการแรก ขาพินของปุ่มถูกกำหนดค่าด้วย INPUT_PULLUP แทนที่จะเป็น INPUT ธรรมดา:
pinMode(pushButtonPin, INPUT_PULLUP);//define a pin for push button switch
การทำเช่นนี้เปิดใช้งานตัวต้านทาน pull-up ภายในของ Arduino ซึ่งจะรักษาขาพินให้อยู่ในระดับ HIGH ที่เสถียรเมื่อไม่ได้กดปุ่ม หากไม่มีมัน ขาอินพุตที่ลอยอยู่อาจรับสัญญาณรบกวนทางไฟฟ้าและให้ค่าที่สุ่ม และคุณจะต้องใช้ตัวต้านทานภายนอกเพื่อแก้ไข เมื่อเปิดใช้งาน pull-up ภายใน การเดินสายก็ยังคงเรียบง่าย: ข้างหนึ่งของปุ่มต่อกับขาพิน อีกข้างต่อกับกราวด์ เมื่อคุณกดปุ่ม ขาพินจะถูกดึงลงกราวด์และอ่านค่าได้เป็น LOW (ในวิดีโอที่ 14:08)
ประการที่สอง serial monitor ถูกเริ่มต้นที่ 9600 baud เพื่อให้คุณสามารถดูการเปลี่ยนแปลงสถานะขณะที่มันเกิดขึ้น:
Serial.begin(9600);//initialize the serial monitor
Serial.println("Robojax LED with push button");//print this text on Serial Monitor
ในลูปหลัก ตรรกะเป็นเพียง if/else ง่าย ๆ โค้ดจะอ่านขาพินของปุ่มและเปรียบเทียบกับ LOW หากกดปุ่ม ขาพินของ LED จะเป็น HIGH ข้อความ "LED ON" จะถูกพิมพ์ และสเก็ตช์จะรอเป็นเวลา delayLED มิลลิวินาที หากไม่ได้กดปุ่ม ขาพินของ LED จะเป็น LOW และ LED จะดับ เนื่องจาก loop() ทำงานซ้ำแล้วซ้ำเล่า การตรวจสอบนี้จึงเกิดขึ้นหลายพันครั้งต่อวินาที การตอบสนองจึงรู้สึกได้ทันที
การสาธิตสด
เมื่อตั้งค่า delayLED เป็น 1000 การกดปุ่มจะทำให้ LED ติดสว่างและติดค้างไว้หนึ่งวินาทีหลังจากคุณปล่อย ลดค่าเป็น 5000 แล้ว LED จะติดค้างไว้ห้าวินาที — นานพอที่คุณจะเดินออกห่างจากปุ่มแล้วยังเห็นมันติดอยู่ ตั้งค่าเป็น 0 แล้ว LED จะตามนิ้วของคุณอย่างแม่นยำ: กด ติด; ปล่อย ดับ (ในวิดีโอที่ 17:02)
เมื่ออัปโหลดโค้ดแล้ว คุณสามารถถอด Arduino ออกจาก USB และจ่ายไฟจากแบตเตอรี่หรืออะแดปเตอร์ 5 V บอร์ดไม่จำเป็นต้องใช้คอมพิวเตอร์ในการทำงาน — โปรแกรมถูกเก็บไว้ในหน่วยความจำและเริ่มทำงานโดยอัตโนมัติทุกครั้งที่เปิดเครื่อง (ในวิดีโอที่ 12:27)
หากคุณต้องการให้ LED ติดค้างไว้หลังกดครั้งเดียวและดับเมื่อกดครั้งถัดไป นั่นเป็นพฤติกรรมที่แตกต่างออกไปเรียกว่าการสลับ (toggling) ซึ่งครอบคลุมอยู่ใน บทเรียน 98-3: วิธีเปิด/ปิด LED แบบสลับโดยใช้ปุ่มกดกับ Arduino การเดินสายของปุ่มกดเหมือนกันทุกประการ ดังนั้นคุณสามารถใช้วงจรนี้ซ้ำได้เลย
โปรเจกต์ที่เกี่ยวข้องจากวิดีโอนี้
- บทเรียน 98-1: วิธีเปิดและปิด LED ด้วย Arduino
- บทเรียน 98-3: วิธีเปิด/ปิด LED แบบสลับโดยใช้ปุ่มกดกับ Arduino
- บทเรียน 98-4: การทำ LED ค่อย ๆ สว่างและหรี่ลงด้วย Arduino: การควบคุมความสว่าง
- บทเรียน 98-5: การทำแสงค่อย ๆ หรี่ลงเมื่อกดปุ่มโดยใช้ Arduino
- บทเรียน 98-6: เกม LED กระดานหกกับ Arduino
- บทเรียน 98-7: ไฟวิ่งโดยใช้ Arduino และ LED 5 ดวง
- บทเรียน 98-8: ไฟวิ่งพร้อมปุ่มกดและ LED กับ Arduino
- บทเรียน 98-9: มิเตอร์วัดระดับแรงดัน LED โดยใช้ Arduino หรือไฟวิ่งพร้อมโพเทนชิโอมิเตอร์
- บทเรียน 98-10: ไฟจราจร Arduino
บทต่าง ๆ
- [00:00] ภาพรวมของ 10 โปรเจกต์ในวิดีโอนี้
- [01:00] แนะนำหลักสูตร Arduino แบบทีละขั้นตอน
- [02:29] LED คืออะไร: สัญลักษณ์ ขั้วบวก ขั้วลบ และรูปร่างทางกายภาพ
- [03:49] การคำนวณตัวต้านทาน LED ด้วยกฎของโอห์ม
- [07:32] การเดินสาย LED และปุ่มกดบนเบรดบอร์ด
- [08:50] อธิบายโค้ด: ขาพิน การตั้งค่า และลูปหลัก
- [12:43] สวิตช์ปุ่มกดทำงานอย่างไร
- [13:22] การเดินสายปุ่มกดไปยังพิน 2 และกราวด์
- [13:43] อธิบายโค้ดทีละบรรทัด: INPUT_PULLUP และการอ่านค่าปุ่ม
- [16:14] การสาธิต: เปลี่ยน delayLED จาก 1 วินาที เป็น 5 วินาที เป็น 0
- [19:52] การประยุกต์ใช้ในทางปฏิบัติของการสลับด้วยปุ่มกด
ภาพ
This code has not been parsed yet. Please return to the admin panel to parse it.
สิ่งที่คุณอาจต้องการ
-
อเมซอนSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
อเมซอน
-
อเมซอน
-
อเมซอน
แหล่งข้อมูลและเอกสารอ้างอิง
-
เอกสารDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ภายนอก
-
ภายนอก
-
ภายนอก
ไฟล์📁
ไลบรารี Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
คู่มือผู้ใช้
-
คู่มือการประกอบรถอัจฉริยะ SunFounder 3-in-1 Arduino Smart Carเอกสารนี้แสดงการประกอบ SunFounder 3-in-1 Arduino Smart Car ทีละขั้นตอน
SunFounder_car_assembly_manual.pdf1.20 MB