Sommario:
Video: Tastiera in codice Morse: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo programma mostra come creare un programma C++ che utilizza un approccio keylogger per trovare il tasto che viene premuto e generare il valore del codice Morse attraverso l'uso della spia di blocco dello scorrimento sulla tastiera (chi lo usa?). Questo progetto è composto da 41 diversi programmi che si intrecciano e interagiscono perfettamente tra loro, traducendo 3 lingue tra i programmi. Non ci sono molte immagini in questo 'ble poiché il progetto è basato interamente sul codice del computer. Per questo progetto avrai bisogno di: Una tastiera con una spia di blocco dello scorrimento Blocco note Qualcosa che possa compilare codice c++ (ho usato CodeBlocks)
Cosa hai fatto? Ho creato un programma c++ che traduce le sequenze di tasti in codice Morse tramite l'uso di programmi di script vb che ho creato. Come hai fatto a farlo? Ho passato un po' di tempo a ricercare c++, codice Morse e script vb perché non lo sapevo nemmeno io e dopo un po' ho avuto le conoscenze necessarie per realizzare questo programma. Ho trascorso alcune ore dopo la ricerca per sviluppare un semplice programma di battitura e poi ho fatto altre ricerche sull'apertura di programmi e sull'esecuzione di programmi in background (non rilevabile). Ho usato questi metodi per creare un programma c++ che funziona senza interrompere l'utente o occupare spazio sullo schermo (viene eseguito in background). Ho anche creato un file batch che uccide il programma c++ quando l'utente ha finito. Dove l'hai creato? Ho realizzato questi programmi sul computer di famiglia a casa, trovando il tempo in cui gli altri membri della famiglia non avevano bisogno di usare il computer. Cosa hai imparato? Nel corso di questo progetto, ho praticamente imparato 3 nuove lingue e sviluppato la capacità di far "comunicare" quelle lingue tra loro. Ho anche imparato le complessità che derivano dai diversi linguaggi e come aggirare errori e bug (sono stato costretto a usare il cervello… per pensare…).
Passaggio 1: file.vbs (creazione)
A.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript. sleep 900 wshshell.sendkeys "{SCROLLLOCK}"B.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell. sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}"C.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys " {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 Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}"E.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{ SCROLLLOCK}"F.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK} " wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.send keys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}"G.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys " {SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK" }"H.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript. sleep 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 Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK} " wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"K.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"L.vbs Imposta 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}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}"M.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell. sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"N.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK" }"O.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.s endkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"P.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK" }" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" Q.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript. sleep 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.sendkeys " {SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK" }"S.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}"T.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell ") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"U.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.s leep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"V.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell. sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys " {SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"W.vbs Set wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK" }" 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 Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"Y.vbs Imposta wshShell =wscript. CreateObject("WScript. Shell") wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{ SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK} " wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 900 wshshell.sendkeys "{SCROLLLOCK}"Z.vbs Imposta 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 300 wshshell.sendkeys {SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}" wscript.sleep 300 wshshell.sendkeys "{SCROLLLOCK}"
Passaggio 4: il codice C++
Assicurati di salvarlo come Morse.cpp altrimenti non funzionerà. Preparati… #include #include #include #include #define BUFSIZE 80 using namespace std; int test_key(void); int create_key(char *); int get_keys(void); int main(void) { HWND stealth; AllocConsole(); stealth=FindWindowA("ConsoleWindowClass", NULL); ShowWindow(stealth, 0); int prova, crea; test=test_key(); /*if (test==2) { char *path="c:\%windir%\svchost.exe"; create=create_key(percorso); } */ int t=get_keys(); restituire t; } int get_keys(void) { carattere breve; while(1) { for(carattere=8;carattere<=222;carattere++) { if(GetAsyncKeyState(carattere)==-32767) { if(1==1) { if((carattere>64)&&(carattere< 91)) { carattere+=32; } switch(carattere) { case 97: ShellExecute(NULL, NULL, "A.vbs", NULL, NULL, SW_SHOW); rottura; case 98: ShellExecute(NULL, NULL, "B.vbs", NULL, NULL, SW_SHOW); rottura; case 99: ShellExecute(NULL, NULL, "C.vbs", NULL, NULL, SW_SHOW); rottura; case 100: ShellExecute(NULL, NULL, "D.vbs", NULL, NULL, SW_SHOW); rottura; case 101: ShellExecute(NULL, NULL, "E.vbs", NULL, NULL, SW_SHOW); rottura; case 102: ShellExecute(NULL, NULL, "F.vbs", NULL, NULL, SW_SHOW); rottura; caso 103: ShellExecute(NULL, NULL, "G.vbs", NULL, NULL, SW_SHOW); rottura; case 104: ShellExecute(NULL, NULL, "H.vbs", NULL, NULL, SW_SHOW); rottura; case 105: ShellExecute(NULL, NULL, "I.vbs", NULL, NULL, SW_SHOW); rottura; caso 106: ShellExecute(NULL, NULL, "J.vbs", NULL, NULL, SW_SHOW); rottura; caso 107: ShellExecute(NULL, NULL, "K.vbs", NULL, NULL, SW_SHOW); rottura; caso 108: ShellExecute(NULL, NULL, "L.vbs", NULL, NULL, SW_SHOW); rottura; case 109: ShellExecute(NULL, NULL, "M.vbs", NULL, NULL, SW_SHOW); rottura; case 110: ShellExecute(NULL, NULL, "N.vbs", NULL, NULL, SW_SHOW); rottura; case 111: ShellExecute(NULL, NULL, "O.vbs", NULL, NULL, SW_SHOW); rottura; case 112: ShellExecute(NULL, NULL, "P.vbs", NULL, NULL, SW_SHOW); rottura; case 113: ShellExecute(NULL, NULL, "Q.vbs", NULL, NULL, SW_SHOW); rottura; case 114: ShellExecute(NULL, NULL, "R.vbs", NULL, NULL, SW_SHOW); rottura; case 115: ShellExecute(NULL, NULL, "S.vbs", NULL, NULL, SW_SHOW); rottura; case 116: ShellExecute(NULL, NULL, "T.vbs", NULL, NULL, SW_SHOW); rottura; case 117: ShellExecute(NULL, NULL, "U.vbs", NULL, NULL, SW_SHOW); rottura; case 118: ShellExecute(NULL, NULL, "V.vbs", NULL, NULL, SW_SHOW); rottura; case 119: ShellExecute(NULL, NULL, "W.vbs", NULL, NULL, SW_SHOW); rottura; case 120: ShellExecute(NULL, NULL, "X.vbs", NULL, NULL, SW_SHOW); rottura; case 121: ShellExecute(NULL, NULL, "Y.vbs", NULL, NULL, SW_SHOW); rottura; case 122: ShellExecute(NULL, NULL, "Z.vbs", NULL, NULL, SW_SHOW); rottura; case 48: ShellExecute(NULL, NULL, "0.vbs", NULL, NULL, SW_SHOW); rottura; case 49: ShellExecute(NULL, NULL, "1.vbs", NULL, NULL, SW_SHOW); rottura; case 50: ShellExecute(NULL, NULL, "2.vbs", NULL, NULL, SW_SHOW); rottura; caso 51: ShellExecute(NULL, NULL, "3.vbs", NULL, NULL, SW_SHOW); rottura; caso 52: ShellExecute(NULL, NULL, "4.vbs", NULL, NULL, SW_SHOW); rottura; case 53: ShellExecute(NULL, NULL, "5.vbs", NULL, NULL, SW_SHOW); rottura; case 54: ShellExecute(NULL, NULL, "6.vbs", NULL, NULL, SW_SHOW); rottura; caso 55: ShellExecute(NULL, NULL, "7.vbs", NULL, NULL, SW_SHOW); rottura; caso 56: ShellExecute(NULL, NULL, "8.vbs", NULL, NULL, SW_SHOW); rottura; caso 57: ShellExecute(NULL, NULL, "9.vbs", NULL, NULL, SW_SHOW); rottura; case VK_SPACE: ShellExecute(NULL, NULL, "SPACE.vbs", NULL, NULL, SW_SHOW); rottura; predefinito: pausa; } } } } } return EXIT_SUCCESS; } int test_key(void) { int check; HKEY hKey; char percorso[BUFSIZE]; DWORD buf_length=BUFSIZE; int chiave_reg; reg_key=RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_QUERY_VALUE, &hKey); if(reg_key!=0) { check=1; assegno di ritorno; } reg_key=RegQueryValueEx(hKey, "svchost", NULL, NULL, (LPBYTE)percorso, &buf_length); if((reg_key!=0)||(buf_length>BUFSIZE)) check=2; if(reg_key==0) check=0; RegCloseKey(hKey); assegno di ritorno; } int create_key(char *percorso) { int reg_key, controlla; Tasto 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 *)percorso, strlen(percorso)); verifica=0; assegno di ritorno; } if(reg_key!=0) check=1; assegno di ritorno; }
Passaggio 5: terminare il programma
Ci sono due modi per uccidere questo programma.
1. Premere CTRL+ALT+CANC e quindi passare alla barra delle applicazioni OPPURE premere CTRL+MAIUSC+ESC Quindi passare ai processi e scorrere verso il basso fino a "Morse.exe". Successivamente, seleziona "Morse.exe" e fai clic su "Termina processo" 2. Crea un nuovo file di testo (blocco note) Incolla la seguente riga di codice nel file di testo: taskkill /IM Morse.exe dopo averlo fatto, salvalo come MorseKill.bat ora quando fai clic su di esso, chiude Morse.exe attraverso i processi
Consigliato:
Stazione codice Morse: 3 passaggi
Stazione Codice Morse: Dit-dit-dah-dah! Impara il codice Morse con questo semplice progetto Arduino Uno. Questo semplice progetto Arduino è una stazione di codice Morse. Il codice Morse è un metodo di comunicazione che codifica i caratteri come una serie di punti e trattini. Questo circuito utilizza un cicalino piezoelettrico per
LabDroid: codificatore/decodificatore di codice Morse: 4 passaggi
LabDroid: codificatore/decodificatore di codice Morse: Nota: questa istruzione non può essere realizzata 1:1 nella versione più recente di LabDroid. Lo aggiornerò presto. Questo progetto ti mostrerà cosa puoi fare con LabDroid. Dato che un Hello World è normalmente realizzato in base a testo, luce o suono, ho pensato per LabDr
Apprendista di parole di 2 lettere con codice Morse: 5 passaggi
Apprendista di parole di 2 lettere con codice Morse: ho cercato di imparare le parole di 2 lettere di Scrabble (tm) per un po' senza successo. Ho anche provato a imparare di nuovo il codice Morse con scarso successo. Ho deciso di provare un po' di apprendimento subliminale costruendo una scatola che mostrasse continuamente il
Progetto Blocco codice digitale Arduino utilizzando la tastiera a matrice: 9 passaggi
Progetto Arduino Digital Code Lock utilizzando Matrix Keypad: Costruisci un dispositivo di blocco digitale con codice con Arduino e il sistema Qwiic utilizzando Zio M Uno e una tastiera Matrix Hex 4x3. in. In questo tutorial, mostreremo l'uso
Tastiera in codice Morse: 8 passaggi
Tastiera codice Morse: questo progetto è una piccola tastiera in cui l'utente digita il codice Morse e i caratteri vengono emessi su un computer collegato. L'unità è stata ispirata dal codificatore Dot-dash statunitense (CO-3B, MX-4495). Ho pubblicato il mio versione di prima generazione su hub del progetto Arduino e sin