Indholdsfortegnelse:

Tilslut en roterende telefonskive til en Arduino: 6 trin (med billeder)
Tilslut en roterende telefonskive til en Arduino: 6 trin (med billeder)

Video: Tilslut en roterende telefonskive til en Arduino: 6 trin (med billeder)

Video: Tilslut en roterende telefonskive til en Arduino: 6 trin (med billeder)
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Juli
Anonim
Tilslut en roterende telefonskive til en Arduino
Tilslut en roterende telefonskive til en Arduino
Tilslut en roterende telefonskive til en Arduino
Tilslut en roterende telefonskive til en Arduino

En gammel roterende telefon kan bruges til en række formål i dine Arduino -projekter - brug den som en ny inputenhed, eller brug Arduino til at tilslutte en roterende telefon til din computer. til en Arduino, og få nummeret ringet videre til en computer over Arduinos serielle link.

Trin 1: Fjern opkaldet fra telefonen

Fjern opkaldet fra telefonen
Fjern opkaldet fra telefonen
Fjern opkaldet fra telefonen
Fjern opkaldet fra telefonen
Fjern opkaldet fra telefonen
Fjern opkaldet fra telefonen

Første trin er at fjerne opkaldsenheden fra telefonen. Jeg bruger en GPO -telefon af en eller anden art fra 1970'erne. På denne telefon dukkede urskiven lige ud - jeg skulle bare give den et træk. Hvis det ikke gør det, skal du muligvis åbne telefonen og finde ud af, hvordan du fjerner den. Der var fem kabler forbundet til bagsiden af opkaldsenheden. På min telefon var det almindelige spadeforbindelser, så jeg løsnede skruerne og trak dem ud. Hvis du vil samle din telefon igen, skal du huske at registrere, hvilken farveledning der går til hvilken forbindelse.

Trin 2: Identificer kontakten

Identificer kontakten
Identificer kontakten

Når urskiven er slukket, burde det være relativt let at se, hvordan skiven omdanner roterende bevægelse til pulser. Prøv at dreje urskiven i hånden og se bevægelsen på bagsiden. Du skulle se en kontakt hurtigt og bryde et kredsløb - så hvis du ringer '9', skal kontakten aktivere ni gange. For dig, der måske aldrig har brugt en drejeknap før - husk, at opkaldet kun sker, når du lader gå nummeret og lad det spole tilbage. Jeg har dokumenteret, hvordan det fungerer for min telefon i noterne på billedet herunder. Der er også en sløret video af mekanismen, der fungerer.

Trin 3: Lav kredsløbet

Lav kredsløbet
Lav kredsløbet
Lav kredsløbet
Lav kredsløbet

Når du har fundet kontakten, der laves og brydes, skal du være i stand til at identificere forbindelserne ved at følge ledningerne tilbage til tilslutningsterminalerne. I mit tilfælde er switchens to sider forbundet til de to terminaler til venstre. Tilslut disse terminaler til nogle jumperwires, og få prototyper! Omskifteren i min urskive er altid tændt og er brudt for hver puls, når jeg ringer, så jeg brugte det meget enkle kredsløb nedenfor. Pin 2 går HØJ for hver puls, når skiven drejer. Når telefonen ikke bliver ringet op, er kontakten i opkaldsenheden lukket (en såkaldt NORMALT LUKKET kontakt af indlysende årsager), så kredsløbet forbinder pin 2 til jorden (som til Arduino er LAV). Dette skyldes, at der er meget mindre modstand gennem 470 ohm modstanden end 10K modstanden. Når telefonen ringes op, åbnes og lukkes kontakten hurtigt (for en 9 åbnes og lukkes den igen ni gange, husk). Når kontakten er åben, er pin 2 ikke forbundet til jorden - i stedet er den forbundet til 5V forsyningen gennem en modstand på 10470 ohm. Dette fortolkes af Arduino som et HØJT. Hvis din urskive har en NORMALT ÅBEN kontakt, skal du skifte positionerne på 10K modstanden, og skiven skal gøre tricket.

Trin 4: Udvikl koden

Udvikl koden
Udvikl koden

Nu har vi brug for en kode til Arduino'en til at tælle pulserne og sende det samlede nummer pr. Nummer, der er ringet tilbage via den serielle port. Min kode er herunder. Da vi har at gøre med mekanik her, kan din variere. Prøv at spille om med debounce -konstanten og konstanten 'hvor længe venter vi, før vi antager, at urskiven er færdig med at rotere'. Jeg har forsøgt at kommentere den så pænt som jeg kan. Forhåbentlig er det ret simpelt. Int needToPrint = 0; int count; int in = 2; int lastState = LOW; int trueState = LOW; long lastStateChangeTime = 0; int cleared = 0; // constantsint dialHasFinishedRotatingAfterMs = 100; int debounceDelay = 10; ugyldig opsætning () {Serial.begin (9600); pinMode (in, INPUT);} void loop () {int reading = digitalRead (in); hvis ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// opkaldet ikke ringes op, eller lige er blevet færdigopkaldt. hvis (needToPrint) {// hvis det først lige er færdig med at blive ringet op, skal vi sende nummeret ned på den serielle // linje og nulstille tællingen. Vi ændrer tællingen med 10, fordi '0' sender 10 pulser. Serial.print (tæl % 10, DEC); needToPrint = 0; count = 0; ryddet = 0; }} hvis (læsning! = lastState) {lastStateChangeTime = millis (); } hvis ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - dette sker, når det er stabiliseret, hvis (læsning! = trueState) {// betyder, at kontakten enten lige er gået fra lukket-> åben eller omvendt. trueState = læsning; hvis (trueState == HIGH) {// øges antallet af pulser, hvis det er gået højt. tæl ++; needToPrint = 1; // vi skal udskrive dette nummer (når skiven er færdig med at dreje)}}} lastState = læsning;}

Trin 5: Check It Works

Kontroller, at det virker ved at åbne et serielt vindue (jeg bruger skærm på en unix-maskine, du vil måske bruge Hyperterm eller lignende på Windows), og prøv at ringe nogle numre. Sørg for, at det serielle program er indstillet til at læse fra USB- > seriel adapter i din Arduino (tjek menuen Værktøjer-> Seriel port i Arduino-softwaren, hvis du glemmer, hvad det er), og en baudhastighed på 9600 bps. Du skal se det korrekte nummer dukke op, når det er ringet op.

Trin 6: Tilslut det til noget nyttigt

Tilslut det til noget nyttigt!
Tilslut det til noget nyttigt!

Jeg kom med en Quartz Composer -fil på min Mac for at tage input og gengive det pænt til skærmen. Når det er i maskinen som serielle data, kan du gøre alt med det. Venter på at høre dine ideer! Jeg kommer med en video af det 'i aktion' og udskriver tallene på skærmen, så snart jeg kan få nogen at holde kameraet for mig - ville ønske jeg havde tre hænder.

Anbefalede: