עמוד 1 מתוך 2 12 אחרוןאחרון
מציג תוצאות 1 עד 25 מתוך 29

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

  1. #1
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts

    עכבר ומקלדת מיוחדים- הפרוייקט שלי לתחרות פורים

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

    השלב הראשון בפרוייקט שלי היתה לבנות משהו שיהיה דומה בצורה שלו לעכבר. לצורך זה השתמשתי במוצר שמאפשר לי ליצור מודלים מפלסטיק בצורות שונות לפי איך שאני רוצה בקלות רבה ואפילו להעזר בתוכנה במחשב לצורך השירטוט - לא, לא מדובר על מדפסת תלת מימד אלא על לגו!
    יש לי אוסף די גדול של לגו ואחרי שהסתבכתי כמה זמן לגבי החומר ממנו אני אצור את העכבר זה התגלה כפתרון מושלם שגם קל לבניה וגם מאפשר לי לפרק בקלות כשאנ י עושה טעויות או מחליט לשנות משהו.
    המבנה הבסיסי של העכבר כולל בנתיים את שני הלחצנים וכן את הגלגלת. את החיישן האופטי למטה בנתיים עזבתי אבל חיברתי בכל זאת לד אדום כדי שיראה מרשים ויתן לו מראה עכברי...
    כיוון שלא היה לי מקודד סיבובי עבור הגלגלת (היה לי אחד שפרקתי ממדפסת אבל איבדתי אותו) אילתרתי לי גלגלת בשיטה הבאה
    Click image for larger version. 

Name:	כבר.png 
Views:	143 
Size:	1.9 קילובייט 
ID:	1929
    כאשר מסובבים את הגלגל, המתכת הגמישה (אפור בהיר) מתכופפת ונוגעת במוליך שמעליה\מתחתיה שמחוברים לארדואינו ומזהים את התנועה
    את הכיסוי ללחצנים הכנתי מחתיכת אלומיניום שמצאתי לפני כמה ימים. חתכתי אותה בעזרת מספרי פח- אחד הכלים האהובים עלי. כמו קאטר רק גדול וחזק יותר (בזכות מכפיל כוח שנמצא בו) וחיברתי עם קצת סלוטייפ(עוד עזר מייקרים חשוב)

    אחרי מעל שעה של הלחמה סיוטית על headers שנמסים לי באמצע ההלחמה, ככה זה נראה בפועל
    Click image for larger version. 

Name:	DSCN4940.jpg 
Views:	175 
Size:	479.8 קילובייט 
ID:	1930Click image for larger version. 

Name:	DSCN4941.jpg 
Views:	139 
Size:	491.9 קילובייט 
ID:	1961Click image for larger version. 

Name:	DSCN4945.jpg 
Views:	141 
Size:	484.4 קילובייט 
ID:	1962Click image for larger version. 

Name:	DSCN4946.jpg 
Views:	155 
Size:	475.1 קילובייט 
ID:	1963Click image for larger version. 

Name:	DSCN4951.jpg 
Views:	125 
Size:	465.7 קילובייט 
ID:	1964Click image for larger version. 

Name:	DSCN4952.jpg 
Views:	130 
Size:	448.4 קילובייט 
ID:	1965Click image for larger version. 

Name:	DSCN4953.jpg 
Views:	125 
Size:	485.5 קילובייט 
ID:	1966Click image for larger version. 

Name:	DSCN4947.jpg 
Views:	151 
Size:	506.3 קילובייט 
ID:	1931Click image for larger version. 

Name:	DSCN4950.jpg 
Views:	152 
Size:	485.1 קילובייט 
ID:	1932Click image for larger version. 

Name:	DSCN4954.jpg 
Views:	164 
Size:	489.8 קילובייט 
ID:	1933

    חיברתי לארדואינו מיקרו והוספתי נגדי pull-up,
    Click image for larger version. 

Name:	DSCN4955.jpg 
Views:	171 
Size:	493.9 קילובייט 
ID:	1934
    הרצתי קוד קצר שבדק באופן מחזורי את הפינים - לא עבד!
    מסתבר שחיברתי לגלגלת בטעות את הV5 למטה במקום באמצע. אז שינסתי מותניים, פרקתי, הרכבתי- עובד!

    בקרוב מאוד (בעיקר באשמת הדד ליין שהוקדם ) אני אעלה את המשך הפרוייקט
    נערך לאחרונה על ידי avi; 03-03-2014 בשעה 14:17-24.

  2. פרסומת
  3. #2
    תאריך הצטרפות
    Aug 2013
    הודעות
    3,254
    תודה
    503
    קיבל/ה 253 תודות ב-206 הודעות
    תודה
    0
    Thanked 1 Time in 1 Post
    ציטוט נכתב במקור על ידי avi צפיה בהודעה
    לצורך זה השתמשתי במוצר שמאפשר לי ליצור מודלים מפלסטיק בצורות שונות לפי איך שאני רוצה בקלות רבה ואפילו להעזר בתוכנה במחשב לצורך השירטוט -
    לא, לא מדובר על מדפסת תלת מימד אלא על לגו!
    נחמד


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

    איכות הפלסטיק משתנה מיצרן ליצרן.

    אני שמתי לב שה-Pin Headers שאני מקבל כשאני קונה Arduino Pro Mini ב-eBay, לא שווים כלום, הם נמסים כמו גלידה.
    לכן אני מעיף אותם, ומשתמש באחרים שקניתי ב-ElectroDragon או ב-Tayda.


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


    אבי אולי תגלה לנו מה זה עושה?

  4. #3
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    אני דווקא השתמשתי בHeaders של Tayda ובכל זאת הם נמסו לי מהר. כנראה שזה בגלל החום של המלחם והזמן שלקח לי להלחים כי הגישה אל החוטים היתה קשה (חתכתי אותם קצר מדי)

  5. #4
    תאריך הצטרפות
    Feb 2013
    מיקום
    השרון
    הודעות
    4,898
    תודה
    262
    קיבל/ה 700 תודות ב-511 הודעות
    פוסטים בבלוג
    54
    תודה
    0
    Thanked 0 Times in 0 Posts
    ציטוט נכתב במקור על ידי avi צפיה בהודעה
    אני דווקא השתמשתי בHeaders של Tayda ובכל זאת הם נמסו לי מהר. כנראה שזה בגלל החום של המלחם והזמן שלקח לי להלחים כי הגישה אל החוטים היתה קשה (חתכתי אותם קצר מדי)
    לא הבנתי, מה הלחמת בדיוק ולאן שנמס לך? אף פעם לא קרה לי דבר כזה.
    ---==> הבייט הלבן - בלוג בנושאי מיקרו-בקרים, תכנות ומייקינג

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

  6. #5
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    הלחמתי את החוטים (שמחוברים לכפתורים) אל הHeaders , ובגלל שהמלחם היה חם + בכל הלחמה המלחם נגע הרבה זמן בכל header הפלסטיק שלהם התחיל להינמס והמתכת החליקה החוצה

  7. #6
    תאריך הצטרפות
    Feb 2013
    מיקום
    השרון
    הודעות
    4,898
    תודה
    262
    קיבל/ה 700 תודות ב-511 הודעות
    פוסטים בבלוג
    54
    תודה
    0
    Thanked 0 Times in 0 Posts
    ציטוט נכתב במקור על ידי avi צפיה בהודעה
    הלחמתי את החוטים (שמחוברים לכפתורים) אל הHeaders , ובגלל שהמלחם היה חם + בכל הלחמה המלחם נגע הרבה זמן בכל header הפלסטיק שלהם התחיל להינמס והמתכת החליקה החוצה
    אוקיי, אז למה להלחים קצה חוט חופשי ישירות ל-Header? מלחימים לחוט מהלחצן קצה של חוט עם Header נקבה בקצה, ואז מחברים את זה ל-Header הזכר ואפשר גם לנתק מאוחר יותר בלי בעיה...
    יש עוד הרבה שיטות וטכניקות לעשות כזה דבר - אני בכלל מעדיף, אם מדובר על חיבור קבוע וחיסכון במקום, להלחים את החוטים ישירות לחורים ב-PCB של פרו מיני, למשל.
    ---==> הבייט הלבן - בלוג בנושאי מיקרו-בקרים, תכנות ומייקינג

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

  8. #7
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    במקרה הזה רציתי גם לחבר אותו לכבל השחור שבתמונה אבל באופן שאני אוכל לפרק ולהשתמש בכבל אחר כך. אני לא רואה שום היגיון בלחבר את החוט ל Header נקבה לחבר אליו זכר ושוב לחבר לנקבה (הכבל השחור) . בדרך כלל גם אני מחבר כל חלק לPCB בנפרד אבל כאן לא יכולתי בגלל מגבלת המקום

  9. #8
    תאריך הצטרפות
    Feb 2013
    מיקום
    השרון
    הודעות
    4,898
    תודה
    262
    קיבל/ה 700 תודות ב-511 הודעות
    פוסטים בבלוג
    54
    תודה
    0
    Thanked 0 Times in 0 Posts
    ציטוט נכתב במקור על ידי avi צפיה בהודעה
    אני לא רואה שום היגיון בלחבר את החוט ל Header נקבה לחבר אליו זכר ושוב לחבר לנקבה (הכבל השחור)
    חשבתי שאתה מדבר על header שמולחם לארדואינו. אז תחבר את החוט מהלחצן לחוט שיש לו בקצה זכר... לא?
    ---==> הבייט הלבן - בלוג בנושאי מיקרו-בקרים, תכנות ומייקינג

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

  10. #9
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    ציטוט נכתב במקור על ידי igendel צפיה בהודעה
    חשבתי שאתה מדבר על header שמולחם לארדואינו. אז תחבר את החוט מהלחצן לחוט שיש לו בקצה זכר... לא?
    זה מה שהכי טוב כש הכל קרוב אבל במקרה שלי הארדואינו רחוק מה"עכבר" ולכן הייתי צריך חוט שיגשר בניהם ושיהיה ארוך. לי היה חוט כזה רק נקבה-נקבה

  11. #10
    תאריך הצטרפות
    Feb 2013
    מיקום
    השרון
    הודעות
    4,898
    תודה
    262
    קיבל/ה 700 תודות ב-511 הודעות
    פוסטים בבלוג
    54
    תודה
    0
    Thanked 0 Times in 0 Posts
    ציטוט נכתב במקור על ידי avi צפיה בהודעה
    זה מה שהכי טוב כש הכל קרוב אבל במקרה שלי הארדואינו רחוק מה"עכבר" ולכן הייתי צריך חוט שיגשר בניהם ושיהיה ארוך. לי היה חוט כזה רק נקבה-נקבה
    לוקחים חוט זכר-זכר קצר, חותכים באמצע, חושפים קצוות, מלחימים בין לבין חוט רגיל ארוך, מכסים את ההלחמות בשרינקים...

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

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

  12. מי אמר/ה ל-igendel תודה על ההודעה המועילה הזו:

    avi (03-03-2014)

  13. #11
    תאריך הצטרפות
    Aug 2013
    הודעות
    3,254
    תודה
    503
    קיבל/ה 253 תודות ב-206 הודעות
    תודה
    0
    Thanked 1 Time in 1 Post
    חבל שלא עוד היו עוד תגובות ל-Dupont Crimper..

  14. #12
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    ועכשיו אחרי שגמרתי לבנות את העכבר עברתי לבניית המקלדת. כדי לבנות את המקלדת קניתי חבילה גדולה של pushbuttons והתחלתי להלחים אתם אחד אחד ללוח... נראה לכם?!?
    השתמשתי במקלדת ישנה עם חיבור PS2 חיבור זה הוא תכלס סוג של חיבור סריאלי מי שמתעניין יכול לראות עוד פרטים פה: http://www.computer-engineering.org/ps2protocol/
    אני לא חפרתי בזה יותר מדי כיוון שכבר ניסיתי בעבר ליצור מכשיר שמזדהה כמקלדת PS2 וגיליתי כמה זה קשה ולכן נעזרתי בספרייה http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html הספריה הזו מקבלת נתונים ממקלדות כאלו בעזרת שני קווים בלבד. מה שכן אחד מהקווים חייב להיות פין פסיקה.

    לספריה הזו יש מספר קטן יחסית של פעולות:
    PS2Keyboard keyboard; בונה את העצם של התקשורת עם המקלדת
    keyboard.begin(DataPin, IRQpin) שמגדיר ביזה פינים חיברנו את שני הקווים המגיעים מהמקלדת
    keyboard.available() בדומה למחלקה סריאל הפעולה הזו בודקת האם יש מידע שמחכה לקריאה
    keyboard.read() מחזיר את המקש שנלחץ כתו ASCII. עבור המקשים המיוחדים כמו אנטר יש מילות מפתח

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

    Click image for larger version. 

Name:	DSCN4957.jpg 
Views:	118 
Size:	483.7 קילובייט 
ID:	1992Click image for larger version. 

Name:	DSCN4958.jpg 
Views:	128 
Size:	481.1 קילובייט 
ID:	1993Click image for larger version. 

Name:	DSCN4959.jpg 
Views:	127 
Size:	501.6 קילובייט 
ID:	1994Click image for larger version. 

Name:	DSCN4960.jpg 
Views:	123 
Size:	477.1 קילובייט 
ID:	1995

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

  15. #13
    תאריך הצטרפות
    Nov 2013
    הודעות
    490
    תודה
    10
    קיבל/ה 50 תודות ב-38 הודעות
    תודה
    0
    Thanked 0 Times in 0 Posts
    אני לא הבנתי מה השגת בזה, לקחת מקלדת PS2 וגרמת לה בעזרת ארדואינו להזדהות כמקלדת PS2, או שפיספסתי משהו?

  16. #14
    תאריך הצטרפות
    Feb 2013
    מיקום
    שפלה
    הודעות
    1,170
    תודה
    378
    קיבל/ה 49 תודות ב-43 הודעות
    פוסטים בבלוג
    4
    תודה
    0
    Thanked 0 Times in 0 Posts
    התקשורת עוברת דרך הארדואינו...

  17. #15
    תאריך הצטרפות
    Nov 2013
    הודעות
    490
    תודה
    10
    קיבל/ה 50 תודות ב-38 הודעות
    תודה
    0
    Thanked 0 Times in 0 Posts
    הבנתי שזה עובר דרך הארדואינו, אבל מה זה נותן??

  18. #16
    תאריך הצטרפות
    Feb 2013
    מיקום
    שפלה
    הודעות
    1,170
    תודה
    378
    קיבל/ה 49 תודות ב-43 הודעות
    פוסטים בבלוג
    4
    תודה
    0
    Thanked 0 Times in 0 Posts
    ציטוט נכתב במקור על ידי aviv צפיה בהודעה
    הבנתי שזה עובר דרך הארדואינו, אבל מה זה נותן??
    לא יודע אפשר להדליק מנורה כל פעם שכותבים... סתם דוגמה

  19. #17
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    א. אפשר גם לשלוח את הנתונים מהמקלדת למסך LCD ולא למחשב, או לכל מקור אחר, מה שאני הראתי זו רק דוגמא לבדוק אם המקלדת פועלת
    ב. ברגע שאני אעלה את הקוד הכל יהיה ברור. זה ממש לא סתם שולח את האותיות מהמקלדת למחשב

  20. #18
    תאריך הצטרפות
    Nov 2013
    הודעות
    490
    תודה
    10
    קיבל/ה 50 תודות ב-38 הודעות
    תודה
    0
    Thanked 0 Times in 0 Posts
    אני אנסח מחדש, מה הישום הפרקטי של הפרויקט?

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

  21. #19
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    ציטוט נכתב במקור על ידי aviv צפיה בהודעה
    אני אנסח מחדש, מה הישום הפרקטי של הפרויקט?

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

  22. #20
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    ועכשיו אני אחשוף את הסוד הגדול- החלק הכי מעניין ומגניב בפרוייקט שלי.
    אני מניח שרובכם שאלתם את עצמכם "מה יכול להיות כ"כ מיוחד בעכבר ומקלדת? הם מתפוצצים? הופכים לרובוט? מקודדים לפי טביעת אצבע?"
    אז עכשיו הגיע הזמן לחשוף את הסוד: החפץ מימין הוא המקלדת והחפץ משמאל הוא העכבר!
    Click image for larger version. 

Name:	DSCN4962.jpg 
Views:	117 
Size:	475.3 קילובייט 
ID:	2109
    כן, אני לא מתבלבל, כן, הימין שלכם, האפור הקטן שיוצא ממנו חוט שחור הוא המקלדת. תמיד כדאי לזכור: שמאל- היד עם השעון

    איך זה יכול להיות? תוכנה!
    כפי שכבר ציינתי כל המערכת בנויה על ארדואינו פרו מיקרו שבין שאר מעלותיו (תוספת של פיני פסיקה, אי צורך בשבב תקשורת למחשב, תהליך התקנה מעצבן) מסוגל לחקות את תפקודם של המקלדת והעכבר ולשדר למחשב נתונים שכאילו התקבלו מעכבר ומקלדת אמיתיים.
    שידור של אותיות ספציפית נעשה ע"י: פעולת לחיצה, דיליי קצר, פעולת "עזיבה" של המקש (הדיליי גורם לכך שהמחשב לא יתבלבל מהזמן הקצר שהכפתור מוחזק או משהו כזה)
    קוד:
    Keyboard.press(KEY_BACKSPACE);
               delay(50);
                Keyboard.releaseAll();
    לעכבר יש פעולה אחת שאחראית על תזוזה בשני הצירים וכן לסיבוב הגלגלת
    קוד:
     Mouse.move(X, Y, roll);
    הקוד מחולק לכמה חלקים: בשלב הראשון כמובן ישנן הגדרות לפינים, הגדרה של משתנים וכן של אובייקטי המחלקות keyboard, mouse ו PS2keyboard. ה keyboard, mouse אחראים על שליחת נתוני המקלדת והעכבר למחשב והאובייקט PS2keyboard אחראי על קריאת הנתונים ממקלדת הPS2 שיש לי (הלבנה בתמונה)

    החלק השני הוא החלק האחראי על העכבר. התוכנה בודקת באופן מחזורי את ארבעת הפינים הקשורים לעכבר ופועלת בהתאם. בתיכנון שלי המקש השמאלי יהיה מקש הכתיבה של אות ספציפית והמקש הימני יהיה מקש המחיקה. הגלגלת (שעלייה הסברתי בפרסום הראשון) תשמש לבחירה בין האותיות השונות. סיבוב לאחר של הגלגלת תגרום לבחירת אות "נמוכה" יותר וסיבוב קדימה של הגלגלת תעביר לאות "גדולה יותר". סדר האותיות וכן סימני הפיסוק נקבע על פי טבלאת ASCII. טבלא זו מציגה בפנינו את סדר האותיות והסימנים המסוגלים להישמר במשתנה מסוג char ולכל אחד מהם מוצמד ערך מספרי, לכן הפקודה:
    קוד:
    char ch = 56;
    הינה חוקית לגמרי!
    הטבלא כוללת גם רווחים סימני פיסוק ואפילו סמיילי! הקטע הרלוונטי לכתיבה הוא בעיקר התווים שערכם בין 40-126 והינה הם לפניכם:
    Click image for larger version. 

Name:	0 (1).jpg 
Views:	110 
Size:	172.7 קילובייט 
ID:	2110

    ברגע לתזוזת הגלגלת נקלטת אצל הארדואינו, נמחקת האות הקודמת, הערך של משתנה בשם nowKey (שאחראי לשמור בהתאם לשמו את המקש הנוכחי שנבחר) עולה או יורד בהתאם לתנועת הגלגלת ואז מודפס התו הנבחר מחדש. בנוסף לזה בכל ירידה או העלאה הארדואינו בודק האם התו הנבחר אהוא מחוץ לערכים שקבעתי ואם לא הוא מחזיר אותו ל"צד השני" כלומר אם הוא ירד מתחת לערך המינימלי הוא מוקפץ לערך המקסימלי. והנה זה ממומש בקוד:
    קוד:
    if (digitalRead(leftButtonPin) == HIGH)
             { Keyboard.press(nowKey);
               delay(50);
                Keyboard.releaseAll();
                delay(150);
             }
        if (digitalRead(rightButtonPin) == HIGH)
             { Keyboard.press(KEY_BACKSPACE);
               delay(50);
                Keyboard.releaseAll();
                delay(150);
             }
        if (digitalRead(rollUpPin) == HIGH)
             { Keyboard.press(KEY_BACKSPACE);
               delay(50);
                Keyboard.releaseAll();
                nowKey++;
                if(nowKey > 126) nowKey = ' ';
                Keyboard.press(nowKey);
               delay(50);
                Keyboard.releaseAll();
                delay(50);
             }
         if (digitalRead(rollDownPin) == HIGH)
             { Keyboard.press(KEY_BACKSPACE);
               delay(50);
                Keyboard.releaseAll();
                nowKey--;
                if(nowKey < ' ') nowKey = 126;
                Keyboard.press(nowKey);
               delay(50);
                Keyboard.releaseAll();
                delay(50);
             }
    נערך לאחרונה על ידי avi; 10-03-2014 בשעה 20:37-24.

  23. #21
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    ושוב חזרתי והפעם עם הסבר לגבי הפעולה של העכבר-בצורת-מקלדת

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

    המקלדת מתפקדת כעכבר בשתי צורות:
    קודם כל,אפשר לשלוט בסמן פשוט באמצעות החיצים! חץ ימינה מזיז את הסמן ימינה וכן הלאה.
    מקש האנטר מתפקד בתור המקש השמאלי של העכבר ומקש הdelet הוא המקש הימני פשוט כי הוא נמצא קרוב למקש האנטר.
    המימוש של החלק הזה היה יחסית פשוט:
    קוד:
     if (  boardKey== PS2_ENTER) {
                 Mouse.click();
                } else if ( boardKey == PS2_DELETE) {
                 Mouse.click(MOUSE_RIGHT);
                } else if ( boardKey == PS2_LEFTARROW) {
                  Mouse.move( -10, 0, 0) ;
                } else if ( boardKey == PS2_RIGHTARROW) {
                  Mouse.move( 10, 0, 0) ;
                } else if ( boardKey == PS2_UPARROW) {
                  Mouse.move( 0 , -10, 0) ;
                } else if ( boardKey == PS2_DOWNARROW) {
                  Mouse.move( 0 , 10, 0) ;
                }
    האפשרות השניה והמעניינת בהרבה היא שהמקלדת משמשת כמו טאצ'פד. כלומר, אם אני לוחץ על אות מסוימת ואז לוחץ על האות שמימין לה, העכבר יזוז ימינה מעט וככה גם לכל שאר הצדדים.
    כדי בגלל האופן שבו ממשתי את הקטע הזה בקוד, ה"שטח הרגיש" הוא רק עשרת התווים הראשונים בכל שורה כלומר 1-0, Q-P וכן הלאה.

    בכל פעם שנקלטת לחיצה על מקש הוא נכנס לתא [0] במערך המיועד לכך והערך שהיה שם מועבר לתא [1] וכן נשמר הזמן בו הוא נלחץ. את הזמן אני מקבל מהפקודה millis() שמחזירה את הזמן באלפיות שעבר מרגע תחילת הפעילות של הארדואינו. אם ההפרש בין הזמן הזה לזמן הלחיצה הקודמת גדול מ 500ms אז כנראה הם לא חלק מאותו "מהלך" ולכן לא קורה לעכבר כלום. אם שתי הלחיצות קרובות יותר אז הארדואינו שולח כל אחד מהתווים אל הפעולה getCordies הפעולה הזו מכניסה לתוך מערך בן שני תאים את ה"קורדינאטות" Y X של המקש שהיא קיבלה, עבור כל שורה הוספתי לציר X חצי כיוון שבמקלדת המקשים לא מסודרים ממש אחד מתחת לשני אלא כל שורה מוזזת טיפה הצידה.
    Click image for larger version. 

Name:	500px-Qwerty-he.svg.png 
Views:	89 
Size:	19.7 קילובייט 
ID:	2126

    מציאת המיקום של המקש נעשת בדרך די מחוכמת לדעתי, את הרעיון קיבלתי מפוסט של עידו על מכשיר המורס שלו. שיטת הגילוי הזו היא הסיבה שבכל שורת מקשים התיחסתי רק לעשרת הראשונים.
    יצרתי לי string המכיל את כל עשרת האותיות והמספרים שבארבעת השורות במקלדת 1234567890qwertyuiopasdfghjkl;zxcvbnm,./ כאשר יש לנו תו מסוים שאנו מחפשים את מקומו במקלדת אנחנו עושים indexOf. פעולה זו מקבלת תו או מחרוזת ומחזירה את המיקום שלהם בתוך המחרוזת עליה הופעלה הפעולה. במקרה הזה כיוון שיש עשרה מקשים בכל שורה סיפרת האחדות שפעולת הindexOf מחזירה היא המיקום של התו בציר X (ואליה אני מוסיף חצי לכל שורה) וספרת העשרות היא המיקום בציר Y.

    כעת, כשיש לנו את המיקום של שני התווים במקלדת פשוט מחסרים את הערכי הX של התו הראשון מהאחרון ואת ערכי הX של התו הראשון מהאחרון וזה כמה הסמן צריך לזוז בכל ציר
    והנה זה בקוד:
    קוד:
    else{
                       lastKeys[0] =lastKeys[1];
                       lastKeys[1] =boardKey ;
                       if(lastPress + 500>millis()) // the two presses are cloose = same movement
                            {
                               
                                getCordies(lastKeys[0] ,  firstKeyCordies);
                                getCordies(lastKeys[1] , lastKeyCordies);
                                
                                Mouse.move(  ( lastKeyCordies[0] - firstKeyCordies[0] )*16 ,0 , 0) ;
                                Mouse.move(  0, ( lastKeyCordies[1] - firstKeyCordies[1] )*16 , 0) ;
                            }  
              }
        lastPress = millis();  
        }
      }
      
      void getCordies (char ch, double cordies [] )
      {
         int temp = allLetters.indexOf(ch);
         int temp2; 
         temp2 = temp%10 ;
         cordies[0] = (double)temp2;
          temp2 = temp/10 ;
         cordies[1] = (double)temp2 ;
         cordies[0] += cordies[1] /2;//increase 0/5 for every row
                                                               // qwert
                                                               //     asdd
                                                               //         zxcv
          
      }
    בנתיים הכל עובד מצויין, אני אעלה בהקדם סירטון ותמונות נוספות
    נערך לאחרונה על ידי avi; 10-03-2014 בשעה 21:44-24.

  24. #22
    תאריך הצטרפות
    Feb 2013
    מיקום
    השרון
    הודעות
    4,898
    תודה
    262
    קיבל/ה 700 תודות ב-511 הודעות
    פוסטים בבלוג
    54
    תודה
    0
    Thanked 0 Times in 0 Posts
    מעניין, אולי אפשר לשלב מנגנון עקיבה של עכבר במקלדת ולהסיע אותה על השולחן
    ---==> הבייט הלבן - בלוג בנושאי מיקרו-בקרים, תכנות ומייקינג

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

  25. #23
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    שירטוט של המערכת שעשיתי בתוכנה fritzing התוכנה הזו נועדה לשירטוט מעגלים אלקטרוניים ומאפשרת לקחת רכיבים שונים ולמקם אותם על מטריצה או לוח PCB
    התוכנה גם מאפשרת לשרטט לוחות PCB בעיצוב אישי ואחר כך להזמין אותם. בקיצור תוכנה מאוד מומלצת ניתן להוריד כאן: http://fritzing.org/download/

    Click image for larger version. 

Name:	לFRIT.PNG 
Views:	101 
Size:	59.1 קילובייט 
ID:	2127

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

  26. #24
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    נספח קישוטים:

    עכשיו כשכל המערכת עובדת כמו שצריך, נשאר רק ליפות אותה קצת.
    קודם כל ציפיתי את כל החלקים החשופים שהיו בעכבר בסלוטייפ כסוף. ועכשיו העכבר נראה הרבה יותר מרשים כשלא רואים שהוא עשוי מלגו ולא רואים את החוטים
    לפני:Click image for larger version. 

Name:	DSCN4968.jpg 
Views:	97 
Size:	485.5 קילובייט 
ID:	2147

    אחרי:Click image for larger version. 

Name:	DSCN4988.jpg 
Views:	86 
Size:	455.6 קילובייט 
ID:	2148Click image for larger version. 

Name:	DSCN4989.jpg 
Views:	92 
Size:	479.6 קילובייט 
ID:	2149Click image for larger version. 

Name:	DSCN4990.jpg 
Views:	88 
Size:	475.0 קילובייט 
ID:	2150

    עבור האדואינו עצמו רציתי להכין מעין קופסא קטנה שתכסה אותו ותסתיר את כל החיבורים. אז לקחתי קופסאת פלסטיק וריססתי אותה בצבע כסוף. לצערי התרסיס לא נצמד כל כך טוב לפלסטיק ורוב הצבע נזל ולכן הקופסא נראת בצבע שקוף-כסוף ולא ממש אטומה.
    Click image for larger version. 

Name:	DSCN4978.jpg 
Views:	99 
Size:	480.5 קילובייט 
ID:	2151Click image for larger version. 

Name:	DSCN4979.jpg 
Views:	93 
Size:	514.7 קילובייט 
ID:	2152Click image for larger version. 

Name:	DSCN4980.jpg 
Views:	99 
Size:	518.5 קילובייט 
ID:	2153
    בנוסף לזה רציתי להוסיף איזה קישוט קצת יותר מתוחכם ומעניין ולא סתם יפה. החלטתי להוסיף לו פרוייקט שעשיתי כבר לפני כמה זמן אבל די מתאים לקישוט. הפרוייקט הזה הוא מעגל של לדים שבכל פעם אחד מהם מאיר לפי התור ובגלל שהם מסודרים בעיגול זה נראה כמו מעגל שמסתובב בלי הפסקה. כל המערכת הזו אינה קשורה לארדואינו בכלל מלבד אספקת החשמל והיא מבוססת על הרכיב timer ne555 והרכיב CD4017 (עידו אמר שמי שמשתמש בו מקבל בונוס מיוחד )

    הרכיב ne555 נחשב לאחד הצ'יפים הכי נמכרים. משערים שנמכרו ממנו כבר כמה מלארדי יחידות. לצ'יפ הזה יש שמונה רגליים וזהו סידורם:
    Click image for larger version. 

Name:	220px-555_Pinout.svg.png 
Views:	88 
Size:	4.9 קילובייט 
ID:	2133

    לציפ הזה יש שלושה מצבים בו הוא עובד Astable , Monostable, Bistable

    מצב Astable הוא השימוש הנפוץ ביותר ברכיב. במצב זה הרכיב מוציא גל ריבועי (פולסים פשוטים) שאורכם נקבע על פי קבל וזוג נגדים שמחברים אל הרכיב. האורכים נקבעים על פי המשוואות הבאות:
    Click image for larger version. 

Name:	6af2ef98560c97b382d3de29fbcef115.png 
Views:	88 
Size:	991 בייטים 
ID:	2134Click image for larger version. 

Name:	301x176xastable-mode-schematic.gif.pagespeed.ic.gwsX55hWo2.png 
Views:	88 
Size:	1.9 קילובייט 
ID:	2135
    (זה בדיוק המצב בו השתמשתי) אני חיברתי בR2 פוטנציומטר כך שאני יכול לשנות את הערך שלו ובכך לשנות את זמן המחזור של הגל או בעברית את קצב הפולסים שהרכיב נותן

    במצב Monostable הרכיב מוציא פולס בוארך מסויים (הנקבע גם כן לפי הנגדים והקבל שמחוברים) כתגובה לקבלת 1 לוגי ברגל הTRIG של הרכיב. לדוגמא- לד ידלק למשך חצי דקה כאשר כפתור נלחץ

    במצב Bistable הרכיב שומר על הטריגר האחרון שהגיע אליו מבין שני פינים כאשר פין אחד זה "LOW" ופין שני זה "HIGH"

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

    אם זה לא הסברתי מספיק ברור הנה שירטוט: (בכוונה הלדים לא מחוברים כיוון שהחוטים היו יוצרים עומס שמקשה על ראיית העיקר של המעגל)
    Click image for larger version. 

Name:	לכידה.PNG 
Views:	91 
Size:	76.0 קילובייט 
ID:	2136

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

    Click image for larger version. 

Name:	DSCN4970.jpg 
Views:	96 
Size:	473.3 קילובייט 
ID:	2137Click image for larger version. 

Name:	DSCN4973.jpg 
Views:	83 
Size:	512.0 קילובייט 
ID:	2138Click image for larger version. 

Name:	DSCN4975.jpg 
Views:	83 
Size:	486.1 קילובייט 
ID:	2139Click image for larger version. 

Name:	DSCN4976.jpg 
Views:	85 
Size:	515.0 קילובייט 
ID:	2140

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

    Click image for larger version. 

Name:	DSCN4982.jpg 
Views:	98 
Size:	504.3 קילובייט 
ID:	2141Click image for larger version. 

Name:	DSCN4983.jpg 
Views:	84 
Size:	513.0 קילובייט 
ID:	2142Click image for larger version. 

Name:	DSCN4984.jpg 
Views:	96 
Size:	493.2 קילובייט 
ID:	2143Click image for larger version. 

Name:	DSCN4985.jpg 
Views:	93 
Size:	505.0 קילובייט 
ID:	2144Click image for larger version. 

Name:	DSCN4986.jpg 
Views:	90 
Size:	499.8 קילובייט 
ID:	2145Click image for larger version. 

Name:	DSCN4987.jpg 
Views:	86 
Size:	484.6 קילובייט 
ID:	2146

    אני מקווה שעד הערב אני אספיק להעלות סירטון
    נערך לאחרונה על ידי avi; 11-03-2014 בשעה 11:57-24.

  27. #25
    תאריך הצטרפות
    Feb 2013
    הודעות
    1,849
    תודה
    368
    קיבל/ה 218 תודות ב-188 הודעות
    פוסטים בבלוג
    3
    תודה
    0
    Thanked 0 Times in 0 Posts
    סירטון של המערכת בפעולה

הרשאות פרסום

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