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

שפת C למתחילים: כמה זה x = 3?

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

x = 1;
x = x + 2;

הביטויים האלה נראים כל-כך מובנים מאליהם, שאף אחד לא תהה מה בעצם קורה שם; אך מאחורי הקלעים של הקוד הזה עומד מנגנון מתוחכם ורב-עוצמה, שמהווה את אחת מאבני היסוד של התכנות בכלל – וגם מאפשר לנו, ספציפית בשפת C, לבצע טריקים שימושיים מאד ואפילו מרהיבים מכל מיני סוגים. בפוסט הנוכחי נגרד את קצה הקרחון של המנגנון הזה, וגם נפתור את התעלומה כמה זה x = 3. מוכנים?

להמשיך לקרוא שפת C למתחילים: כמה זה x = 3?

פוסט קצר: לתכנת דרך הדפדפן עם ideone

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

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

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

שפת C למתחילים: בלוקים של קוד

בואו נסתכל על התוכנית הכי פשוטה ובסיסית שאפשר להעלות ללוח ארדואינו מסביבת הפיתוח שלו:

void setup() {
}

void loop() {
}

מה שיש לנו כאן זה בעצם הגדרה של שתי פונקציות, אחת בשם setup ואחת בשם loop.  בהמשך, כשאדבר על פונקציות, אסביר את המשמעות של המילה void ואת הסוגריים הרגילים. בינתיים, נתמקד בסוגריים המסולסלים – } ו-{. בשפת C, סוגריים מסולסלים יוצרים "בלוק" של קוד, מבנה שמכיל פקודות. כמו שאפשר לראות בתוכנית למעלה, המבנה הזה יכול להיות ריק לגמרי. כמו כן, בלוק קוד יכול להכיל בלוקים אחרים, מה שאומר שהתוכנית הבאה לגיטימית לגמרי – אפילו שהיא מטופשת לחלוטין…

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

הארדואינו-על-מטריצה הראשון שלי

מכיוון שכבר היה לי ביד ג'וק ATMega328-PU חופשי עם Bootloader של ארדואינו, החלטתי ללכת עד הסוף ולהרכיב אותו על מטריצה, כפי שמתואר כאן. העברה של מיקרו-בקר מלוח הארדואינו למטריצה היא שלב נוסף בדרך ל"עצמאות" – שחרור מהסטנדרטים והמגבלות של עולם הארדואינו ומעבר לתכנון מעגלים יעודיים, בהתאמה מדויקת לצרכים הספציפיים של כל פרויקט. שלא יהיה ספק, הארדואינו הוא דבר מדהים ואפשר לעשות איתו אינספור דברים מדהימים לא פחות גם במסגרת המגבלות הקיימות – ובכל זאת, גם בקטע של עלויות וגם בקטע של למידה, אף פעם לא מזיק לפתוח את הראש גם לכיוונים אחרים. אז הנה לפניכם ההתרשמות שלי מההרכבה הזו – מיד אחרי התמונה.

ATMega328 על מטריצה, מהבהב בנורית LED
ATMega328 על מטריצה, מהבהב בנורית LED ירוקה

להמשיך לקרוא הארדואינו-על-מטריצה הראשון שלי

פרויקט: לסלי לעניים

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

צלחות הקלקר המקוריות + מנוע חשמלי קטן
צלחות הקלקר המקוריות + מנוע חשמלי קטן

להמשיך לקרוא פרויקט: לסלי לעניים

שפת C למתחילים: מבוא והערות

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

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

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

ארדואינו למתחילים: מולטיטסקינג

איך גורמים לארדואינו (או לכל מיקרו-בקר, לצורך העניין) לבצע יותר מפעולה אחת בו-זמנית? למשל, איך עושים שהארדואינו גם יהבהב בנורית LED בקצב קבוע, גם יקרא נתונים בזמן אמת מחיישן מרחק וגם יגיב להם בשינוי צליל ברמקול בלי שהפעולות יפריעו זו לזו?

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

להמשיך לקרוא ארדואינו למתחילים: מולטיטסקינג

ארדואינו: צריבת Bootloader למיקרו-בקר חלופי

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

Arduino and ATMega328-PUs
הארדואינו ושני מיקרו-בקרים חלופיים – לחצו להגדלה

היום הגיעו אליי שני הג'וקים שמימין בתמונה – מסוג ATMega328-PU בתצורת DIP (זו עם הרגליים הארוכות שאפשר לדחוף לתוך מטריצה). אלו הם מיקרו-בקרים מאותה משפחה שמשמשת בארדואינו Uno ו-Duemilanove, ובעיקרון אפשר להחליף בעזרתם את הג'וק שהגיע עם הארדואינו. אבל כדי לגרום לזה לעבוד, צריך היה לבצע עוד שלב בדרך: צריבה של Bootloader. מה זה Bootloader ואיך צורבים אותו?

להמשיך לקרוא ארדואינו: צריבת Bootloader למיקרו-בקר חלופי

ארדואינו למתחילים: Debouncing

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

Debouncing - להתמודד עם דברים שקופצים
Debouncing – להתמודד עם דברים שקופצים

להמשיך לקרוא ארדואינו למתחילים: Debouncing

פרויקט אורח: Boozo the Smile

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

להמשיך לקרוא פרויקט אורח: Boozo the Smile