תוכן עניינים:

Servo Positoning עם לוח מקשים: 3 שלבים
Servo Positoning עם לוח מקשים: 3 שלבים

וִידֵאוֹ: Servo Positoning עם לוח מקשים: 3 שלבים

וִידֵאוֹ: Servo Positoning עם לוח מקשים: 3 שלבים
וִידֵאוֹ: CS50 2015 - Week 3, continued 2024, נוֹבֶמבֶּר
Anonim
Servo Positoning עם לוח מקשים
Servo Positoning עם לוח מקשים

במדריך זה ניצור פרויקט שישלוט על מיקרו-סרוו עם לוח מקשים המפעיל אותו עם Arduino Uno.

חומרים בשימוש:

ארדואינו אונו

לוח לחם

לוח מקשים 4x4

מיקרו סרוו

שלב 1: חברו את לוח המקשים

חברו את לוח המקשים
חברו את לוח המקשים
חברו את לוח המקשים
חברו את לוח המקשים

המחשבה הראשונה שאתה צריך לעשות היא לחבר את מסילת הכוח ואת מסילת הארקה על לוח הלחם שלך מהארדואינו שלך

  1. חבר את הפין 5V למעקה החשמל (אדום)
  2. חבר סיכת הארקה (GND) למעקה הארקה (כחול)

כעת, כאשר ללוח הלחם יש כוח והוא מקורקע, אנו יכולים להתחיל לחבר את הרכיבים שלנו.

חיווט לוח המקשים קל אך עליכם לשים לב לסיכות בלוח המקשים ובארדואינו. זה יהיה שימושי כאשר נפנה את תשומת ליבנו לקוד שלנו.

זכור להתחיל משמאל בעת השימוש בחוטים שלך!

  • הסיכה הראשונה מגיעה ל -13
  • הסיכה השנייה עוברת ל -12
  • הסיכה השלישית עוברת ל -11
  • הסיכה הרביעית מגיעה ל -10
  • סיכה חמישית עד 9
  • סיכה שישית עד 8
  • סיכה שביעי עד 7
  • סיכה שמינית עד 6

בעת חיווט לוח המקשים, זכור לשמור על סיכת PWM דיגיטלית פתוחה. נזדקק לזה עבור המיקרו-סרוו

לפני שנגיע לקוד, ודא שהתקנת את ספריית לוח המקשים. ניתן למצוא אותו בסקיצה שלך, ולאחר מכן בלשונית סקיצות, כלול ספרייה. לא תוכל להשתמש בלוח המקשים בלעדיו.

כעת אפשר לפנות לקוד ולוודא שמקלדת עובדת ונותנת את הערכים המשתתפים בהם

הערות מהירות: ודא שיש לך את הצהרת ה- if כדי לבדוק את לוח המקשים, אחרת היא לא תעבוד. היזהר גם מעיכובים, הם יתעסקו עם כפתורים שנרשמים ממקלדת המקשים

#לִכלוֹל

שורות const byte = 4; // ארבע שורות מאחר ולוח המקשים מלא

עמודות const byte = 4; // ארבע עמודות, זהה לעיל

לחצני תווים [שורות] [עמודות] = {

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

בתור שורה P [שורות] = {13, 12, 11, 10}; // סיכות שורה של לוח המקשים

עמודות בתים P [עמודות] = {9, 8, 7, 6}; // סיכות עמוד של לוח המקשים

לוח מקשים = לוח מקשים (makeKeymap (לחצנים), rowP, עמודות P, שורות, עמודות); // צור לוח מקשים

הגדרת בטל () {

Serial.begin (9600); }

לולאת חלל () {

char buttonPressed = pad.getKey (); // קבל את הצ'אר מלוח המקשים אם (buttonPressed) // הראה איזה לחצן נלחץ על לוח המקשים {Serial.println (buttonPressed); }}

שלב 2: הוסף את המיקרו סרוו

מוסיפים את המיקרו סרוו
מוסיפים את המיקרו סרוו
מוסיפים את המיקרו סרוו
מוסיפים את המיקרו סרוו

כעת ניתן להוסיף את מנוע הסרוו. זה ממש קל להוסיף לפרויקט הנוכחי שלנו מכיוון שלשרת המיקרו יש רק שלושה חוטים.

  • חוט חום עובר למעקה הארקה על לוח הלחם
  • אדום הולך למסילת הכוח
  • כתום עובר לפין 3 על הארדואינו. זכור שלשרת המיקרו חייב להיות סיכת PWM על ה- Arduino. זאת בשל סרוו באמצעות TIMER2

עכשיו רק נוודא שחיברנו את המיקרו סרוו נכון ושהוא זז

#include #include "Servo.h"

שורות const byte = 4; // ארבע שורות מאחר ולוח המקשים מלא

עמודות const byte = 4; // ארבע עמודות, זהה לעיל

לחצני תווים [שורות] [עמודות] = {

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

בתים שורה P [שורות] = {13, 12, 11, 10}; // סיכות שורה של לוח המקשים

עמודות בתים P [עמודות] = {9, 8, 7, 6}; // סיכות עמוד של לוח המקשים

לוח מקשים = לוח מקשים (makeKeymap (לחצנים), rowP, עמודות P, שורות, עמודות); // צור לוח מקשים

Servo currentServo; // צור אובייקט סרוו לשליטה בסרוו

// ניתן ליצור 12 אובייקטים של סרוו ברוב הלוחות

int pos = 0; // משתנה לאחסון מיקום הסרוו

הגדרת בטל () {

Serial.begin (9600); currentServo.attach (3); // מחבר את הסרוו על סיכה 9 לאובייקט הסרוו

}

לולאת חלל () {

char buttonPressed = pad.getKey (); // קבל את הצ'אר מלוח המקשים אם (buttonPressed) // הראה איזה לחצן נלחץ על לוח המקשים {Serial.println (buttonPressed); }

currentServo.write (95);

}

שלב 3: שנה קוד לשימוש בלוח המקשים בסרוו

דעו שאנחנו הולכים לשנות את הקוד שלנו כך שכאשר נלחץ על כפתור מסוים בלוח המקשים, הסרוו עובר למיקום מסוים. דבר חשוב קודם כל. עמדת סרוו ל -0 הייתה מוזרה. מכיוון שהיה לי סרוו סיבוב רציף, בכל פעם שהוא התקרב ל -0, הסרוו רק התחיל להסתובב. המספר שהכנסתי לקוד היה נמוך ככל שיכולתי מבלי שזה יקרה. בכל מקרה, הנה הקוד הסופי שלי:

#כלול #כלול

שורות const byte = 4; // ארבע שורות מאחר ולוח המקשים מלא

עמודות const byte = 4; // ארבע עמודות, זהה לעיל

לחצני תווים [שורות] [עמודות] = {

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

בתור שורה P [שורות] = {13, 12, 11, 10}; // סיכות שורה של לוח המקשים

עמודות בתים P [עמודות] = {9, 8, 7, 6}; // סיכות עמוד של לוח המקשים

לוח מקשים = לוח מקשים (makeKeymap (לחצנים), rowP, עמודות P, שורות, עמודות); // צור לוח מקשים

סרוו myServo; //

הגדרת בטל () {

Serial.begin (9600); myServo.attach (5); // מחבר את הסרוו על סיכה 9 לאובייקט הסרוו}

לולאת חלל () {

מפתח char = pad.getKey (); // קבל את הצ'אר ממקלדת המקשים if (key == '0') {myServo.write (11); Serial.println ("0"); עיכוב (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); עיכוב (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); עיכוב (15); } if (key == '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); }}

מוּמלָץ: