Mündəricat:

Arduino ilə Rotary Telefon Zəngi Arayüzü: 6 Adım (Şəkillərlə)
Arduino ilə Rotary Telefon Zəngi Arayüzü: 6 Adım (Şəkillərlə)

Video: Arduino ilə Rotary Telefon Zəngi Arayüzü: 6 Adım (Şəkillərlə)

Video: Arduino ilə Rotary Telefon Zəngi Arayüzü: 6 Adım (Şəkillərlə)
Video: Gerçek Zamanlı Saat Modülü ve Döner Kodlayıcı ile Arduino PLC Nasıl Kurulur 2024, Iyul
Anonim
Arduino ilə Rotary Telefon Dial İnterfeysi
Arduino ilə Rotary Telefon Dial İnterfeysi
Arduino ilə Rotary Telefon Zəngi Arayüzü
Arduino ilə Rotary Telefon Zəngi Arayüzü

Köhnə bir fırlanan telefon Arduino layihələrinizdə bir çox məqsədlər üçün istifadə edilə bilər - yeni bir giriş cihazı olaraq istifadə edin və ya dönən bir telefonu kompüterinizə bağlamaq üçün Arduino -dan istifadə edin. bir Arduino -ya göndərin və yığılmış nömrəni Arduinonun serial bağlantısı üzərindən bir kompüterə keçirin.

Addım 1: Telefonu yığın

Telefon nömrəsini yığın
Telefon nömrəsini yığın
Telefon nömrəsini yığın
Telefon nömrəsini yığın
Telefon nömrəsini yığın
Telefon nömrəsini yığın

İlk addım telefonu yığmaqdır. 1970 -ci illərə aid bir növ GPO telefonu istifadə edirəm. Əks təqdirdə telefonu açıb onu necə çıxartmaq lazım olduğunu öyrənə bilərsiniz. Dial cihazın arxasına beş kabel qoşulmuşdu. Telefonumda bunlar müntəzəm kürək bağlantıları idi, buna görə də vintləri gevşetib çıxartdım. Telefonunuzu yenidən yığmaq istəyirsinizsə, hansı rəngli telin hansı əlaqəyə getdiyini qeyd etməyi unutmayın.

Addım 2: Anahtarı təyin edin

Anahtarı təyin edin
Anahtarı təyin edin

Kadr çıxdıqdan sonra kadranın fırlanan hərəkəti pulslara necə çevirdiyini görmək nisbətən asan olmalıdır. Düyməni əllə çevirməyə və arxadakı hərəkəti izləməyə çalışın. Bir dövrə çevirən və sürətlə pozan bir keçid görməlisiniz - buna görə də '9' düyməsini yığsanız, keçid doqquz dəfə işə düşməlidir. Daha əvvəl heç vaxt fırlanan kadr istifadə etməyənlər üçün - unutmayın ki, yığım yalnız icazə verdiyiniz zaman baş verir. nömrəyə keçin və geri yığılsın. Mən telefonum üçün necə işlədiyini aşağıdakı fotoşəkildə qeyd etmişəm. İşləyən mexanizmin bulanıq bir videosu da var.

Addım 3: Dövrə edin

Dövrə edin
Dövrə edin
Dövrə edin
Dövrə edin

Edilən və qırılan açarı tapdıqdan sonra, telləri yenidən əlaqə terminallarına qədər izləyərək əlaqələri müəyyən edə bilməlisiniz. Mənim vəziyyətimdə, açarın iki tərəfi ən sol iki terminala bağlıdır. Bu terminalları bəzi tullanan tellərə bağlayın və prototip hazırlayın! Zəngimdəki açar həmişə açıqdır və yığarkən hər nəbz üçün pozulmuşdur, buna görə də aşağıda çox sadə sxemdən istifadə etdim. Pin 2, döndükcə hər nəbz üçün YÜKSƏK olacaq. Telefon yığılmadıqda, yığım bölməsindəki açar bağlanır (məlum səbəblərə görə NORMAL QAPALI açar), beləliklə, dövrə pin 2-ni yerə bağlayır (bu Arduinoya LOW). Bunun səbəbi, 470 ohm müqavimət vasitəsi ilə 10K müqavimətdən daha az müqavimətin olmasıdır. Telefon yığılarkən keçid sürətlə açılır və bağlanır (9 üçün 9 dəfə açılacaq və bağlanacaq, unutmayın). Açar açıq olduqda, pin 2 yerə qoşulmur - bunun əvəzinə 10470 ohm müqavimətlə 5V təchizata qoşulur. Bu, Arduino tərəfindən YÜKSƏK olaraq şərh olunur. Əgər yığımınızda NORMAL AÇIQ açarı varsa, onda 10K rezistorun mövqelərini dəyişdirin və kadr etməlisiniz.

Addım 4: Kodu inkişaf etdirin

Kodu inkişaf etdirin
Kodu inkişaf etdirin

Arduinonun nəbzləri sayması və ardıcıl portdan geri yığılmış hər bir nömrəni geri göndərməsi üçün bir koda ehtiyacımız var. Burada mexaniklərlə məşğul olduğumuz üçün sizinki fərqli ola bilər. Çıxma sabiti və 'kadrın fırlanmasını bitirməzdən əvvəl nə qədər gözləyəcəyik' sabitliyi ilə oynamağa çalışın. Bacardığım qədər səliqəli şəkildə şərh etməyə çalışdım. İnşallah olduqca sadədir. NeedToPrint = 0; int count; int in = 2; int lastState = LOW; int trueState = LOW; long lastStateChangeTime = 0; int cleared = 0; // sabitlərin dialHasFinishedRotatingAfterMs = 100; int debounceDelay = 10; void setup () {Serial.begin (9600); pinMode (in, INPUT);} void loop () {int reading = digitalRead (in); if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// yığım yığılmır və ya yığılmağı bitirdi. if (needToPrint) {// yalnız yenicə yığılmaq üzrədirsə, nömrəni serial // xəttinə göndərib sayımı sıfırlamalıyıq. Sayını 10 -a dəyişdiririk, çünki '0' 10 zərbə göndərəcək. Serial.print (say % 10, DEC); needToPrint = 0; say = 0; silindi = 0; }} if (oxu! = lastState) {lastStateChangeTime = millis (); } if ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - bu (oxunur! = trueState) {// sabit olduqda sabitləşdikdən sonra baş verir, bu keçidin ya bağlı -> açıqdan, ya da əksinə yeni getdiyi deməkdir. trueState = oxu; if (trueState == YÜKSEK) {// yüksək olarsa nəbz sayını artırın. saymaq ++; needToPrint = 1; // bu nömrəni çap etməliyik (kadr fırlanmasını bitirdikdən sonra)}}} lastState = oxu;}

Addım 5: Çalışdığını yoxlayın

Seriyalı bir pəncərə açaraq işlədiyini yoxlayın (unix maşınında ekran istifadə edirəm, Windows-da Hyperterm və ya bənzərini istifadə edə bilərsiniz) və bəzi nömrələri yığmağa çalışın. > Arduino-da serial adapteri (bunun nə olduğunu unutsanız Arduino proqramında Alətlər-> Serial Port menyusunu yoxlayın) və 9600 bps-lik bir ötürmə dərəcəsi var. Yığılan zaman doğru nömrənin açıldığını görməlisiniz.

Addım 6: Faydalı bir şeyə bağlayın

Faydalı bir şeyə bağlayın!
Faydalı bir şeyə bağlayın!

Girişimi almaq və onu ekrana gözəl göstərmək üçün Mac -da bir Quartz Composer faylı ilə tanış oldum. Maşına serial məlumat olaraq daxil olduqdan sonra hər şeyi edə bilərsiniz. Fikirlərinizi dinləməyi gözləyirəm! Mən bunun "hərəkətdə" videosunu hazırlayacağam və kimisə əldə edə biləcəyim anda nömrələri ekrana çap edəcəyəm. kameranı mənim üçün tutmaq - kaş mənim üç əlim olsun.

Tövsiyə: