ปุ่มกด: วิธีใช้องค์ประกอบง่ายๆนี้กับ Arduino

ปุ่ม

Un ปุ่มกดคือปุ่มที่ให้คุณขัดจังหวะหรือส่งสัญญาณอิเล็กทรอนิกส์. ด้วยองค์ประกอบที่เรียบง่ายนี้รวมกับองค์ประกอบอื่น ๆ คุณสามารถสร้างโครงการสำหรับแอปพลิเคชันจำนวนมากได้ การใช้ปุ่มกดประเภทนี้เป็นเรื่องปกติมากเมื่อพูดถึงโปรเจ็กต์กับ Arduino และด้วยการรวมปุ่มเหล่านี้หลายปุ่มเข้าด้วยกันคุณสามารถสร้างคีย์บอร์ดที่ค่อนข้างซับซ้อนได้แม้ว่าจะมีคีย์บอร์ดที่ตั้งโปรแกรมได้สำหรับการใช้งานเหล่านี้แล้วก็ตาม

โดยวิธีการ คุณไม่ควรสับสนกับปุ่มกดกับสวิตช์. พวกเขาเป็นสิ่งที่แตกต่างกันโดยสิ้นเชิง ความแตกต่างคือสวิตช์หรือสวิตช์ถูกเปิดใช้งานหรือปิดการใช้งานด้วยการกดแต่ละครั้งที่ทำ ในขณะที่ปุ่มกดจะอยู่ในสถานะเดียวในขณะที่มีการออกแรงกด ฉันได้แสดงความคิดเห็นว่าสามารถส่งหรือขัดจังหวะได้นั่นเป็นเพราะปุ่มพื้นฐานมีสองประเภท

สัญลักษณ์ปุ่มกด

มี ไม่มีหรือปกติเปิดปุ่มกดและ NC หรือปุ่มกดปิดตามปกติ. นอกจากนี้ยังจะส่งเสียงจากรีเลย์ด้วย และใช่มันเป็นการทำงานเดียวกันทุกประการ เมื่อคุณมี NC มันจะปล่อยให้กระแสไหลผ่านขั้วของมันและมันจะขัดจังหวะในขณะที่คุณกดเท่านั้น ในทางกลับกัน NA จะไม่ปล่อยให้กระแสไหลผ่านเมื่อไม่ได้ออกแรงกดและจะปล่อยให้มันผ่านไปก็ต่อเมื่อคุณกดเท่านั้น

รู้ว่า, เป็นเกือบทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับปุ่มกด เพื่อเริ่มการเชื่อมต่อและการเขียนโปรแกรมของคุณโดยใช้ Arduino ความจริงก็คือมันเป็นองค์ประกอบง่ายๆที่ไม่มีอะไรจะพูดเกี่ยวกับปุ่มกดประเภทนี้อีกมาก

การรวมปุ่มกดกับ Arduino

วงจรกับ Arduino

La การเชื่อมต่อปุ่มกด การที่จะทำให้มันโต้ตอบกับ Arduino นั้นไม่ง่ายไปกว่านี้ ตัวอย่างคือแผนภาพที่คุณเห็นบนเส้นเหล่านี้ นั่นคือทั้งหมดที่ต้องใช้ในการเริ่มทดลอง แต่แน่นอนว่าด้วยรูปแบบนั้นคุณสามารถทำได้เพียงเล็กน้อย คุณจะต้องใช้จินตนาการเล็กน้อยในการตัดสินใจว่าปุ่มนั้นจะควบคุมอะไร ในความเป็นจริงถ้าคุณอ่าน hwlibre.es บ่อยๆคุณจะได้เห็นบทความบางส่วนที่เราใช้ปุ่มกด ...

วิธีเชื่อมต่อ

ดึงขึ้นและดึงลง

สิ่งหนึ่งที่คุณควรรู้คือเรื่องของการต่อต้านการตีกลับและ วิธีเชื่อมต่อปุ่มกดเหล่านี้. ก่อนอื่นเราไปที่วิธีเชื่อมต่อซึ่งคุณรู้อยู่แล้วว่าสามารถใช้กับตัวต้านทานแบบดึงขึ้นและแบบเลื่อนลง:

  • ดึงขึ้น- ด้วยการตั้งค่าตัวต้านทานนี้เมื่อกดปุ่มกดไมโครคอนโทรลเลอร์หรือ Arduino สามารถมองเห็นหรืออ่านค่าศูนย์บนพินนั้นได้ นั่นคือมันตีความว่าเป็นสัญญาณ LOW
  • ดึงลงมา: ในกรณีนี้จะตรงกันข้ามคุณสามารถอ่านหรือรับสัญญาณ 1 หรือ HIGH ผ่านพินที่เชื่อมต่อได้

อย่าสับสนกับ NC หรือ NA ซึ่งเป็นอย่างอื่นที่แตกต่างจากที่เราเคยเห็นมาก่อนหน้านี้ นี้เป็นอิสระจากอื่น ๆ ...

ป้องกันการตีกลับ

ปุ่มกดมี ผลการตีกลับ เมื่อกด นั่นคือเมื่อมีการกดหรือปล่อยสัญญาณจะมีความผันผวนของสัญญาณที่ส่งผ่านหน้าสัมผัสและอาจทำให้สัญญาณเปลี่ยนจากสถานะ HIGT เป็น LOW หรือในทางกลับกันโดยไม่ต้องการให้เกิดขึ้นจริงๆ ที่สามารถสร้างเอฟเฟกต์ที่ไม่ต้องการกับ Arduino และทำให้มันทำสิ่งแปลก ๆ เช่นเปิดใช้งานองค์ประกอบเมื่อเราต้องการปิดด้วยปุ่มกดเป็นต้น นั่นเป็นเพราะ Arduino ตีความการตีกลับราวกับว่ามีการกดมากกว่าหนึ่งครั้ง ...

