Мазмуну:
- Жабдуулар
- 1 -кадам: базаны куруу
- 2 -кадам: Servo Piece
- 3 -кадам: Серво моторун жана кагаз түрмөгүн базага кошуу
- 4 -кадам: Stepper Motor Frame куруу
- 5 -кадам: Тийиштерди бүтүрүү
- 6 -кадам: Электроника
- 7 -кадам: Мүчүлүштүктөрдү оңдоо
Video: Ардуино Морз Кодунун Жазуучусу: 7 Кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Мен робот жасадым, ал каалаган текстти Морзе кодуна айлантып, анан жаза алат !! Бул картондон жана Легодон жасалган, электроника үчүн мен Arduino жана эки гана моторду колдондум.
Жабдуулар
Arduino Uno тактайы Stepper мотору Micro servo SG90ULN2003 тепкичтүү мотор айдоочу модулу Электр менен камсыздоо модулу Breadboard4 × Jumper зымдары6 × Аялдан-Эркекке дюпондук зымдар9V1A AdapterUSB кабели Картон 2 × Жыгач дубалдар 2 × Булактар Саман Ак кагаз LegoSuper клей Hot желим тапанча Эластикалык топту (жасоо үчүн) калем кармагыч) кайчы кескич
1 -кадам: базаны куруу
Негизин куруудан баштаңыз. Менин кенендигим 4 туурасы жана 20 таякчасы бар, ошол узундуктар менен бир катмар кургандан кийин, мен тегерегине бир стеклинг кең пансионат куруп, степпердик моторго орун калтыруу үчүн бир жагында боштук калтырып, анан мен кошумчаладым кагаз тилкеси боло турган ортоңку бөлүгүнө плитканын бөлүктөрү. Lego колдонуу аны абдан бышык жана оңой өзгөрткөн. Кагаз түрмөктү жасоо үчүн мен туурасы 1,2 см болгон А4 кагаздын тилкелерин кесип алдым (мен бул туураны тандагам, анткени ал Lego дөңгөлөгүнүн туурасы менен бирдей, сеникиңди дөңгөлөгүңө жараша чоңураак же кичирээк кыла аласың) жана алардын учтарын жабыштырдым. абдан узун тилкени түзүү үчүн, мен аны дөңгөлөккө ороп койдум.
2 -кадам: Servo Piece
Бул кадам үчүн сизге керек:
- узундугу 4 см болгон эки жыгач дубал
- узундугу 2 см болгон эки булак
- бир сабан ар биринин узундугу 2 см болгон эки бөлүккө кесип
- 12 сантиметрден 4 сантиметрге чейин картон
- 2 см 4х1,5 см картон
- бир 4см 2см картон
Биринчиден, дюбелдерди 4төн 1,5ке чейин чаптаңыз, андан кийин пружина менен саманды дубелге салыңыз, анан башка картонду башка жагына жабыштырып, баарын ордуна коюңуз.
Экинчиден, самандардын үстүнө 4смден 2смге чейин кесинди чаптаңыз.
Үчүнчүдөн, бүт бөлүктү оодарып, кичине дубелди анын артына, ортосуна эмес, бир аз солго чаптаңыз. (Биринчи сүрөттөгү кичинекей дубелди кошууну унутуп калдым)
Акыры, карточканын чоң бөлүгүндө сервоприводдун алдыңкы бөлүгүндө тешикти кесип, моторду жабыштырыңыз, андан кийин биз жөн эле дубелдер менен жасаган бөлүктү чоң бөлүккө жабыштырабыз, ошондо servo кыймылга келгенде, кичинекей дубель, бул өз кезегинде булактарды да ылдый түшүрөт.
Мен 12смдин астынкы бөлүгүнөн болжол менен 3смди 4смге кесип, ага дагы 4смди 1,5см кылып чаптап, 5,5смден 4смге картон менен жаап койдум. ийкемдүү боону илип, кичинекей картонго чаптадым, андан кийин мен аны 4смден 2смге чейин чаптадым, ал servo башталганда ылдый жылат. Бул толуктоолор булактар кайра көтөрүлгөндө маркердин ары бери жылышын токтотту.
3 -кадам: Серво моторун жана кагаз түрмөгүн базага кошуу
Мен servo бөлүгүн колдоо үчүн базанын бир жагына дагы эки кирпич кошуп, мен аны ордуна чаптадым. Мен базанын эң четине дөңгөлөктү кошуп койдум.
4 -кадам: Stepper Motor Frame куруу
Бул кадам бир аз кыйынчылыкты туудурду, анткени мотор Lego менен толук шайкеш келген эмес. Бирок, мен мотордун эки тешигин колдонуп, аны ордуна койдум. Андан кийин, мен мотордун учуна Lego дөңгөлөгүн чаптадым, анан мен аны 1 -кадамда ачык калтырган капталындагы базанын жанына койдум.
5 -кадам: Тийиштерди бүтүрүү
Кагазды ордуна коюу үчүн дөңгөлөктү жабуу үчүн эки доголду коштум. Мен эки кичинекей догалдарды коштум, бири тепкич моторунун зымдарын кармоо үчүн, экинчиси кагазды кармоо үчүн. Акырында, мен кадам моторунун дөңгөлөгүн бир аз чоңураак кылып алмаштырдым, ал кагазды эски дөңгөлөккө караганда жакшыраак жылдырды.
6 -кадам: Электроника
Акыр -аягы, моторлорду Arduino менен туташтырып, кодду жүктөшүңүз керек.
Биз servo моторунан баштайбыз, күрөң зымды (жер зымын) GND пинге, андан кийин кызыл зымды (кубат зымын) 5V пинге жана кызгылт сары зымды (сигнал зымы) Dig #5ке туташтырабыз. кадоо. Кийинки, тепкич мотору, 1N1ди #11ге, 1N2ди #10го, 1N3тү #9га, 1N4ти #8ге, 5Vны нан табактын оң жагына жана жер казыгын терс жагына туташтырыңыз. нан. Энергия менен камсыздоо модулун нан тактасына туташтырууну унутпаңыз, анын оң жана терс жактары нандын тактайындагы тиешелүү жактарга туура келерин текшериңиз. Эгер сиз муну унутуп калсаңыз, анда долбооруңуздун күчүн артка кайтарасыз жана муну кылгыңыз келбейт.
Код үчүн мен төрт ыкманы жаздым, бири чекит жазуу үчүн, бири сызык жазуу үчүн, экөө ар бир тамга менен ар бир сөздүн ортосунда боштук калтыруу үчүн. Ошентип, мен бул ыкмаларды ар бир тамга үчүн кайра жазуунун ордуна, керек болгондо чакырып алам. Андан кийин мен тексттин ар бир тамгасынан өтүп, аны жазуучу for циклин жаздым, анын ичинде мен ар бир тамга үчүн if билдирүүсүн жаздым, бирок сиз кааласаңыз, аны switch операторуна жаза аласыз. Албетте, сиз сандарды окуу программасын иштетүү үчүн кодду кошо аласыз. Бардык зымдар даяр болгондо, кодду IDEге көчүрүп чаптаңыз. Stepper, servo жана string китепканаларын орнотууну унутпаңыз. Андан кийин, барганың жакшы.
Бул кантип иштейт
Arduino программасы иштей баштаганда, тексттин биринчи тамгасын карайт. Жана кайсынысына жараша, аны Морзе кодунда жазган функцияларды чакырат. Мисалы, чекит функциясы чакырылганда, servo мотор калемди ылдый жылдыруучу 160ка орнотулган, андан кийин 90го кайра коюлган, бул булактар калемди жылдырып кайра келишине мүмкүндүк берет. Эгерде сызык функциясы чакырылса, servo калемди ылдый жылдырат, андан кийин кадам мотору кагазды тарткан дөңгөлөктү айландырат, ал калемге сызык жазат. Ал эми космостук функциялардын бири степпер мотору айланат, бирок калеми жогору болгондуктан, кагазды тартып, тамгалар менен сөздөрдүн ортосунда боштукту түзөт. Бүткөндөн кийин, ал кийинки катка барат жана ошол эле процессти кайталайт. Сизге жагат деп үмүттөнөм;)
Коду
#кошуу
#include #include #include const int stepsPerRevolution = 150; // Бул кадам мотору үчүн өзгөрмө String сүйлөм = "*салам"; // Бул өзгөрмөнү башка сөздөрдү жазуу үчүн өзгөртүңүз, бирок кичине тамгалар менен жазыңыз жана сөзүңүздү "*" менен баштаңыз Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Бул роботту чекитти жокко чыгаруучу ыкма () {Serial.println ("чекитти баштоо"); myServo.write (160); кечигүү (1000); myServo.write (90); кечигүү (1000); myStepper.step (stepsPerRevolution); кечигүү (1000); Serial.println ("чекит бүттү"); } // Бул роботту сызыктын боштугуна сызык жазууга мажбур кылган ыкма () {Serial.println ("тире баштоо"); myServo.write (160); кечигүү (1000); myStepper.step (stepsPerRevolution); кечигүү (1000); myServo.write (90); кечигүү (1000); myStepper.step (stepsPerRevolution); кечигүү (1000); Serial.println ("тире бүттү"); } // Бул роботту ар бир тамганын ортосунда боштук калтырган ыкма () {Serial.println ("боштукту баштоо"); myServo.write (90); кечигүү (1000); myStepper.step (200); кечигүү (1000); Serial.println ("орун бүттү"); } // Бул роботту ар бир сөздүн ортосунда боштук калтырууга мажбур кылган ыкма bigSpace () {myServo.write (90); myStepper.step (250); кечигүү (1000); } void setup () {// бир жолу иштетүү үчүн, орнотуу кодуңузду бул жерге коюңуз: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int биринчи = сүйлөм.indexOf ('*'); // бул цикл саптын ар бир тамгасы аркылуу өтөт жана андан кийин аны жазуунун туура ыкмаларын чакырат (int i = 0; i <сүйлөмдүн узундугу (); i ++) {if (сүйлөм.чарАт (биринчи+i)) == 'a') {Serial.print (".-"); чекит (); сызык (); боштук (); } else if (sentences.charAt (биринчи + i) == 'b') {Serial.print ("-…"); сызык (); чекит (); чекит (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'c') {Serial.print ("-.-."); сызык (); чекит (); сызык (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'd') {Serial.print ("-.."); сызык (); чекит (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'e') {Serial.print ("."); чекит (); боштук (); } else if (sentences.charAt (first + i) == 'f') {Serial.print ("..-."); чекит (); чекит (); сызык (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'g') {Serial.print ("-."); сызык (); сызык (); чекит (); боштук (); } else if (sentences.charAt (first + i) == 'h') {Serial.print ("…."); чекит (); чекит (); чекит (); чекит (); боштук (); } else if (sentences.charAt (first + i) == 'i') {Serial.print (".."); чекит (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'j') {Serial.print (".---"); чекит (); сызык (); сызык (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'k') {Serial.print ("-.-"); сызык (); чекит (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'l') {Serial.print (".-.."); чекит (); сызык (); чекит (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'm') {Serial.print ("-"); сызык (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'n') {Serial.print ("-."); сызык (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'o') {Serial.print ("---"); сызык (); сызык (); сызык (); боштук (); } else if (sentences.charAt (first + i) == 'p') {Serial.print (".--."); чекит (); сызык (); сызык (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 'q') {Serial.print ("--.-"); сызык (); сызык (); чекит (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'r') {Serial.print (".-."); чекит (); сызык (); чекит (); боштук (); } else if (sentences.charAt (биринчи + i) == 's) {Serial.print ("…"); чекит (); чекит (); чекит (); боштук (); } if if (sentences.charAt (first + i) == 't') {Serial.print ("-"); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'u') {Serial.print ("..-"); чекит (); чекит (); сызык (); боштук (); } else if (sentences.charAt (first + i) == 'v') {Serial.print ("…-"); чекит (); чекит (); чекит (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'w') {Serial.print (".--"); чекит (); сызык (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'x') {Serial.print ("-..-"); сызык (); чекит (); чекит (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'y') {Serial.print ("-.--"); сызык (); чекит (); сызык (); сызык (); боштук (); } if if (sentences.charAt (first + i) == 'z') {Serial.print ("-.."); сызык (); сызык (); чекит (); чекит (); боштук (); } if if (sentences.charAt (first + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Бул жерге эч нерсе жазбаңыз}
7 -кадам: Мүчүлүштүктөрдү оңдоо
Дөңгөлөк кыймылдабайт
Дөңгөлөк менен кагаздын ортосунда өтө көп сүрүлүү болушу мүмкүн, дөңгөлөктү бир аз көтөрүп же алмаштырып көрүңүз.
Дөңгөлөк кагазды тартат, бирок андан кийин кагазды тартпастан айланат
Дөңгөлөктү тепкич моторунун ортосуна чаптаганыңызды текшериңиз
Чекиттер менен сызыктар туташып турат
Чекит, тире жана боштук функциялары туура жазылганын текшериңиз, алар мындай болушу керек:
// Бул роботту чекитти чекитке () {Serial.println ("чекитти баштоо") жаздырган ыкма; myServo.write (160); кечигүү (1000); myServo.write (90); кечигүү (1000); myStepper.step (stepsPerRevolution); кечигүү (1000); Serial.println ("чекит бүттү"); }
// Бул ыкма роботту тире жазууга мажбурлайт
void dash () {Serial.println ("тире баштоо"); myServo.write (160); кечигүү (1000); myStepper.step (stepsPerRevolution); кечигүү (1000); myServo.write (90); кечигүү (1000); myStepper.step (stepsPerRevolution); кечигүү (1000); Serial.println ("тире бүттү"); }
// Бул роботту ар бир тамганын ортосунда боштук калтырган ыкма
боштук боштук () {Serial.println ("боштукту баштоо"); myServo.write (90); кечигүү (1000); myStepper.step (200); кечигүү (1000); Serial.println ("орун бүттү"); }
Сунушталууда:
Arduino менен Морзе кодунун котормочусун кантип жасаса болот: 10 кадам
Кантип Морзе кодунун котормочусун Arduino менен жасоого болот: Обзор коддуу түрдө баарлашуу ушунчалык кызыктуу болгондон тышкары, ар кандай тармактарда көптөгөн тиркемелерге ээ. Код байланышынын эң кеңири таралган ыкмаларынын бири - Морзе коду. Бул окуу куралында сиз котормочуну кантип жөнөтүүнү жана кайра жөнөтүүнү үйрөнөсүз
Морз Моаи айкели: 4 кадам (сүрөттөр менен)
Морз Моаи айкели: Бала кезимде Морзе кодуна абдан кызыкчумун. Мунун бир нече себептери болгон - Менин атам Экинчи Дүйнөлүк Согушта Сигнал Корпусунда болгон жана анын Морздун согушта кантип колдонулгандыгы жөнүндө кызыктуу болгон. Менин ритмдерге жакшы кулагым бар болчу, ошондуктан үйрөндүм
Ардуино Юн Морз генератору: 4 кадам (сүрөттөр менен)
Ардуино Юн Морз генератору: Музыка өтө катуу болгондуктан досуңуз менен сүйлөшө албаган барда болгонсузбу? Эми сиз андан Морзе кодунда сыра сурасаңыз болот! Баштайлы
Жөнөкөй Брайль жазуучусу (Брайль менен сүйлөө): 8 кадам (Сүрөттөр менен)
Жөнөкөй Брайль жазуучусу (Брайль менен сүйлөө): Саламатсыздарбы, мунун баары XY плоттерин ийгиликтүү аяктагандан кийин башталды, мен Брайль текстин алмаштыргычка жөнөкөй сүйлөөнү иштеп чыгууну ойлодум. Мен аны интернеттен издей баштадым жана күтүлбөгөн жерден баалар өтө жогору болуп кетти , бул мага дем берди
Эң арзан Ардуино -- Эң кичинекей Ардуино -- Arduino Pro Mini -- Программалоо -- Arduino Neno: 6 кадам (сүрөттөр менен)
Эң арзан Ардуино || Эң кичинекей Ардуино || Arduino Pro Mini || Программалоо || Ардуино Нено: …………………………. Дагы видеолор үчүн YouTube каналыма ЖАЗЫЛЫҢЫЗ ……. .Бул долбоор эң кичинекей жана эң арзан ардуинону кантип интерфейстөө жөнүндө. Эң кичине жана эң арзан ардуино - arduino pro mini. Бул arduino окшош