Popularny post TPReal Napisano Październik 22, 2020 Popularny post Udostępnij Napisano Październik 22, 2020 Sprzęt Lubię stary sprzęt, nie tylko komputerowy. Zdobyłem starą tarczę telefoniczną, wyczyściłem styki i uformowałem różne elementy które się pogięły, a następnie postanowiłem zrobić z tego klawiaturę. Przykleiłem na spodzie tarczy Seeeduino Xiao (taśmą dwustronną), wylutowałem oryginalny sznur i dodałem trzy przewody, starając się zresztą użyć tych samych kolorów, które były tam oryginalnie, chociaż wątpię czy jest na to jakiś ustalony standard. Sprzęt nie był wygodny do trzymania i łatwo było przypadkowo palcem zablokować mechanizm, więc złożyłem małe pudełko ze sklejki. (Na wszelki wypadek wyjaśnię jak się używa takiej tarczy. Żeby wybrać jakąś cyfrę, wkłada się palec w odpowiednią dziurę w tarczy, a następnie obraca tarczę w kierunku ruchu wskazówek zegara aż do momentu gdy palec zatrzyma się na tej metalowej blaszce. Tarcza, puszczona, wraca do położenia początkowego, w międzyczasie wykręcając numer w trybie pulsowym, czyli rozwierając i zwierając przewody, którymi telefon połączony jest z centralą.) Oprogramowanie Ustaliłem eksperymentalnie (z pomocą mojej pokazywaczki Hantek, która do tego celu była w sam raz) jakie sygnały nadaje tarcza. Otóż normalnie pin czerwony nie jest zwarty z żółtym, ale jeśli tarcza jest przynajmniej trochę obrócona, to się zwierają. Natomiast pin zielony jest normalnie zwarty z czerwonym, natomiast w czasie gdy tarcza się cofa, to to coś na wierzchu tej mniejszej zębatki rozwiera je i zwiera. Tych "pulsów" jest mianowicie tyle, z jakiej cyfry tarcza wraca (10 dla cyfry 0). Odczytanie wybranej na tarczy cyfry jest więc dość proste, na przykład tak: void setup() { pinMode(PIN_YELLOW,INPUT_PULLUP); pinMode(PIN_GREEN,INPUT_PULLUP); pinMode(PIN_RED,OUTPUT); digitalWrite(PIN_RED,LOW); } void dialledDigit(int d){ // Cyfra wybrana } void loop() { if(digitalRead(PIN_YELLOW)==LOW){ int p=0; byte prevG=LOW; delay(20); while(digitalRead(PIN_YELLOW)==LOW){ byte g=digitalRead(PIN_GREEN); if(g>prevG) p++; prevG=g; digitalWrite(LED_BUILTIN,!g); delay(10); } digitalWrite(LED_BUILTIN,HIGH); if(p) dialledDigit(p%10); } delay(5); } Najprostsze co można dalej zrobić, to użyć funkcji z Keyboard.h i wysyłać wybrane cyfry, ale taka klawiatura potrafi wpisywać tylko cyfry, a to trochę mało. Dlatego doimplementowałem tryb ASCII, który działa tak, że wybiera się kolejne cyfry kodu ASCII znaku, który chce się wpisać. Czyli żeby napisać 'A' (=65), trzeba wybrać 6 a potem 5. Większość kodów dwucyfrowych łatwo odróżnić od trzycyfrowych - wiadomo, że 65 nie jest początkiem trzycyfrowej liczby, bo maksymalna wartość kodu to 255. Natomiast kody poniżej 26 trzeba poprzedzić zerem. To jednak nadal za mało, bo chciałem również móc przytrzymywać klawisze, na przykład do tego, żeby pisać polskie litery z prawym altem, a także do innych operacji na przykład na tekście. Dlatego dodałem jeszcze następujące funkcje: Kod poprzedzony przez 00 oznacza, że klawisz należy przytrzymać. Gdy później wybrany zostanie dowolny kod bez 00, to ten klawisz zostanie puszczony. Kod poprzedzony przez 0000 oznacza, że klawisz należy przytrzymać, i trzymać tak długo, aż ponownie zostanie wybrany jego kod. Tryby zmienia się generując większą niż 10 liczbę pulsów. Żeby to osiągnąć, należy naciągnąć tarczę, potem pozwolić jej się cofnąć, ale tylko częściowo, i naciągnąć ponownie. W ten sposób liczba pulsów w czasie, gdy pin czerwony jest zwarty z żółtym, może być dowolnie duża. Efekt (oglądać z włączonymi napisami!): Łatwiej mi było nagrać klawiaturę podłączoną do telefonu niż do komputera, działa oczywiście tak samo. Można też oczywiście użyć tarczy do... wybierania numeru, wystarczy uruchomić aplikację telefonu 🙂 Możliwe zastosowania projektu No cóż... 🙂 Jak się można domyślić, ta klawiatura nie jest specjalnie ergonomiczna i nie ma prawdziwego zastosowania. Natomiast można by było wykorzystać taką tarczę jako część większego projektu, na przykład zamka szyfrowego. 7 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Październik 23, 2020 Udostępnij Październik 23, 2020 @TPReal witam na forum i gratuluję zaskakujący oryginalnej konstrukcji! Opis został opublikowany, więc jest już publicznie widoczny 🙂 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »