Innehållsförteckning:

Gränssnitt en roterande telefonratt till en Arduino: 6 steg (med bilder)
Gränssnitt en roterande telefonratt till en Arduino: 6 steg (med bilder)

Video: Gränssnitt en roterande telefonratt till en Arduino: 6 steg (med bilder)

Video: Gränssnitt en roterande telefonratt till en Arduino: 6 steg (med bilder)
Video: Helt automatisk monokrom roterande skärm utskrift maskin 2024, November
Anonim
Anslut en roterande telefonratt till en Arduino
Anslut en roterande telefonratt till en Arduino
Anslut en roterande telefonratt till en Arduino
Anslut en roterande telefonratt till en Arduino

En gammal roterande telefon kan användas för ett antal ändamål i dina Arduino -projekt - använd den som en ny inmatningsenhet, eller använd Arduino för att koppla en roterande telefon till din dator. Detta är en mycket grundläggande guide som beskriver hur du kopplar ratten till en Arduino och få det uppringda numret till en dator över Arduinos seriella länk.

Steg 1: Ta bort ratten från telefonen

Ta bort ratten från telefonen
Ta bort ratten från telefonen
Ta bort ratten från telefonen
Ta bort ratten från telefonen
Ta bort ratten från telefonen
Ta bort ratten från telefonen

Första steget är att ta bort rattenheten från telefonen. Jag använder en GPO -telefon av något slag från 1970 -talet. På den här telefonen dök ratten rakt ut - jag behövde bara dra den. Om det inte gör det kan du behöva öppna telefonen och ta reda på hur du tar bort den. Det var fem kablar anslutna till baksidan av rattenheten. På min telefon var det vanliga spadeanslutningar, så jag lossade skruvarna och drog ut dem. Om du vill montera ihop telefonen igen, kom ihåg att spela in vilken färgkabel som går till vilken anslutning.

Steg 2: Identifiera omkopplaren

Identifiera omkopplaren
Identifiera omkopplaren

När ratten är ute bör det vara relativt enkelt att se hur ratten omvandlar roterande rörelser till pulser. Prova att snurra på ratten för hand och titta på rörelsen på baksidan. Du bör se en strömbrytare som snabbt bryter en krets - så om du slår '9' bör omkopplaren aktiveras nio gånger. gå numret och låt det spool tillbaka. Jag har dokumenterat hur det fungerar för min telefon i anteckningarna på bilden nedan. Det finns också en suddig video av mekanismen som fungerar.

Steg 3: Gör kretsen

Gör kretsen
Gör kretsen
Gör kretsen
Gör kretsen

När du har hittat omkopplaren som görs och bryts bör du kunna identifiera anslutningarna genom att följa ledningarna tillbaka till anslutningsterminalerna. I mitt fall är switchens två sidor anslutna till de två terminalerna längst till vänster. Anslut dessa terminaler till några bygelkablar och få prototyper! Omkopplaren i min urtavla är alltid på och bryts för varje puls vid uppringning, så jag använde den mycket enkla kretsen nedan. Stift 2 går HÖG för varje puls när ratten roterar. När telefonen inte rings upp stängs omkopplaren i uppringningsenheten (en så kallad NORMALT STÄNGD omkopplare, av uppenbara skäl) så att kretsen ansluter stift 2 till jord (som till Arduino är LÅG). Detta beror på att det är mycket mindre motstånd genom 470 ohm -motståndet än 10K -motståndet. När telefonen ringer öppnas och stängs omkopplaren snabbt (för en 9 öppnas och stängs den nio gånger igen, kom ihåg). När omkopplaren är öppen är stift 2 inte anslutet till jord - istället är det anslutet till 5V -matningen genom ett motstånd på 10470 ohm. Detta tolkas av Arduino som ett HÖGT. Om din urtavla har en NORMALT ÖPPEN omkopplare, bör du byta positioner på 10K -motståndet och ratten gör tricket.

Steg 4: Utveckla koden

Utveckla koden
Utveckla koden

Nu behöver vi lite kod för Arduino för att räkna pulserna och skicka det totala antalet per nummer som slås tillbaka genom serieporten. Min kod är nedan. Eftersom vi har att göra med mekanik här kan din vara annorlunda. Prova att leka med konstanta avstängningskonstant och 'hur länge väntar vi innan vi antar att ratten har roterat' konstant. Jag har försökt kommentera det så snyggt som jag kan. Förhoppningsvis är det ganska enkelt. 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; void setup () {Serial.begin (9600); pinMode (in, INPUT);} void loop () {int reading = digitalRead (in); if ((millis () - lastStateChangeTime)> dialHasFinishedRotatingAfterMs) {// inte ratten ringer upp, eller precis har ringt upp. if (needToPrint) {// om det bara är klart att ringa upp måste vi skicka numret ner på serien // och återställa antalet. Vi modifierar räkningen med 10 eftersom '0' skickar 10 pulser. Serial.print (antal % 10, DEC); needToPrint = 0; count = 0; rensad = 0; }} if (läsning! = lastState) {lastStateChangeTime = millis (); } om ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - detta händer när det har stabiliserats om (läsning! = trueState) {// detta betyder att omkopplaren antingen just har gått från stängd-> öppen eller vice versa. trueState = läsning; if (trueState == HIGH) {// öka antalet pulser om det har gått högt. räkna ++; needToPrint = 1; // vi måste skriva ut det här numret (när ratten har roterat)}}} lastState = läsning;}

Steg 5: Kontrollera att det fungerar

Kontrollera att det fungerar genom att öppna ett seriefönster (jag använder skärmen på en unix-maskin, du kanske vill använda Hyperterm eller liknande på Windows) och försök slå några nummer. Se till att serieprogrammet är inställt för att läsa från USB- > seriell adapter i din Arduino (kolla Verktygs-> Seriell port-menyn i Arduino-programvaran om du glömmer vad det är) och en överföringshastighet på 9600 bps. Du bör se rätt nummer dyka upp när det ringer.

Steg 6: Haka det i något användbart

Haka det i något användbart!
Haka det i något användbart!

Jag kom med en Quartz Composer -fil på min Mac för att ta ingången och göra den snyggt på skärmen. När den väl finns i maskinen som seriell data kan du göra vad som helst med den. Väntar på att höra dina idéer! Jag kommer med en video av den "i aktion" och skriver ut siffrorna på skärmen så snart jag kan få någon att hålla kameran åt mig - önskar att jag hade tre händer.

Rekommenderad: