Un ปุ่มกดคือปุ่มที่ให้คุณขัดจังหวะหรือส่งสัญญาณอิเล็กทรอนิกส์. ด้วยองค์ประกอบที่เรียบง่ายนี้รวมกับองค์ประกอบอื่น ๆ คุณสามารถสร้างโครงการสำหรับแอปพลิเคชันจำนวนมากได้ การใช้ปุ่มกดประเภทนี้เป็นเรื่องปกติมากเมื่อพูดถึงโปรเจ็กต์กับ Arduino และด้วยการรวมปุ่มเหล่านี้หลายปุ่มเข้าด้วยกันคุณสามารถสร้างคีย์บอร์ดที่ค่อนข้างซับซ้อนได้แม้ว่าจะมีคีย์บอร์ดที่ตั้งโปรแกรมได้สำหรับการใช้งานเหล่านี้แล้วก็ตาม
โดยวิธีการ คุณไม่ควรสับสนกับปุ่มกดกับสวิตช์. พวกเขาเป็นสิ่งที่แตกต่างกันโดยสิ้นเชิง ความแตกต่างคือสวิตช์หรือสวิตช์ถูกเปิดใช้งานหรือปิดการใช้งานด้วยการกดแต่ละครั้งที่ทำ ในขณะที่ปุ่มกดจะอยู่ในสถานะเดียวในขณะที่มีการออกแรงกด ฉันได้แสดงความคิดเห็นว่าสามารถส่งหรือขัดจังหวะได้นั่นเป็นเพราะปุ่มพื้นฐานมีสองประเภท
มี ไม่มีหรือปกติเปิดปุ่มกดและ NC หรือปุ่มกดปิดตามปกติ. นอกจากนี้ยังจะส่งเสียงจากรีเลย์ด้วย และใช่มันเป็นการทำงานเดียวกันทุกประการ เมื่อคุณมี NC มันจะปล่อยให้กระแสไหลผ่านขั้วของมันและมันจะขัดจังหวะในขณะที่คุณกดเท่านั้น ในทางกลับกัน NA จะไม่ปล่อยให้กระแสไหลผ่านเมื่อไม่ได้ออกแรงกดและจะปล่อยให้มันผ่านไปก็ต่อเมื่อคุณกดเท่านั้น
รู้ว่า, เป็นเกือบทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับปุ่มกด เพื่อเริ่มการเชื่อมต่อและการเขียนโปรแกรมของคุณโดยใช้ Arduino ความจริงก็คือมันเป็นองค์ประกอบง่ายๆที่ไม่มีอะไรจะพูดเกี่ยวกับปุ่มกดประเภทนี้อีกมาก
การรวมปุ่มกดกับ Arduino
La การเชื่อมต่อปุ่มกด การที่จะทำให้มันโต้ตอบกับ Arduino นั้นไม่ง่ายไปกว่านี้ ตัวอย่างคือแผนภาพที่คุณเห็นบนเส้นเหล่านี้ นั่นคือทั้งหมดที่ต้องใช้ในการเริ่มทดลอง แต่แน่นอนว่าด้วยรูปแบบนั้นคุณสามารถทำได้เพียงเล็กน้อย คุณจะต้องใช้จินตนาการเล็กน้อยในการตัดสินใจว่าปุ่มนั้นจะควบคุมอะไร ในความเป็นจริงถ้าคุณอ่าน hwlibre.es บ่อยๆคุณจะได้เห็นบทความบางส่วนที่เราใช้ปุ่มกด ...
วิธีเชื่อมต่อ
สิ่งหนึ่งที่คุณควรรู้คือเรื่องของการต่อต้านการตีกลับและ วิธีเชื่อมต่อปุ่มกดเหล่านี้. ก่อนอื่นเราไปที่วิธีเชื่อมต่อซึ่งคุณรู้อยู่แล้วว่าสามารถใช้กับตัวต้านทานแบบดึงขึ้นและแบบเลื่อนลง:
- ดึงขึ้น- ด้วยการตั้งค่าตัวต้านทานนี้เมื่อกดปุ่มกดไมโครคอนโทรลเลอร์หรือ Arduino สามารถมองเห็นหรืออ่านค่าศูนย์บนพินนั้นได้ นั่นคือมันตีความว่าเป็นสัญญาณ LOW
- ดึงลงมา: ในกรณีนี้จะตรงกันข้ามคุณสามารถอ่านหรือรับสัญญาณ 1 หรือ HIGH ผ่านพินที่เชื่อมต่อได้
อย่าสับสนกับ NC หรือ NA ซึ่งเป็นอย่างอื่นที่แตกต่างจากที่เราเคยเห็นมาก่อนหน้านี้ นี้เป็นอิสระจากอื่น ๆ ...
ป้องกันการตีกลับ
ปุ่มกดมี ผลการตีกลับ เมื่อกด นั่นคือเมื่อมีการกดหรือปล่อยสัญญาณจะมีความผันผวนของสัญญาณที่ส่งผ่านหน้าสัมผัสและอาจทำให้สัญญาณเปลี่ยนจากสถานะ HIGT เป็น LOW หรือในทางกลับกันโดยไม่ต้องการให้เกิดขึ้นจริงๆ ที่สามารถสร้างเอฟเฟกต์ที่ไม่ต้องการกับ Arduino และทำให้มันทำสิ่งแปลก ๆ เช่นเปิดใช้งานองค์ประกอบเมื่อเราต้องการปิดด้วยปุ่มกดเป็นต้น นั่นเป็นเพราะ Arduino ตีความการตีกลับราวกับว่ามีการกดมากกว่าหนึ่งครั้ง ...
ผลเสียนั้น มันมีทางออก สำหรับสิ่งนี้ต้องใช้ตัวเก็บประจุขนาดเล็กในวงจรป้องกันการตีกลับ (วิธีฮาร์ดแวร์) หรือซอฟต์แวร์ (การแก้ไขซอร์สโค้ด) ไม่ว่าจะใช้การกำหนดค่าแบบดึงขึ้นหรือแบบดึงลงหรือถ้าเป็น NC หรือ NO ในทุกกรณีเหล่านี้จะต้องดำเนินการแก้ไขเพื่อหลีกเลี่ยงการดีดกลับเหล่านี้
ตัวอย่างเช่นวงจรแบบดึงขึ้นและแบบดึงลงด้วย ตัวเก็บประจุป้องกันการตีกลับ พวกเขาจะมีลักษณะดังนี้:
ในขณะที่ วิธีการซอฟต์แวร์ สามารถเห็นได้ในข้อมูลโค้ดนี้:
ถ้า (digitalRead (ปุ่ม) == ต่ำ) // ตรวจสอบว่ากดปุ่มหรือไม่
{
กด = 1; // ตัวแปรเปลี่ยนค่า
}
ถ้า (digitalRead (ปุ่ม) == สูง && กด == 1)
{
// ดำเนินการตามที่ต้องการ
กด = 0; // ตัวแปรกลับสู่ค่าเดิม
}
ตัวอย่างโครงการง่ายๆ
เมื่อเราได้เรียนรู้หัวข้อวิธีการเชื่อมต่อปุ่มกดและวงจรป้องกันการตอบสนองแล้วเราจะเห็นตัวอย่างที่ใช้ได้จริงในการ ควบคุม LED ด้วยปุ่มกด. โครงการนี้ง่ายพอ ๆ กันอย่างที่คุณเห็น
เมื่อเชื่อมต่อถูกต้องแล้วสิ่งต่อไปคือการเขียน รหัสใน Arduino IDE เพื่อตั้งโปรแกรมแผงควบคุมของคุณและเริ่มทดลองใช้ปุ่มต่างๆ ตัวอย่างรหัสง่ายๆในการควบคุมวงจรของเรามีดังต่อไปนี้:
// ตัวอย่างภาพร่างเพื่อควบคุมปุ่ม
int พิน = 2;
สถานะ int;
int เร้าใจ = 0;
การตั้งค่าเป็นโมฆะ ()
{
pinMode (2, อินพุต); // หากต้องการอ่านพัลส์โดยการป้อนพินนั้น
pinMode (13, OUTPUT); // สำหรับ LED
Serial.begin (9600);
}
ห่วงเป็นโมฆะ ()
{
ถ้า (digitalRead (2) == สูง)
{
พิน = 2;
antiBounce (); // เรียกใช้ฟังก์ชันป้องกันการตีกลับ
}
}
// ซอฟต์แวร์ป้องกันการตีกลับ
โมฆะป้องกันการตีกลับ ()
{
ในขณะที่ (digitalRead (พิน) == ต่ำ);
สถานะ = digitalRead (13);
digitalWrite (13,! รัฐ);
ในขณะที่ (digitalRead (พิน) == สูง);
}
เย็น!!! ขอบคุณมากฉันได้สร้าง CNC และในทางตรงกันข้ามปุ่มต่างๆเป็นสิ่งที่ยากที่สุดสำหรับฉันในการปรับแต่ง
หวัดดี! ผมปรึกษาในฐานะมือใหม่ในการเชื่อมต่อกับ GND … .. สายสีดำไม่ควรหลุดออกมาจากเส้นลบซึ่งอยู่เหนือเส้นที่แสดงในแผนภาพ 2?
คำอธิบายที่ยอดเยี่ยม .. สองสามปีก่อนฉันทำโครงการจุดระเบิดรถยนต์และความจริงก็คือฉันไม่สามารถทำการกดแป้นที่ถูกต้องได้สำหรับการจุดระเบิด .. ฉันจะลองวิธีนี้ฉันขอขอบคุณมากสำหรับความช่วยเหลือที่ดีนี้
สวัสดี ฉันกำลังทำโปรเจ็กต์ที่มีปุ่มสามปุ่มและไฟ LED 5 ดวงที่มีลำดับดังต่อไปนี้
ปุ่มกด 1 อันส่งสัญญาณไปที่ LED 2 ดวงซึ่งฉันเรียกว่า 1 และ 2
ปุ่มกดที่สองส่งสัญญาณไปยัง LED 3 ดวง เรียกว่า 2,3 และ 4
ปุ่มกดที่สามของฉันส่งสัญญาณไปยัง LED อีก 3 ดวงที่เรียกว่า 3,4, 5 และ XNUMX
ผมจัดการลำดับนั้นได้แล้ว มีปัญหาอย่างเดียว เวลากด 2 ปุ่ม มันส่งสัญญาณเท็จไปยัง LED ที่ควรติดทำให้ไฟกะพริบเป็นช่วงๆ ผมควบคุมมันด้วยการหน่วงเวลาไว้ (ประมาณ 2 วินาที ซึ่งเป็นสิ่งที่ฉันต้องการเพื่อให้ไฟ LED ติดสว่างและดับลง คำถามของฉันคือ ฉันจะใส่ฟังก์ชันมิลลิวินาทีลงในโปรแกรมได้อย่างไร ฉันไม่เข้าใจว่ามิลลิวินาทีทำงานอย่างไร ฉันอยากรู้ว่าคุณช่วยฉันได้ไหม ทำตัวอย่างสำหรับปุ่ม 3 ปุ่มโดยใช้มิลลิวินาทีในแต่ละปุ่ม ฉันต้องการมิลลิวินาทีเพื่อให้สามารถกดปุ่มได้ทุกเมื่อโดยไม่ทำให้ Arduino ล่าช้า
สวัสดีคุณโอมาร์
ฉันแนะนำให้คุณดูบทช่วยสอน Arduino ของเรา:
https://www.hwlibre.com/programacion-en-arduino/
และคุณยังสามารถดูบทความของเราเกี่ยวกับมิลลิวินาที ():
https://www.hwlibre.com/millis-arduino/
คำอวยพร