ผลเสียนั้น มันมีทางออก สำหรับสิ่งนี้ต้องใช้ตัวเก็บประจุขนาดเล็กในวงจรป้องกันการตีกลับ (วิธีฮาร์ดแวร์) หรือซอฟต์แวร์ (การแก้ไขซอร์สโค้ด) ไม่ว่าจะใช้การกำหนดค่าแบบดึงขึ้นหรือแบบดึงลงหรือถ้าเป็น NC หรือ NO ในทุกกรณีเหล่านี้จะต้องดำเนินการแก้ไขเพื่อหลีกเลี่ยงการดีดกลับเหล่านี้

ตัวอย่างเช่นวงจรแบบดึงขึ้นและแบบดึงลงด้วย ตัวเก็บประจุป้องกันการตีกลับ พวกเขาจะมีลักษณะดังนี้:

รีบาวเดอร์

ในขณะที่ วิธีการซอฟต์แวร์ สามารถเห็นได้ในข้อมูลโค้ดนี้:

ถ้า (digitalRead (ปุ่ม) == ต่ำ) // ตรวจสอบว่ากดปุ่มหรือไม่
{
กด = 1; // ตัวแปรเปลี่ยนค่า
}
ถ้า (digitalRead (ปุ่ม) == สูง && กด == 1)
{
// ดำเนินการตามที่ต้องการ
กด = 0; // ตัวแปรกลับสู่ค่าเดิม
}

ตัวอย่างโครงการง่ายๆ

ป้องกันการเด้งด้วยปุ่มกดและ Arduino

เมื่อเราได้เรียนรู้หัวข้อวิธีการเชื่อมต่อปุ่มกดและวงจรป้องกันการตอบสนองแล้วเราจะเห็นตัวอย่างที่ใช้ได้จริงในการ ควบคุม 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 (พิน) == สูง);

}


5 ความคิดเห็นฝากของคุณ

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ภาพแทนของ Marcelo Castillo dijo

    เย็น!!! ขอบคุณมากฉันได้สร้าง CNC และในทางตรงกันข้ามปุ่มต่างๆเป็นสิ่งที่ยากที่สุดสำหรับฉันในการปรับแต่ง

  2.   ลิเลีย dijo

    หวัดดี! ผมปรึกษาในฐานะมือใหม่ในการเชื่อมต่อกับ GND … .. สายสีดำไม่ควรหลุดออกมาจากเส้นลบซึ่งอยู่เหนือเส้นที่แสดงในแผนภาพ 2?

  3.   จอห์น dijo

    คำอธิบายที่ยอดเยี่ยม .. สองสามปีก่อนฉันทำโครงการจุดระเบิดรถยนต์และความจริงก็คือฉันไม่สามารถทำการกดแป้นที่ถูกต้องได้สำหรับการจุดระเบิด .. ฉันจะลองวิธีนี้ฉันขอขอบคุณมากสำหรับความช่วยเหลือที่ดีนี้

  4.   โอมาร์ โรเมโร รินคอน dijo

    สวัสดี ฉันกำลังทำโปรเจ็กต์ที่มีปุ่มสามปุ่มและไฟ LED 5 ดวงที่มีลำดับดังต่อไปนี้
    ปุ่มกด 1 อันส่งสัญญาณไปที่ LED 2 ดวงซึ่งฉันเรียกว่า 1 และ 2
    ปุ่มกดที่สองส่งสัญญาณไปยัง LED 3 ดวง เรียกว่า 2,3 และ 4
    ปุ่มกดที่สามของฉันส่งสัญญาณไปยัง LED อีก 3 ดวงที่เรียกว่า 3,4, 5 และ XNUMX

    ผมจัดการลำดับนั้นได้แล้ว มีปัญหาอย่างเดียว เวลากด 2 ปุ่ม มันส่งสัญญาณเท็จไปยัง LED ที่ควรติดทำให้ไฟกะพริบเป็นช่วงๆ ผมควบคุมมันด้วยการหน่วงเวลาไว้ (ประมาณ 2 วินาที ซึ่งเป็นสิ่งที่ฉันต้องการเพื่อให้ไฟ LED ติดสว่างและดับลง คำถามของฉันคือ ฉันจะใส่ฟังก์ชันมิลลิวินาทีลงในโปรแกรมได้อย่างไร ฉันไม่เข้าใจว่ามิลลิวินาทีทำงานอย่างไร ฉันอยากรู้ว่าคุณช่วยฉันได้ไหม ทำตัวอย่างสำหรับปุ่ม 3 ปุ่มโดยใช้มิลลิวินาทีในแต่ละปุ่ม ฉันต้องการมิลลิวินาทีเพื่อให้สามารถกดปุ่มได้ทุกเมื่อโดยไม่ทำให้ Arduino ล่าช้า

    1.    ไอแซก dijo

      สวัสดีคุณโอมาร์
      ฉันแนะนำให้คุณดูบทช่วยสอน Arduino ของเรา:
      https://www.hwlibre.com/programacion-en-arduino/
      และคุณยังสามารถดูบทความของเราเกี่ยวกับมิลลิวินาที ():
      https://www.hwlibre.com/millis-arduino/
      คำอวยพร