הכל התחיל ממשחק קטן מהעידנים האפלים שנקרא "מריו", ממש מהיותו בחור זעיר שקופץ על ברווזים כדי להציל את הנסיכה שלי עד שהייתי נסיך נאה וגברי שמסתובב בפרס (נסיך פרס) שנלחם נגד החושך. כדי להציל את עולמי מאחור הייתי חובב גדול של משחקי וידאו וגדלתי לשחק בהם. אבל הם משתעממים לפעמים ואני מרגיש פחות מעורב בזה. כיום קונסולות המשחק המתקדמות מאפשרות משחק וירטואלי ועוזרות לנו להרגיש את המשחק הרבה יותר טוב ממה שמקלדת או עכבר יכולים לעשות.
בהיותי חובב ארדואינו התעייפתי לשחק במשחק המפורסם בשם "Angry Birds" באמצעות מקלדת ועכבר והחלטתי לבנות בקר משחק משלי באמצעות חיישן פלקס ופוטנציומטר. כאשר נמשך חיישן הגמיש, הציפור על המעוט תימשך גם אתה ותוכל להשתמש בפוטנציומטר כדי לקבוע את הכיוון שאליו יש להפעיל אותו. ואז כשאתה משחרר את חיישן הגמיש הציפור תשוגר. אני די נהנתי לעשות את זה, אז אם אתה מתכוון לבנות משהו דומה מאוד, הדרכה זו תהיה מועילה. מדריך זה יעזור גם לבקרת סמן העכבר באמצעות פוטנציומטר.
דרישות תוכנה וחומרה:
תוֹכנָה:
- ארדואינו IDE
- מעבד IDE
- משחק Angry Birds במחשב
חוּמרָה:
- ארדואינו (כל גרסה)
- פוטנציומטר
- חיישן להגמיש
- 47K אוהם נגד
- חוטי חיבור
- קרש לחם
הרעיון שמאחורי:
Arduino לוח קורא את הערכים מן פוטנציומטר ו Flex סניור ומעביר אותם אל המחשב הנייד / מחשב דרך יציאת ה- COM USB באמצעות נורמלי Serial.write () פונקציה. לאחר מכן אנו קוראים מידע זה באמצעות עיבוד ושולטים על סמן העכבר באמצעות מחלקת הרובוט ב- Java הנתמכת על ידי עיבוד IDE. תכננו את עיבוד ה- IDE באופן שכאשר נמשך חיישן ה- Flex ייעשה לחיצה על העכבר ועל סמך כמה שהוא נמשך, מצביע העכבר ינוע לכיוון X. ואז בהתבסס על הערך מפוטנציומטר נעביר את סמן העכבר לכיוון Y, בדרך זו נוכל לקבוע את הכיוון אליו יש לשגר ציפור.
תרשים מעגל:
המעגל להפעלת Angry Bird באמצעות Flex Sensor ו- Potentiometer קל.
חיברנו פשוט פוטנציומטר וחיישן כניסה לתשומות האנלוגיות (A0, A1) של הארדואינו. הפלט של חיישן ה- Flex נמשך גם כלפי מטה באמצעות נגר 47K למטה.
אתה יכול לחבר אותו ישירות על קרש לחם או להלחין אותם ללוח Perf ולהרכיב אותו על כפפות או משהו כדי להפוך אותו ליצירתי יותר. פשוט השתמשתי בקרש לחם כדי לבצע את החיבורים שלי כמוצג להלן:
תוכנית ארדואינו:
קוד הארדואינו השלם ניתן בסוף ההדרכה. להלן מוסברים כמה שורות חשובות.
אנו מאותחלים את התוכנית לעבודה עם קצב שידור של 9600 ומתחילים לקרוא את הערכים מחיישן Flex ופוטנציומטר. כידוע הפונקציה serial.write () יכולה לשלוח רק בייט נתונים אחד בכל פעם. מכיוון שבייט אחד הוא 8 ביטים ו- 2 ^ 8 = 256. נוכל לשלוח ערכים מ -0 עד 256. לכן עלינו לדחוס את הערכים של פלט חיישן Flex ושל פלט פוטנציומטר ל -0 עד 256.
לשם כך אנו משתמשים בפונקציה map () בארדואינו. כל הערכים של חיישן ה- Flex מומרים מ- 5 ל- 100, כך שכשאנחנו מכופפים את החיישן הוא יגדל מ- 5 וכאשר ישוחרר הוא יחזור ל- 5. להזכיר את לחיצת העכבר משתמשים בערך 1 ו- 0 כאשר נשלח 1 העכבר נלחץ וכאשר נשלח 0 העכבר משתחרר.
אם (FlexValue> = 65 && FlexValue <= 120) // חיישן ה- flex שלי משתנה בין 65 ל- 120, יכול להיות שאתה שונה {FlexValue = map (FlexValue, 120,65,0,100); // מבוסס על כיפוף להמיר ל 0 ל 100 אם (FlexValue> = 5) // 1 ו 0 משמשים ללחיצת עכבר אז התחל מ 5 {Mclick = true; Serial.write (1); // 1 נשלח כדי ללחוץ על העכבר השמאלי בעכבר על Serial.write (FlexValue); // ערך Flex הוא המרחק להזזת עכבר בכיוון X} אחר {Mclick = false; Serial.write (0);}}
באופן דומה הערכים שיוצרים את הפוטנציומטר מומר מ 101 ל 200 לשיר את פונקציית map () ונשלח ליציאת COM מחשבים ניידים התובעת את הפונקציה Serial.write () כמוצג להלן.
אם (potValue <= 200) {potValue = map (potValue, 0,200,101,201); // מבוסס בתורו להמיר ל 101 ל 201 Serial.write (potValue); // ערך הסיר הוא המרחק להזזת העכבר בכיוון Y}
שאר התוכנית מוסברת באמצעות ההערות.
קוד עיבוד:
עיבוד הוא יישום פיתוח קוד פתוח וניתן להוריד אותו בקלות ולהשתמש בפיתוח פרויקטים מעניינים באמצעות ארדואינו או מיקרו-בקרים אחרים. כבר עשינו כמה פרויקטים באמצעות עיבוד ותוכל לבדוק אותם על ידי לחיצה על הקישורים למטה.
- DIY רדיו FM באמצעות עיבוד
- מציאות מדומה / שליטה במחוות באמצעות Arduino
- חדר צ'אט פרטי באמצעות Arduino.
- מערכת מכ"ם Arduino באמצעות עיבוד APP וחיישן קולי
- איתור פנים בזמן אמת ומעקב באמצעות Arduino
- מד מהירות DIY באמצעות Arduino ועיבוד
- משחק פינג פונג באמצעות תאוצה ארדואינו
- רובוט דו-כיווני באמצעות ארדואינו
- מצלמת הדמיה תרמית Arduino DIY
בפרויקט זה השתמשנו בעיבוד IDE כדי לקרוא את ערכי יציאת ה- COM ולשלוט על מצביע העכבר על סמך הערכים המתקבלים דרך יציאת ה- COM. קוד העיבוד המלא עבור בקר Angry Bird משחק זה ניתן להוריד מהקישור הבא:
- קוד עיבוד לבקר משחק Angry Bird זה (לחץ לחיצה ימנית ו'שמור קישור בשם ')
ניתן למצוא את תוכנית Arduino בסוף הדרכה זו. קוד העיבוד שונה כך שיתאים למטרתנו מהקוד שמסר יוגי בדף GitHub שלו.
יש לקרוא את הנתונים המגיעים מיציאת ה- COM באותו קצב שידור בו נשלחו מארדואינו. בדוק גם איזה יציאת COM מחובר לארדואינו שלך באמצעות מנהל ההתקנים. Arduino שלי היה קשור COM3 וזה היה 0 ה Port במחשב שלי ואת קצב השידור ב Arduino היה 9600 אז הקוד הוא כדלקמן
port = חדש סידורי (זה, Serial.list (), 9600);
ברגע שמתחילים לקרוא את הערכים אנו מבדילים אותו על ידי זיהויו על סמך ערכו על אופן שלחנו מארדואינו. הערכים ממופים שוב מ- 0 ל- 100 כך שנוכל לשלוט בעכבר על בסיס ערך זה.
אם (port.available ()> 0) {data = port.read (); println (נתונים); // קרא את הנתונים מיציאת COM ושמור אותם בנתונים} אם (נתונים> = 101 && נתונים <= 201) // אם הערך אם בין 101 ל 201 אז הוא חייב להיות מפוטנציומטר {Turn = int (map (data, 101,201,0,100)); // השתמש בערך זה כדי להפוך את הקטפולט} אם (data> = 5 && data <= 100) // אם הערך אם מ- 5 ל- 100 אז הוא חייב להיות מ- Flex Sensor {Pull = int (מפה (נתונים, 5,100, 0,100));} // השתמש בערך זה כדי למשוך את המעוט אם (data == 1) click = true; // השתמש בערך זה כדי ללחוץ על כפתור העכבר אם (data == 0) לחץ = false; // השתמש בערך זה כדי לשחרר את לחצן העכבר
ברגע שאנחנו מסווגים את הנתונים נוכל לשלוט על העכבר באמצעות מחלקת Java Robot בעיבוד. רובוט הפקודה. mouseMove (crntX-Pull, crntY + Turn); ניתן להשתמש בהם כדי להזיז את העכבר לכל מיקום רצוי ולקווי הרובוט. mousePress (InputEvent.BUTTON1_DOWN_MASK); ו- robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); ניתן להשתמש בכדי ללחוץ או לשחרר את כפתור העכבר בהתאמה.
אם (לחץ == false) // כאשר Flex Sesnor לא נמשך {crntX = (int) p.getX (); crntY = (int) p.getY (); אם (משוך> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // שחרר את לחצן העכבר} אם (לחץ == נכון) // כאשר משיכה את Flex Sesnor {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // לחץ על הרובוט לחצן העכבר.mouseMove (crntX-Pull, crntY + Turn); // הזז את העכבר על סמך ערך ה- Flex וה- POT}}
עיבוד IDE בעת ההשקה יציג גם תיבת דו-שיח קטנה בה תוכלו למצוא את הערכים של משיכה, סיבוב וסטטוס של לחיצת עכבר כמוצג להלן
ניתן להשתמש בפרט זה לניפוי באגים בתוכנית או לתיקון כל הנתונים הנדרשים.
עובד:
כדי לגרום לפרויקט Angry Bird זה לעבוד באמצעות הקוד שסופק, הרכיב את החומרה שלך על פי תרשים המעגל והעלה את קוד הארדואינו הנתון. ואז שים לב לאיזו יציאת COM המחובר שלך Arduino ובצע את השינויים הדרושים בקוד העיבוד והפעל את רישום העיבוד.
עכשיו, פשוט השיק את משחק הציפורים הזועם והציב את הסמן ליד המעוט ומשוך את חיישן הגמיש כדי למשוך את הציפור וקבע את הכיוון באמצעות הפוטנציומטר. לאחר הגדרת הכיוון שחרר את חיישן ה- Flex
EEEEWWWWEEEEEEEEEEE !!!!!!!!!!……………
הציפור שלך תושלך היישר לאוויר ו- BOOMM !! על החזירים. את העבודה המלאה ניתן למצוא בסרטון המופיע להלן.
מקווה שנהניתם מהפרויקט והצלחתם לבנות משהו דומה. אם יש לך ספקות תוכל לפנות אלי בקטע התגובה או לפרסם את שאלתך בפורום לשאלות טכניות.
עכשיו הגיע הזמן להתרסק לקופסאות החזיריות האלה ולקבל בחזרה את ביצי הציפורים שלנו !!!!