כל הפוסטים של עידו גנדל

Delphi + Arduino = Pong

"פונג" (Pong), משחק המטקות האלקטרוני הפרימיטיבי, נחשב אחת מאבני הדרך החשובות של עולם הגיימינג. הסיבה לכך היא שרבות מקונסולות המשחקים הביתיות הראשונות, שיצאו לשוק בסביבות אמצע שנות השבעים, הציעו בעיקר גרסאות של המשחק הזה.

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

להמשיך לקרוא Delphi + Arduino = Pong

ארדואינו, מחשב, נעים להכיר

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

חברים בקהילת המפתחים המקומית כבר הצליחו ליצור את החיבור הנחשק באמצעות שפת התכנות פייתון, אך אני רציתי לעבוד דווקא עם Object Pascal (בסביבת הפיתוח Delphi) שאני מכיר ואוהב. ידעתי שבסופו של דבר, שפת התכנות הספציפית חסרת חשיבות – מה שחשוב באמת זה למצוא את הדרך שלה לתקשר עם יציאה טורית (Serial Port), כי זה בעצם מה שכבל ה-USB של הארדואינו נותן.

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

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

מי צריך ארדואינו?

כזכור, הצלחתי בעבר לצרוב Bootloader ("תוכנת ניהול") של ארדואינו על מיקרו-בקר ATMega328-PU שנרכש בנפרד, ואחר כך הצלחתי לשים אותו על מטריצה ולגרום לו להבהב בנורית LED.  השלב הבא היה ליצור עבור המיקרו-בקר לוח עצמאי, כזה שיוכל לתקשר עם המחשב ולעשות כל מה שארדואינו אמיתי עושה, ולא על מטריצה זמנית אלא על משהו יציב יותר.

Board Design
השרטוט. תיכף נדבר עליו.

להמשיך לקרוא מי צריך ארדואינו?

לתכנת כמו ילד קטן

(זהירות, פוסט פילוסופי לפניכם!)

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

Lunar Lander Model
דגם "נחתת ירחית" מחומרים ביתיים (לא אכילה!)

להמשיך לקרוא לתכנת כמו ילד קטן

פרויקט אורח: לוח תוצאות אלקטרוני

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

הצד האחורי של לוח התוצאות האלקטרוני
הצד האחורי של לוח התוצאות האלקטרוני

להמשיך לקרוא פרויקט אורח: לוח תוצאות אלקטרוני

שיעור בצניעות (ובחלוקת מתח)

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

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

בפוסט זה, אם כן, אנסה לתקן טעות מושגית מהותית שעשיתי בעבר. אפרופו, כשדיברתי בזמנו עם אוריאל על Boozo the Smile, הפרויקט שלו שהוצג כאן, הנושא הועלה על ידו ובצורה שהייתי אמור לקלוט על המקום – אבל כנראה נגזר עליי לתפוס את העניין שרק אחרי שאביך את עצמי בפומבי. בקיצור, הפעם נדבר על ההבדל הקריטי בין נגד Pull-down לבין מחלק מתח.

להמשיך לקרוא שיעור בצניעות (ובחלוקת מתח)

פרויקט ארדואינו: נר אלקטרוני

כשהתחלתי לחשוב על פרויקט ארדואינו שיאזין לאותות בקוד מורס ויפענח אותם, ידעתי שהבעיה הקשה מבחינתי תהיה קליטת הצליל: אני לא מכיר את תחום המיקרופונים, והשרטוטים של מעגלי האודיו שמצאתי ברשת – גם אם היה בא לי להרכיב משהו שאינני מבין – הצריכו הזמנה של רכיבים והמתנה ממושכת…

עם זאת, במהלך החיפוש אחר חומרים לטור שלי ב-ynet, גיליתי התקן שעושה שימוש פרימיטיבי אך יעיל במיקרופון: נר אלקטרוני. בלי מגברים ובלי מעגלים אנלוגיים מסובכים, עם מיקרופון קטן ומיקרו-בקר בלבד (כך לפחות זה נראה), הנר מצליח להבחין בין שקט יחסי לבין נשיפה ישירה על המיקרופון, ולהדליק או לכבות את נורית ה-LED המובנית. בנוסף, בלי קשר למיקרופון, הנורית מהבהבת מדי פעם באקראי כדי לחקות את אפקט ההבהוב של להבת נר אמתי. מפה לשם, מצאתי את עצמי בתוך פרויקט קטן חדש: נר אלקטרוני משלי, שלא רק כבה ונדלק כשנושפים עליו חזק, אלא גם מהבהב חזק יותר בנשיפה חלשה, כפי שעושים נרות בעולם האמתי. הסרטון הבא הוא ללא סאונד, כדי לחסוך מכם את הרעש הנוראי של הנשיפות שנקלט במצלמה. במקום זה שמתי ליד ה"נר" דגל ניילון קטן שמציין את עוצמת הרוח.

להמשיך לקרוא פרויקט ארדואינו: נר אלקטרוני

שפת C למתחילים: ביטים, חלק ב'

אם זה יהיה במקום קרוב ויביאו פיצות, אגיע למפגש של קהילת הארדואינו הישראלית.

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

טבלת אמת לשני תנאים שחייבים להתקיים
ושיהיו מפיצריה נורמלית, לא מפיצה-סלמונלה-הכל-בשקל

להמשיך לקרוא שפת C למתחילים: ביטים, חלק ב'

שפת C למתחילים: ביטים, חלק א'

זיכרון של מחשבים, ושל מיקרו-בקרים, הוא למעשה רצף אחד ארוך של ביטים: "תאים" זעירים שכל אחד מהם יכול להיות באחד משני מצבים מוגדרים מראש (מצבים אותם אנחנו מכנים "0" ו-"1"). כל משתנה, כל ערך שאנחנו מציינים בתוכנה שלנו הוא בסופו של דבר קטע קצר על פני הרצף הזה. רוב שפות התכנות המודרניות עושות מאמצים להסתיר את העובדה הזאת מאיתנו, וזה בסדר גמור – אבל לא כשאנחנו עובדים עם מיקרו-בקרים. מגבלות החומרה והארגון הפנימי של המיקרו-בקר מחייבים כל מתכנת ראוי לשמו לעבוד גם ברמת הביטים, וזהו הנושא שנתחיל לכסות בפוסט הנוכחי.

נושא הביטים מתחלק לשני תת-נושאים עיקריים: ייצוג בינארי, ולוגיקה בוליאנית שבה נעסוק בפוסט הבא. שניהם טכניים למדי ועשויים להיראות לכם יבשים. אף על פי כן, מבין כל הפוסטים בסדרת "שפת C למתחילים", שניים אלה הם כנראה הפוסטים הכי קריטיים. אתם חייבים להבין כל מה שכתוב בהם בצורה מושלמת, ולהיות מסוגלים לחזור על זה גם אם יעירו אתכם באמצע הלילה. בלי המידע הזה לעולם לא תוכלו לתכנת מיקרו-בקרים. הדגשתי מספיק מילים? המסר עבר? אז קדימה, לעבודה…

להמשיך לקרוא שפת C למתחילים: ביטים, חלק א'

תקשורת אלחוטית עם ארדואינו ו-VirtualWire

תחום ה-RF (ראשי תיבות של Radio Frequency – תדר רדיו, כשהכוונה בדרך כלל לתקשורת אלחוטית באמצעות גלי רדיו) הוא תחום מסובך. לא שכל תחומי האלקטרוניקה האחרים הם טיול בשכונה, כמו שאומרים – ואף על פי כן, הסביבה הפיזית שלנו רוויה בכל כך הרבה הפרעות ומכשולים לגלי רדיו, שנדרש מאמץ רציני כדי לשלוח ולקלוט מידע בעזרתם ללא שגיאות ובקצב סביר.

מבחר התקני ה-RF שעומדים לרשותנו (חובבי הארדואינו) גדול, וגם הביקוש להם גדול: זו הדרך הפרקטית היחידה שלנו לשלוח מידע, למשל, מחדר לחדר בבית. עם זאת, היעילות והטווח של ההתקנים הללו תלויה בעוצמה ובתחכום של מעגלי העיבוד שלהם, וזה מתבטא במחיר. קחו לדוגמה את הקיטים הבסיסיים של RF, צמד משדר+מקלט שאפשר להשיג תמורת חמישה-שישה דולרים בלבד. לכאורה עסקה מצוינת, אבל מי שינסה לעבוד איתם בצורתם הגולמית (כפי שעשיתי במחסום הצעצוע) יגלה במהרה שאפילו משימה צנועה כמו זיהוי של אות פשוט ("יש/אין") היא קריעת ים סוף. האם נגזר עלינו לוותר על RF, או לחלופין להיפרד מעשרות רבות של דולרים עבור התקני Zigbee, בלוטות' ודומיהם?

להמשיך לקרוא תקשורת אלחוטית עם ארדואינו ו-VirtualWire