Мазмуну:

Arduino үчүн ротациялык телефон терүү интерфейси: 6 кадам (сүрөттөр менен)
Arduino үчүн ротациялык телефон терүү интерфейси: 6 кадам (сүрөттөр менен)

Video: Arduino үчүн ротациялык телефон терүү интерфейси: 6 кадам (сүрөттөр менен)

Video: Arduino үчүн ротациялык телефон терүү интерфейси: 6 кадам (сүрөттөр менен)
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Июль
Anonim
Arduino үчүн ротациялык телефон терүү интерфейси
Arduino үчүн ротациялык телефон терүү интерфейси
Arduino үчүн ротациялык телефон терүү интерфейси
Arduino үчүн ротациялык телефон терүү интерфейси

Эски ротациялык телефонуңуз Arduino долбоорлоруңузда бир нече максаттарда колдонулушу мүмкүн - аны жаңы киргизүү түзмөгү катары колдонуңуз же Arduino менен компьютериңизге айлануучу телефонду туташтырыңыз. Arduinoго чалып, номерди Arduino сериялык шилтемеси аркылуу компьютерге өткөрүңүз.

1 -кадам: Телефондон терүүнү алып салыңыз

Телефондон терүүнү алып салуу
Телефондон терүүнү алып салуу
Телефондон терүүнү алып салуу
Телефондон терүүнү алып салуу
Телефондон терүүнү алып салуу
Телефондон терүүнү алып салуу

Биринчи кадам телефондон терүү бирдигин алып салуу. Мен 1970 -жылдардагы кандайдыр бир GPO телефонун колдонуп жатам. Бул телефондо терүү түз чыгып кетти - мен жөн эле аны тарттырышым керек болчу. Андай болбосо, телефонду ачып, аны кантип өчүрүү керектигин ойлонушуңуз керек болот. Терүү бирдигинин артына беш кабель туташтырылган. Менин телефонумда бул кадимки эле күрөк туташуулары болгондуктан, бурамаларды бошотуп, сууруп алдым. Эгерде сиз телефонуңузду кайра чогулткуңуз келсе, кайсы түстөгү зым кайсы байланышка барарын жазууну унутпаңыз.

2 -кадам: которууну аныктоо

Которууну аныктаңыз
Которууну аныктаңыз

Терүү чыккандан кийин, тергичтин айлануу кыймылын импульстарга кантип айландырганын көрүү салыштырмалуу оңой болушу керек. Тергичти кол менен айлантып, арт жагындагы кыймылды байкап көрүңүз. Сиз "9" терсеңиз, которуштуруучу тогуз жолу иштеши керек. Мурда эч качан ротордук тергичти колдонбогондор үчүн - терүү сиз уруксат бергенде гана болорун унутпаңыз. номерге барып, кайра артка жылдырууга уруксат бериңиз. Мен телефонум үчүн кантип иштээрин төмөндөгү сүрөттө жазылган.

3 -кадам: Районду жасаңыз

Circuit кылыңыз
Circuit кылыңыз
Circuit кылыңыз
Circuit кылыңыз

Сиз жасалган жана бузулган которгучту тапкандан кийин, кайра туташуу терминалдарына зымдарды ээрчип, байланыштарды аныктай алышыңыз керек. Менин учурда, которгучтун эки тарабы эң сол эки терминалга туташтырылган. Бул терминалдарды кээ бир секиргич зымдарга илип, прототипке ээ болуңуз! Менин терүүмдөгү которгуч дайыма күйүп турат жана терүү учурунда ар бир импульс үчүн сынган, ошондуктан мен төмөндөгү эң жөнөкөй схеманы колдондум. Пин 2, тергич айланып жатканда, ар бир импульс үчүн ЖОГОРУ болот. Телефон чалууда болбогондо, терүү бирдигиндеги которгуч жабык болот (белгилүү себептерден улам NORMALLY CLOSED деп аталат), андыктан схема 2 пинди жерге туташтырат (бул Arduino LOW). Бул 10K каршылыгына караганда 470 ohm каршылыгы аркылуу караганда азыраак каршылык бар. Теле терилип жатканда, коммутатор тез ачылат жана жабылат (9 үчүн, ал тогуз жолу ачылып кайра жабылат, эсиңизде болсун). Качан ачык болгондо, пин 2 жерге туташтырылган эмес - анын ордуна 570 вольтуна 10470 ом каршылык аркылуу туташкан. Бул Arduino тарабынан жогору деп чечмеленет. Эгер сиздин терүүңүздө НОРМАЛДЫК АЧЫК которгуч болсо, анда 10K каршылыгынын позицияларын алмаштыруу жана терүү амалын жасашы керек.

4 -кадам: Кодексти иштеп чыгуу

Кодексти иштеп чыгуу
Кодексти иштеп чыгуу

Эми бизге Arduino үчүн импульстарды санап, жалпы санды сериялык порт аркылуу кайра терилген номерге жөнөтүү үчүн код керек. Биз бул жерде механиктер менен иштеп жаткандыктан, сиздики башкача болушу мүмкүн. Чыгуу константасы менен ойногонго аракет кылыңыз жана "терүү айланып бүткөнчө канча убакыт күтөбүз" константасы. Мен муну мүмкүн болушунча тыкан комментарийлоого аракет кылдым. Бул абдан жөнөкөй.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) {// терүү терилбей жатат, же жаңы эле терилип бүттү. if (needToPrint) {// эгерде ал жөн гана терилип бүтсө, биз номерди сериялык // линиясына жөнөтүп, санды баштапкы абалга келтиришибиз керек. Биз эсепти 10го өзгөртөбүз, анткени "0" 10 импульсту жөнөтөт. Serial.print (% 10, DEC); needToPrint = 0; count = 0; тазаланган = 0; }} if (окуу! = lastState) {lastStateChangeTime = millis (); } if ((millis () - lastStateChangeTime)> debounceDelay) {// debounce - бул стабилдештирилгенде болот, эгерде (окуу! = trueState) {// бул которгуч жабык-> ачыктан же тескерисинче. trueState = окуу; if (trueState == HIGH) {// эгер ал жогорулап кетсе, импульстардын санын көбөйтүү. count ++; needToPrint = 1; // биз бул номерди басып чыгарышыбыз керек (терүү айланып бүткөндөн кийин)}}} lastState = окуу;}

5 -кадам: Анын иштээрин текшериңиз

Сериялык терезени ачуу менен иштээрин текшериңиз (мен экранды unix машинасында колдоном, Windows үчүн Hyperterm же ушуга окшошту колдонууну каалашыңыз мүмкүн), жана кээ бир номерлерди терип көрүңүз. > Arduinoңуздагы сериялык адаптер (эгер сиз бул эмне экенин унутуп калсаңыз, Arduino программасындагы Tools-> Serial Port менюну текшериңиз) жана 9600 bps ылдамдыкта. Туура номер терилип жатканда калкып чыгышы керек.

6 -кадам: Аны пайдалуу нерсеге илип коюңуз

Аны пайдалуу нерсеге илип коюңуз!
Аны пайдалуу нерсеге илип коюңуз!

Мен Macта Quartz Composer файлын ойлоп таап, аны экранга жакшы көрсөтүү үчүн келдим. Бул машинада сериялык маалымат катары болгондон кийин, сиз аны менен эч нерсе кыла албайсыз. Сиздин оюңузду угууну күтүп жатам! Мен анын "иш -аракетинде" видеосу менен келем жана кимдир бирөөнү ала алаарым менен сандарды экранга басып чыгарам. Мен үчүн камераны кармоо - үч колум болгондо.

Сунушталууда: