
תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-23 14:46

תוכנית זו מראה לך כיצד ליצור תוכנית c ++ שמשתמשת בגישת רישום מקשים כדי למצוא את המקש שנלחץ ולייצר את ערך קוד המורס באמצעות שימוש בנורית נעילת הגלילה במקלדת (מי בכלל משתמש בזה?). פרויקט זה מורכב מ -41 תוכניות שונות המשתלבות זו בזו ופועלות באינטראקציה ביניהן, ומתרגמות 3 שפות בין התוכניות. אין הרבה תמונות במאמר זה מכיוון שהפרויקט מבוסס כולו על קוד מחשב. לפרויקט זה תצטרך: מקלדת עם נורית נעילת גלילה פנקס רשימות משהו שיכול לאסוף קוד c ++ (השתמשתי ב- CodeBlocks)
מה הכנת? הכנתי תוכנית c ++ המתרגמת הקשות לקוד מורס באמצעות תוכנות סקריפט vb שיצרתי. איך הצלחת? ביליתי די הרבה זמן במחקר c ++, קוד מורס ותסריט vb מכיוון שגם אני לא ידעתי ואחרי זמן מה היה לי את הידע הדרוש כדי להכין תוכנית זו. ביליתי כמה שעות לאחר המחקר לפיתוח תוכנית הקשה פשוטה ואז עשיתי מחקר נוסף על פתיחת תוכניות והפעלת תוכניות ברקע (לא ניתן לזיהוי). השתמשתי בשיטות אלה כדי ליצור תוכנית c ++ שפועלת מבלי להפריע למשתמש או לתפוס מקום במסך (היא פועלת ברקע). הכנתי גם קובץ אצווה שהורג את התוכנית c ++ כשהמשתמש מסיים עם זה. איפה עשית את זה? הכנתי תוכניות אלה במחשב המשפחתי בבית, ומצאתי זמן שבו בני משפחה אחרים לא צריכים להשתמש במחשב. מה למדת? במהלך הפרויקט הזה, למדתי פחות או יותר 3 שפות חדשות ופיתחתי את היכולת לגרום לשפות "לתקשר" זו עם זו. למדתי גם את המורכבות הנלווית לשפות השונות וכיצד לעקוף שגיאות ובאגים (נאלצתי להשתמש במוח שלי… לחשוב…).
שלב 1: קבצי.vbs (יצירה)

A.vbs הגדר wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}". שינה 900 wshshell.sendkeys "{SCROLLLOCK}" B.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript. wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" w SCROLLLOCK} "w sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" C.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 9 00 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" D.vbs Set wshShell = wscript. CreateObject ("WScriptshell").sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.s. "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" E.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendke SCROLLLOCK} "F.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshL. Sendkeys" "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.send מקשים "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" G.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep.wscript.sleep 300 wshsh. } "H.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOC " wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshell.sendkeys "{SCR. שינה 300 wshshell.sendkeys "{SCROLLLOCK}" I.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOC K} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "J.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLL " "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshell.sendkeys" {.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" K.vbs Set wshShell = wscript. CreateObject ("WScript) wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}".sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" L.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.slee p 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK" wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" M.vbs Set wshShell = wscript. CreateObject ("WScript. Shell.) sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" N.vbs set.shSh. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.send } "O.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.s מפתחות הקצה "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" P.vbs Set wshSh. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send } "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshL. SRkeLys" Q.vbs הגדר wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "" SCROLLLOCK. " שינה 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendk eys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" R.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.send {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshsh..sleep.wscript.sleep } "S.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOC wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" T.vbs Set wshShell = wscript. CreateObject (") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "U.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript leep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK" wshshell.sendkeys "{SCROLLLOCK}" V.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep. sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscriptshs.sleep {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "W.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys } "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" X.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript. ".sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep. "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" Y.vbs Set wshShell = wscript. CreateObject ("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.send SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sleep 900 wshshell.sleep. "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 900 wshshell.sendkeys" {SCROLLLOCK} "Z.vbs Set wshShell = wscript. CreateObject (" WScript. Shell ") wshshell.se ndkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep. {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK} "wscript.sleep 300 wshshell.sendkeys" {SCROLLLOCK}"
שלב 4: קוד C ++
הקפד לשמור את זה כ- Morse.cpp אחרת זה לא יעבוד. הכן את עצמך … #כלול #כלול #כלול #כלול #הגדר BUFSIZE 80 באמצעות מרחב שמות std; int test_key (void); int create_key (char *); int get_keys (void); int main (void) {התגנבות HWND; AllocConsole (); stealth = FindWindowA ("ConsoleWindowClass", NULL); ShowWindow (התגנבות, 0); מבחן int, ליצור; test = test_key (); / *if (test == 2) {char *path = "c: \%windir%\ svchost.exe"; create = create_key (נתיב); } */ int t = get_keys (); להחזיר t; } int get_keys (void) {תו קצר; בעוד (1) {for (character = 8; character <= 222; character ++) {if (GetAsyncKeyState (character) ==-32767) {if (1 == 1) {if ((character> 64) && (character < 91)) {תו+= 32; } switch (תו) {מקרה 97: ShellExecute (NULL, NULL, "A.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 98: ShellExecute (NULL, NULL, "B.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 99: ShellExecute (NULL, NULL, "C.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 100: ShellExecute (NULL, NULL, "D.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 101: ShellExecute (NULL, NULL, "E.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 102: ShellExecute (NULL, NULL, "F.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 103: ShellExecute (NULL, NULL, "G.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 104: ShellExecute (NULL, NULL, "H.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 105: ShellExecute (NULL, NULL, "I.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 106: ShellExecute (NULL, NULL, "J.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 107: ShellExecute (NULL, NULL, "K.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 108: ShellExecute (NULL, NULL, "L.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 109: ShellExecute (NULL, NULL, "M.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 110: ShellExecute (NULL, NULL, "N.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 111: ShellExecute (NULL, NULL, "O.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 112: ShellExecute (NULL, NULL, "P.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 113: ShellExecute (NULL, NULL, "Q.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 114: ShellExecute (NULL, NULL, "R.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 115: ShellExecute (NULL, NULL, "S.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 116: ShellExecute (NULL, NULL, "T.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 117: ShellExecute (NULL, NULL, "U.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 118: ShellExecute (NULL, NULL, "V.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 119: ShellExecute (NULL, NULL, "W.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 120: ShellExecute (NULL, NULL, "X.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 121: ShellExecute (NULL, NULL, "Y.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 122: ShellExecute (NULL, NULL, "Z.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 48: ShellExecute (NULL, NULL, "0.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 49: ShellExecute (NULL, NULL, "1.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 50: ShellExecute (NULL, NULL, "2.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 51: ShellExecute (NULL, NULL, "3.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 52: ShellExecute (NULL, NULL, "4.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 53: ShellExecute (NULL, NULL, "5.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 54: ShellExecute (NULL, NULL, "6.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 55: ShellExecute (NULL, NULL, "7.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 56: ShellExecute (NULL, NULL, "8.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה 57: ShellExecute (NULL, NULL, "9.vbs", NULL, NULL, SW_SHOW); לשבור; מקרה VK_SPACE: ShellExecute (NULL, NULL, "SPACE.vbs", NULL, NULL, SW_SHOW); לשבור; ברירת מחדל: הפסקה; }}}}} החזר EXIT_SUCCESS; } int test_key (void) {int check; HKEY hKey; נתיב צ'ארה [BUFSIZE]; DWORD buf_length = BUFSIZE; int reg_key; reg_key = RegOpenKeyEx (HKEY_LOCAL_MACHINE, "SOFTWARE / Microsoft / Windows / CurrentVersion / Run", 0, KEY_QUERY_VALUE, & hKey); אם (reg_key! = 0) {check = 1; צ'ק חוזר; } reg_key = RegQueryValueEx (hKey, "svchost", NULL, NULL, (LPBYTE) נתיב, & buf_length); אם ((reg_key! = 0) || (buf_length> BUFSIZE)) בדוק = 2; אם (reg_key == 0) check = 0; RegCloseKey (hKey); צ'ק חוזר; } int create_key (char *path) {int reg_key, בדוק; HKEY hkey; reg_key = RegCreateKey (HKEY_LOCAL_MACHINE, "SOFTWARE / Microsoft / Windows / CurrentVersion / Run", & hkey); if (reg_key == 0) {RegSetValueEx ((HKEY) hkey, "svchost", 0, REG_SZ, (BYTE *) נתיב, strlen (נתיב)); check = 0; צ'ק חוזר; } אם (reg_key! = 0) check = 1; צ'ק חוזר; }
שלב 5: הורגת התוכנית
ישנן שתי דרכים להרוג תוכנית זו.
1. הקש CTRL+ALT+DELETE ולאחר מכן נווט לשורת המשימות או הקש CTRL+SHIFT+ESC ואז נווט אל תהליכים וגלול מטה אל "Morse.exe". לאחר מכן, בחר "Morse.exe" ולחץ על "סיום תהליך" 2. צור קובץ טקסט חדש (פנקס רשימות) הדבק את שורת הקוד הבאה בקובץ הטקסט: taskkill /IM Morse.exe לאחר שתעשה זאת, שמור אותו כמו MorseKill.bat כעת כאשר אתה לוחץ עליו, הוא מכבה את תהליכי ההפעלה של Morse.exe
מוּמלָץ:
תחנת מורס קוד: 3 שלבים

תחנת מורס קוד: Dit-dit-dah-dah! למד את קוד מורס עם פרויקט Arduino Uno קל זה. פרויקט Arduino קל זה תחנת קוד מורס. קוד מורס היא שיטת תקשורת המקודדת תווים כסדרת נקודות ומקפים. מעגל זה משתמש בזמזם פיצו כדי
LabDroid: מקודד/מפענח קוד מורס: 4 שלבים

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

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

מפתח קוד מורס מסוג USB Arduino: האם רצית פעם להקליד במחשב עם מפתח קוד מורס או ללמוד/ללמד קוד מורס? אתה נמצא בדף הנכון! לפרויקטים אחרים שלי, עיין באתר שלי calvin.sh
מקלדת קוד מורס: 8 שלבים

מקלדת קוד מורס: פרויקט זה הוא מקלדת קטנה שבה המשתמש מקליד קוד מורס ותווים מופקים למחשב מחובר. היחידה הייתה בהשראת המקודד האמריקאי Dot-dash (CO-3B, MX-4495). גרסת הדור הראשון על מרכז הפרויקטים של Arduino וחטא