Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Stari rotacijski telefon može se koristiti u brojne svrhe u vašim Arduino projektima - koristite ga kao novi ulazni uređaj ili koristite Arduino za povezivanje rotacijskog telefona s vašim računarom. Ovo je vrlo osnovni vodič koji opisuje kako spojiti brojčanik na Arduino i birajte birani broj u računar preko Arduinove serijske veze.
Korak 1: Uklonite brojčanik s telefona
Prvi korak je da uklonite brojčanik iz telefona. Koristim GPO telefon iz 1970 -ih. Na ovom telefonu brojčanik je iskočio - samo sam ga trebao povući. Ako se to ne dogodi, možda ćete morati otvoriti telefon i smisliti kako ga skinuti. Bilo je pet kabela spojenih na stražnju stranu brojčanika. Na mom telefonu to su bile uobičajene veze lopatica, pa sam olabavio vijke i izvukao ih. Ako želite ponovno sastaviti telefon, ne zaboravite zabilježiti koja žica u boji ide na koju vezu.
Korak 2: Identificirajte prekidač
Nakon što je brojčanik van, trebalo bi biti relativno lako vidjeti kako brojčanik pretvara rotacijsko kretanje u impulse. Pokušajte okretati brojčanik ručno i promatrajte kretanje na stražnjoj strani. Trebali biste vidjeti kako prekidač brzo stvara i prekida krug - pa ako pozovete '9', prekidač bi se trebao aktivirati devet puta. Za one od vas koji možda nikada prije niste koristili okretni brojčanik - imajte na umu da se biranje događa samo kada dopustite idite na broj i pustite ga da se premota. Dokumentirao sam kako radi za moj telefon u bilješkama na fotografiji ispod. Tu je i mutni video zapis o mehanizmu koji radi.
Korak 3: Napravite krug
Nakon što pronađete prekidač koji je napravljen i slomljen, trebali biste moći identificirati veze slijedeći žice natrag do priključaka za povezivanje. U mom slučaju, dvije strane prekidača spojene su na dva krajnja lijeva terminala. Priključite ove terminale na neke kratkospojne žice i nabavite prototipove! Prekidač na brojčaniku je uvijek uključen i prekida se pri svakom impulsu pri biranju, pa sam upotrijebio vrlo jednostavno kolo u nastavku. Pin 2 će se povećavati za svaki impuls kako se brojčanik okreće. Kada se telefon ne bira, prekidač u jedinici za biranje je zatvoren (tzv. NORMALNO ZATVOREN prekidač, iz očiglednih razloga) pa kolo povezuje pin 2 na masu (što je za Arduino NISKO). To je zato što otpor ima otpornik od 470 ohma mnogo manji nego otpornik od 10K. Prilikom biranja telefona prekidač se brzo otvara i zatvara (za 9 će se otvoriti i ponovo zatvoriti devet puta, zapamtite). Kad je prekidač otvoren, pin 2 nije spojen na masu - umjesto toga, spojen je na 5V napajanje kroz otpor od 10470 ohma. Arduino ovo tumači kao HIGH. Ako vaš brojčanik ima prekidač NORMALLY OPEN, tada zamjena položaja 10K otpornika i brojčanik bi trebali uspjeti.
Korak 4: Razvijte Kodeks
Sada nam je potreban neki kod za Arduino da broji impulse i šalje ukupan broj po biranom broju nazad kroz serijski port. Moj kôd je ispod. Kako ovdje imamo posla s mehanikom, vaši se mogu razlikovati. Pokušajte se poigrati konstantom debounce i konstantom 'koliko čekamo prije nego što pretpostavimo da je brojčanik završio rotiranje'. Pokušao sam to komentirati što je moguće urednije. Nadajmo se da je to prilično jednostavno.int needToPrint = 0; int count; int in = 2; int lastState = LOW; int trueState = LOW; long lastStateChangeTime = 0; int clearred = 0; // constantsint dialHasFinishedRotatingAfterMs = 100; int debounceDelay = 10; void setup () {Serial.begin (9600); pinMode (in, INPUT);} void loop () {int čitanje = digitalRead (in); if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// brojčanik nije biran ili je upravo završio biranje. if (needToPrint) {// ako je biranje tek završeno, moramo poslati broj niz serijski // red i resetirati broj. Modificirali smo brojanje za 10 jer će '0' poslati 10 impulsa. Serial.print (broj % 10, DEC); needToPrint = 0; count = 0; očišćeno = 0; }} if (čitanje! = lastState) {lastStateChangeTime = millis (); } if ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - to se događa kada se stabilizira ako (čitanje! = trueState) {// to znači da je prekidač ili upravo izašao iz zatvoreno-> otvoreno ili obrnuto. trueState = čitanje; if (trueState == HIGH) {// povećava broj impulsa ako je porastao. count ++; needToPrint = 1; // morat ćemo ispisati ovaj broj (nakon što se brojčanik zavrti okretati)}}} lastState = čitanje;}
Korak 5: Provjerite radi li
Provjerite radi li otvaranjem serijskog prozora (ja koristim ekran na unix stroju, možda biste htjeli koristiti Hyperterm ili slično u Windowsima) i pokušajte birati neke brojeve. Provjerite je li serijski program postavljen za čitanje s USB-a > serijski adapter u vašem Arduinu (provjerite izbornik Alati-> Serijski port u softveru Arduino ako ste zaboravili o čemu se radi) i brzinu prijenosa od 9600 b / s. Trebali biste vidjeti ispravan broj koji se pojavljuje prilikom biranja.
Korak 6: Uključite ga u nešto korisno
Smislio sam datoteku Quartz Composer na svom Macu kako bih uneo unos i lepo ga prikazao na ekranu. Nakon što se ubaci u stroj kao serijski podatak, možete učiniti sve s njim. Čekajući vaše ideje! Donijet ću video zapis "na djelu" i ispisati brojeve na ekran čim dobijem nekoga da mi drži kameru - volio bih da imam tri ruke.