הלו טייני #1.5: צורב חלופי

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

הכלים

הצורב איתו נעבוד כאן נקרא USBasp. יש הרבה דגמים שלו באיביי ובאתרי הגאדג'טים הסיניים, במחירים של 3-10 דולר ליחידה – את שלי קניתי כאן. כצפוי, הוא מוגבל יחסית לצורב הרשמי ופחות משוכלל ממנו, אך לתחילת הדרך הוא יספיק בהחלט. אצלי במחשב (Windows 7) הוא זוהה בלי שהייתי צריך להתקין דרייברים כלשהם ידנית. תוספת מאוחרת: ב-Windows 8, ייתכן שתצטרכו לעשות מה שכתוב כאן.

צורב USBasp זול, ללא כבל החיבור
צורב USBasp זול, ללא כבל החיבור

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

הלו טייני #1: בלינק

בפוסט ארוך ועתיר תמונות זה אראה, צעד אחרי צעד, איך לגרום ל-ATtiny85 להדליק ולכבות לד פעם בשניה (פרויקט "Blink" המוכר) בעזרת הכלים שהצגתי בקצרה בפוסט הקודם – סביבת הפיתוח Atmel Studio 6.1 וצורב AVRISP MKII. אם אין לכם ניסיון קודם איתם, מומלץ לקרוא בתשומת לב עד הסוף – יש שם משהו שיחסוך לכם שעות של תסכול. וכרגיל, אני בעצמי לא מומחה לתכנות וצריבה של מיקרו-בקרים, ואת רוב הדברים שמופיעים כאן למדתי מבלוגים אחרים ומניסוי וטעיה – אז אם יש משהו שפספסתי או יכולתי לעשות יותר טוב, אשמח לשמוע בתגובות.

בשביל הפרויקט הזה נצטרך, מלבד המיקרו-בקר, גם מטריצה, נגד בערך של 200-300 אום, נורית LED רגילה, מקור כוח של 5V (כגון לוח ארדואינו או כבל USB שנחתך והותאם למשימה), שישה חוטי גישור (Jumper wires) צבעוניים, ולמי שרוצה, גם קבל בערך של מיקרו-פאראדים ספורים.

צורב AVRISP MKII של Atmel
צורב AVRISP MKII של Atmel

להמשיך לקרוא הלו טייני #1: בלינק

הלו טייני #0: מבוא

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

ארבעה מיקרו-בקרים מדגם ATtiny85 ונורית LED 5 מ"מ לקנה מידה
ארבעה מיקרו-בקרים מדגם ATtiny85 ונורית LED חמישה מ"מ לקנה מידה

להמשיך לקרוא הלו טייני #0: מבוא

אתגר התכנות 5: הרפתקת טקסט!

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

אם הסגנון הזה נראה לכם מוכר, זה לא במקרה. התקופה שבין סוף שנות השבעים לאמצע שנות השמונים, פלוס מינוס, היתה תור הזהב של "הרפתקאות הטקסט" (Text Adventures) –  משחקי קווסט מורכבים להפליא ועתירי דמיון, שהתנהלו במלואם באמצעות תיאורים כתובים ופקודות כתובות של המשתמש. משחקים אלה הותירו רושם כה עז, שגם אם נולדתם מאוחר מכדי להתנסות בז'אנר בעצמכם, רוב הסיכויים שלפחות שמעתם עליו.

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

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

להמשיך לקרוא אתגר התכנות 5: הרפתקת טקסט!

אתגר התכנות 4: מיון ערמה

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

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

להמשיך לקרוא אתגר התכנות 4: מיון ערמה

רשמים מהארדואינו ב-$9 של Borderless Electronics

פרויקט מימון ההמונים הראשון שהשתתפתי בו התגלה כהצלחה: "ארדואינו ב-9 דולר" של הרולד טימיס ו"Borderless Electronics". מדובר בהעתק של ארדואינו לאונרדו, במחיר שהוא – לדברי היזם – עלות מינימלית לחלוטין, והמטרה המוצהרת היא לאפשר גם למי שידו אינה משגת לקנות ארדואינו מקוריים להתנסות ולעבוד עם לוח תואם, אמין וזול. אוקיי, אז אולי אני לא דוגמה מייצגת במאה אחוזים לקהל היעד הזה, אבל בינינו, ספק גדול אם אפילו רבע מ-15,000(!) הלוחות שנוצרו במסגרת הפרויקט יגיעו לידיים של נזקקים אמתיים… אנחנו פשוט אוהבים לוחות פיתוח זולים, אין מה לעשות 🙂

9DA_Board_Reduced
תואם הלאונרדו של Borderless Electronics

להמשיך לקרוא רשמים מהארדואינו ב-$9 של Borderless Electronics

אתגר התכנות 3: קוף על רשת!

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

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

יש מגבלה נוספת וחשובה מאד: הקוף אינו יכול לנוע לצומת שסכום הספרות של הקואורדינטות שלו גדול מ-19. לדוגמה, הוא לעולם לא יוכל להגיע לצומת 96,51 כי 9+6+5+1 יותר גדול מ-19. במקרה של קואורדינטה שלילית, אנחנו פשוט מתעלמים מהסימן ומחשבים את הסכום כאילו היא היתה חיובית.

והנה השאלה: כאמור, הקוף מתחיל בצומת 0,0. לכמה צמתים שונים, כולל זה ההתחלתי, הוא יכול להגיע בסך הכל?

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

אתגר התכנות, תרגיל 2

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

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

A[n] = n

אנחנו נרצה לראות את n מוצג על המסך. איך עושים את זה – ואיך עושים את זה עוד יותר טוב?

להמשיך לקרוא אתגר התכנות, תרגיל 2

MMXIII: אתגר התכנות מתחיל

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

להמשיך לקרוא MMXIII: אתגר התכנות מתחיל

נערת האמצע של הגרפיקה הממוחשבת

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

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

בלוג אישי בנושאי מייקינג, תכנות, מיקרו-בקרים ואלקטרוניקה