Sadržaj:

Povežite rotacijski brojčanik s Arduinom: 6 koraka (sa slikama)
Povežite rotacijski brojčanik s Arduinom: 6 koraka (sa slikama)

Video: Povežite rotacijski brojčanik s Arduinom: 6 koraka (sa slikama)

Video: Povežite rotacijski brojčanik s Arduinom: 6 koraka (sa slikama)
Video: Lesson 97: Controlling Servo Motor using Rotary Encoder and Display Angle On LCD 2024, Juli
Anonim
Povežite rotacijski brojčanik s Arduinom
Povežite rotacijski brojčanik s Arduinom
Povežite rotacijski brojčanik s Arduinom
Povežite rotacijski brojčanik s Arduinom

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

Uklonite brojčanik sa telefona
Uklonite brojčanik sa telefona
Uklonite brojčanik sa telefona
Uklonite brojčanik sa telefona
Uklonite brojčanik sa telefona
Uklonite brojčanik sa 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č

Identificirajte prekidač
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

Napravi krug
Napravi krug
Napravi krug
Napravi 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

Razvijte Kodeks
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

Zakačite ga u nešto korisno!
Zakač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.

Preporučuje se: