สารบัญ:

การวางตำแหน่งเซอร์โวด้วยปุ่มกด: 3 ขั้นตอน
การวางตำแหน่งเซอร์โวด้วยปุ่มกด: 3 ขั้นตอน

วีดีโอ: การวางตำแหน่งเซอร์โวด้วยปุ่มกด: 3 ขั้นตอน

วีดีโอ: การวางตำแหน่งเซอร์โวด้วยปุ่มกด: 3 ขั้นตอน
วีดีโอ: สิ่งที่ต้องรู้ก่อนใช้งานเซอร์โวมอเตอร์กับ Arduino | How to use Servo Motor with Arduino 2024, กรกฎาคม
Anonim
การวางตำแหน่งเซอร์โวด้วยปุ่มกด
การวางตำแหน่งเซอร์โวด้วยปุ่มกด

ในคำแนะนำนี้ เราจะสร้างโปรเจ็กต์ที่จะควบคุมไมโครเซอร์โวด้วยปุ่มกดที่รันด้วย Arduino Uno

วัสดุที่ใช้:

Arduino Uno

เขียงหั่นขนม

ปุ่มกด 4x4

ไมโครเซอร์โว

ขั้นตอนที่ 1: ต่อสายปุ่มกด

วางสายปุ่มกด
วางสายปุ่มกด
วางสายปุ่มกด
วางสายปุ่มกด

สิ่งแรกที่คุณต้องทำคือต่อสายไฟและรางกราวด์บนเขียงหั่นขนมของคุณจาก Arduino

  1. ต่อขา 5V เข้ากับรางจ่ายไฟ (สีแดง)
  2. ต่อกราวด์พิน (GND) กับรางกราวด์ (สีน้ำเงิน)

ตอนนี้เขียงหั่นขนมมีกำลังและต่อสายดินแล้ว เราสามารถเริ่มเดินสายส่วนประกอบของเราได้

การเดินสายปุ่มกดเป็นเรื่องง่าย แต่คุณต้องจดหมุดบนปุ่มกดและ Arduino มันจะมีประโยชน์เมื่อเราหันมาสนใจโค้ดของเรา

อย่าลืมเริ่มทางด้านซ้ายเมื่อใช้สายไฟของคุณ!

  • พินแรกไปที่13
  • พินที่สองไปที่12
  • พินที่สามไปที่11
  • พินที่สี่ไปที่10
  • พินที่ห้าถึง9
  • พินที่หกถึง8
  • พินที่เจ็ดถึง7
  • พินที่แปดถึง6

เมื่อเดินสายแผงปุ่มกด อย่าลืมเปิดหมุดดิจิตอล pwm ไว้ เราต้องการมันสำหรับไมโครเซอร์โว

ก่อนที่เราจะไปที่โค้ด ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Keypad Library แล้ว สามารถพบได้ในสเก็ตช์ของคุณ จากนั้นแท็บสเก็ตช์ รวมไลบรารี คุณจะไม่สามารถใช้ปุ่มกดได้หากไม่มี

ตอนนี้ให้เปิดรหัสและตรวจสอบให้แน่ใจว่าปุ่มกดทำงานและให้ค่าที่เข้าร่วม

บันทึกย่อ: ตรวจสอบให้แน่ใจว่าคุณมีคำสั่ง if เพื่อตรวจสอบปุ่มกด มิฉะนั้นจะไม่ทำงาน ระวังความล่าช้าด้วย เพราะปุ่มต่างๆ จะถูกลงทะเบียนจากปุ่มกด

#รวม

แถว const ไบต์ = 4; //สี่แถวเพราะปุ่มกดเต็ม

คอลัมน์ const ไบต์ = 4; //สี่คอลัมน์ เหมือนข้างบน

ปุ่มถ่าน [แถว][คอลัมน์] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C'}, {'*', '0', '#', 'D'} };

ไบต์ rowP[แถว] = {13, 12, 11, 10}; // หมุดแถวของปุ่มกด

คอลัมน์ไบต์P[คอลัมน์] = {9, 8, 7, 6}; //หมุดคอลัมน์ของปุ่มกด

ปุ่มกด = ปุ่มกด (makeKeymap (ปุ่ม), rowP, columnsP, แถว, คอลัมน์); //สร้างปุ่มกด

การตั้งค่าเป็นโมฆะ (){

Serial.begin(9600); }

วงเป็นโมฆะ (){

ถ่าน buttonPressed = pad.getKey(); // รับถ่านจากปุ่มกด if (buttonPressed) // แสดงว่ามีการกดปุ่มใดบนปุ่มกด { Serial.println (buttonPressed); } }

ขั้นตอนที่ 2: เพิ่มไมโครเซอร์โว

เพิ่มไมโครเซอร์โว
เพิ่มไมโครเซอร์โว
เพิ่มไมโครเซอร์โว
เพิ่มไมโครเซอร์โว

ตอนนี้ให้เพิ่มเซอร์โวมอเตอร์ อันนี้ง่ายมากที่จะเพิ่มในโครงการปัจจุบันของเราเนื่องจากไมโครเซิร์ฟเวอร์มีเพียงสามสายเท่านั้น

  • ลวดสีน้ำตาลไปที่รางกราวด์บนเขียงหั่นขนม
  • สีแดงไปที่รางไฟฟ้า
  • Orange ไปที่ Pin 3 บน Arduino โปรดจำไว้ว่าไมโครเซิร์ฟเวอร์จะต้องมีพิน PWM บน Arduino นี่เป็นเพราะเซอร์โวที่ใช้ TIMER2

ตอนนี้ ให้ตรวจสอบให้แน่ใจว่าเราต่อไมโครเซอร์โวถูกต้องแล้วและเคลื่อนที่ได้

#รวม #รวม "Servo.h"

แถว const ไบต์ = 4; //สี่แถวเพราะปุ่มกดเต็ม

คอลัมน์ const ไบต์ = 4; //สี่คอลัมน์ เหมือนข้างบน

ปุ่มถ่าน [แถว][คอลัมน์] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C'}, {'*', '0', '#', 'D'} };

ไบต์ rowP[แถว] = {13, 12, 11, 10}; // หมุดแถวของปุ่มกด

คอลัมน์ไบต์P[คอลัมน์] = {9, 8, 7, 6}; //หมุดคอลัมน์ของปุ่มกด

ปุ่มกด = ปุ่มกด (makeKeymap (ปุ่ม), rowP, columnsP, แถว, คอลัมน์); //สร้างปุ่มกด

เซอร์โวปัจจุบันเซอร์โว; // สร้างวัตถุเซอร์โวเพื่อควบคุมเซอร์โว

// สามารถสร้างวัตถุเซอร์โวสิบสองรายการได้บนกระดานส่วนใหญ่

int pos = 0; // ตัวแปรเก็บตำแหน่งเซอร์โว

การตั้งค่าเป็นโมฆะ (){

Serial.begin(9600); ปัจจุบันServo.attach(3); // ติดเซอร์โวบนพิน 9 กับวัตถุเซอร์โว

}

วงเป็นโมฆะ (){

ถ่าน buttonPressed = pad.getKey(); // รับถ่านจากปุ่มกด if (buttonPressed) // แสดงว่ามีการกดปุ่มใดบนปุ่มกด { Serial.println (buttonPressed); }

ปัจจุบันServo.write(95);

}

ขั้นตอนที่ 3: แก้ไขรหัสเพื่อใช้ปุ่มกดบน Servo

ทราบว่าเรากำลังจะแก้ไขโค้ดของเรา เพื่อที่ว่าเมื่อเรากดปุ่มใดปุ่มหนึ่งบนแป้นพิมพ์ เซอร์โวจะเคลื่อนที่ไปยังตำแหน่งใดตำแหน่งหนึ่ง สิ่งที่สำคัญก่อน ตำแหน่งเซอร์โวสำหรับ 0 นั้นแปลก เนื่องจากฉันมีเซอร์โวแบบหมุนต่อเนื่อง เมื่อใดก็ตามที่มันเข้าใกล้ 0 เซอร์โวก็เริ่มหมุน ตัวเลขที่ฉันใส่ในรหัสนั้นต่ำที่สุดเท่าที่จะทำได้โดยไม่เกิดขึ้น อย่างไรก็ตาม นี่คือรหัสสุดท้ายของฉัน:

#รวม #รวม

แถว const ไบต์ = 4; //สี่แถวเพราะปุ่มกดเต็ม

คอลัมน์ const ไบต์ = 4; //สี่คอลัมน์ เหมือนข้างบน

ปุ่มถ่าน [แถว][คอลัมน์] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C'}, {'*', '0', '#', 'D'} };

ไบต์ rowP[แถว] = {13, 12, 11, 10}; // หมุดแถวของปุ่มกด

คอลัมน์ไบต์P[คอลัมน์] = {9, 8, 7, 6}; //หมุดคอลัมน์ของปุ่มกด

ปุ่มกด = ปุ่มกด (makeKeymap (ปุ่ม), rowP, columnsP, แถว, คอลัมน์); //สร้างปุ่มกด

เซอร์โว myServo; //

การตั้งค่าเป็นโมฆะ (){

Serial.begin(9600); myServo.attach(5); // ติดเซอร์โวบนพิน 9 กับวัตถุเซอร์โว }

วงเป็นโมฆะ (){

ปุ่มถ่าน = pad.getKey(); // รับถ่านจากปุ่มกด if(key == '0') { myServo.write(11); Serial.println("0"); ล่าช้า(15); } ถ้า (คีย์ == '1') { myServo.write (12); Serial.println("1"); ล่าช้า(15); } ถ้า (คีย์ == '2') { myServo.write (24); Serial.println("2"); ล่าช้า(15); } ถ้า (คีย์ == '3') { myServo.write (36); Serial.println("3"); ล่าช้า(15); }

ถ้า (คีย์ == '4')

{ myServo.write (48); Serial.println("4"); ล่าช้า(15); }

ถ้า (คีย์ == '5')

{ myServo.write (60); Serial.println("5"); ล่าช้า(15); }

ถ้า (คีย์ == '6')

{ myServo.write (72); Serial.println("6"); ล่าช้า(15); }

ถ้า (คีย์ == '7')

{ myServo.write (84); Serial.println("7"); ล่าช้า(15); }

ถ้า (คีย์ == '8')

{ myServo.write (96); Serial.println("8"); ล่าช้า(15); }

ถ้า (คีย์ == '9')

{ myServo.write (108); Serial.println("9"); ล่าช้า(15); }

ถ้า (คีย์ == '*')

{ myServo.write (120); Serial.println("*"); ล่าช้า(15); }

ถ้า (คีย์ == '#')

{ myServo.write (132); Serial.println("#"); ล่าช้า(15); }

ถ้า (คีย์ == 'A')

{ myServo.write (146); Serial.println ("A"); ล่าช้า(15); }

ถ้า (คีย์ == 'B')

{ myServo.write (158); Serial.println ("B"); ล่าช้า(15); }

ถ้า (คีย์ == 'C')

{ myServo.write (170); Serial.println ("C"); ล่าช้า(15); }

ถ้า (คีย์ == 'D')

{ myServo.write (180); Serial.println("D"); ล่าช้า(15); } }

แนะนำ: