Kazalo:

Vmesnik rotacijskega telefonskega števca na Arduino: 6 korakov (s slikami)
Vmesnik rotacijskega telefonskega števca na Arduino: 6 korakov (s slikami)

Video: Vmesnik rotacijskega telefonskega števca na Arduino: 6 korakov (s slikami)

Video: Vmesnik rotacijskega telefonskega števca na Arduino: 6 korakov (s slikami)
Video: Реставрация винтажного телефона с дисковым набором 1980 года 2024, November
Anonim
Povežite rotacijski telefonski številčnik z Arduinom
Povežite rotacijski telefonski številčnik z Arduinom
Povežite rotacijski telefonski številčnik z Arduinom
Povežite rotacijski telefonski številčnik z Arduinom

Stari vrtljivi telefon lahko uporabite za različne namene v svojih projektih Arduino - uporabite ga kot novo vhodno napravo ali uporabite Arduino za povezovanje vrtljivega telefona z računalnikom. na Arduino in klicano številko prenesite v računalnik prek serijske povezave Arduino.

1. korak: Odstranite številčnico s telefona

Odstranite številčnico s telefona
Odstranite številčnico s telefona
Odstranite številčnico s telefona
Odstranite številčnico s telefona
Odstranite številčnico s telefona
Odstranite številčnico s telefona

Prvi korak je, da številčnico odstranite iz telefona. Uporabljam nekakšen GPO telefon iz sedemdesetih let prejšnjega stoletja. Na tem telefonu je številčnica kar poletela - le potegniti ga moram. Če ne, boste morda morali odpreti telefon in ugotoviti, kako ga odstraniti. Na zadnjo stran številčnice je bilo priključenih pet kablov. V mojem telefonu so bile to običajne lopate, zato sem odvijal vijake in jih izvlekel. Če želite telefon znova sestaviti, ne pozabite zapisati, katera barvna žica gre na katero povezavo.

2. korak: Prepoznajte stikalo

Prepoznajte stikalo
Prepoznajte stikalo

Ko je številčnica izklopljena, bi moralo biti razmeroma enostavno videti, kako številčnica pretvori rotacijsko gibanje v impulze. Poskusite ročno zavrteti številčnico in opazovati gibanje na zadnji strani. Videti bi morali, da stikalo hitro ustvarja in prekinja vezje - če torej pokličete '9', se mora stikalo vklopiti devetkrat. Za tiste, ki morda še nikoli niste uporabljali vrtljivega gumba - ne pozabite, da se klicanje zgodi le, če pustite pojdi na številko in jo pusti nazaj. Dokumentiral sem, kako deluje za moj telefon v opombah na spodnji fotografiji. Obstaja tudi zamegljen videoposnetek delovanja mehanizma.

3. korak: Naredite vezje

Naredite vezje
Naredite vezje
Naredite vezje
Naredite vezje

Ko najdete stikalo, ki je vklopljeno in pokvarjeno, bi morali biti sposobni prepoznati povezave po žicah nazaj do priključnih sponk. V mojem primeru sta obe strani stikala povezani z dvema skrajnima levima priključkoma. Priključite te sponke na nekaj mostičnih žic in si zagotovite izdelavo prototipov! Stikalo na mojem številčnici je vedno vklopljeno in je pri vsakem klicu prekinjeno za vsak impulz, zato sem uporabil zelo preprosto spodnje vezje. Pin 2 bo pri vsakem impulzu šel v višino pri vrtenju številčnice. Ko se telefon ne kliče, je stikalo v številčnici zaprto (tako imenovano stikalo NORMALNO ZAPRTO, iz očitnih razlogov), zato vezje poveže pin 2 z maso (ki je do Arduina NIZKA). To je zato, ker je upor 470 ohmov veliko manjši od upora 10 K. Ko se telefon kliče, se stikalo hitro odpre in zapre (za 9 se bo odprlo in zaprlo devetkrat, ne pozabite). Ko je stikalo odprto, pin 2 ni priključen na maso - namesto tega je priključen na 5V napajanje z uporom 10470 ohmov. Arduino to interpretira kot HIGH. Če ima vaša številčnica stikalo NORMALLY OPEN, potem zamenjajte položaje 10K upora in številčnica bi morala narediti trik.

4. korak: Razvoj kodeksa

Razvijte kodeks
Razvijte kodeks

Zdaj potrebujemo kodo za Arduino, da šteje impulze in pošlje skupno število na klicano številko nazaj skozi serijska vrata. Moja koda je spodaj. Ker imamo tukaj opravka z mehaniko, se lahko vaša razlikuje. Poskusite se poigrati s konstanto debounce in konstanto "koliko časa čakamo, preden predpostavimo, da se je številčnica končala". Poskušal sem jo čim bolj komentirati. Upajmo, da je zelo preprosto. void setup () {Serial.begin (9600); pinMode (in, INPUT);} void loop () {int reading = digitalRead (in); if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// številčnica ni klicana ali je bila pravkar končana. if (needToPrint) {// če je klic šele končan, moramo poslati številko po serijski // vrstici in ponastaviti štetje. Število smo spremenili za 10, ker bo '0' poslalo 10 impulzov. Serial.print (število % 10, DEC); needToPrint = 0; count = 0; očiščeno = 0; }} if (branje! = lastState) {lastStateChangeTime = millis (); } if ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - to se zgodi, ko se stabilizira if (branje! = trueState) {// to pomeni, da je stikalo pravkar prešlo iz zaprto-> odprto ali obratno. trueState = branje; if (trueState == HIGH) {// poveča število impulzov, če je visoko. count ++; needToPrint = 1; // to številko bomo morali natisniti (ko se števec konča z vrtenjem)}}} lastState = branje;}

5. korak: Preverite, ali deluje

Preverite, ali deluje, tako da odprete serijsko okno (uporabljam zaslon na unix stroju, v sistemu Windows boste morda želeli uporabiti Hyperterm ali podobno) in poskusite poklicati nekaj številk. Poskrbite, da je serijski program nastavljen za branje z USB-priključka. > serijski vmesnik v vašem Arduinu (preverite meni Orodja-> Serijska vrata v programski opremi Arduino, če pozabite, kaj je to) in hitrost prenosa 9600 b / s. Ko se pokliče, se prikaže prava številka.

6. korak: Priključite ga v nekaj uporabnega

Priključite ga v nekaj uporabnega!
Priključite ga v nekaj uporabnega!

Na svojem Macu sem si omislil datoteko Quartz Composer, da bi vnos vnesel in ga lepo upodobil na zaslon. Ko je v stroju kot serijski podatek, lahko z njim naredite karkoli. Čakamo na vaše ideje! Pripravil bom videoposnetek tega "v akciji" in natisnil številke na zaslon, takoj ko dobim nekoga da mi drži fotoaparat - želim si, da bi imel tri roke.

Priporočena: