Съдържание:

Писател на азбучен код на Ардуино: 7 стъпки (със снимки)
Писател на азбучен код на Ардуино: 7 стъпки (със снимки)

Видео: Писател на азбучен код на Ардуино: 7 стъпки (със снимки)

Видео: Писател на азбучен код на Ардуино: 7 стъпки (със снимки)
Видео: 11 Скрытых Секретов на Известных Картинах 2024, Ноември
Anonim
Image
Image
Писател на азбука на азбуката на Ардуино
Писател на азбука на азбуката на Ардуино

Направих робот, който може да преобразува всеки зададен текст в азбука на Морз и след това да го запише !! Той е направен от картон и Lego, а за електрониката използвах Arduino и само два двигателя.

Консумативи

Arduino Uno платка Стъпков двигател Микро серво SG90ULN2003 Модул драйвер за стъпков двигател Модул за захранване Електрическа платка 4 × Прекъсващи проводници 6 × Женски към мъжки кабели dupont 9V1A Адаптер USB кабел 2 × Дървени дюбели 2 × Пружини Слама Бяла хартия LegoSuper лепило Пистолет за горещо лепило Еластична лента (за да направите държач за химикалка) Ножица Фреза

Стъпка 1: Изграждане на базата

Изграждане на базата
Изграждане на базата
Изграждане на базата
Изграждане на базата
Изграждане на базата
Изграждане на базата

Започнете с изграждането на основата. Моята е с 4 шипове ширина и 20 шипове с дължина, след като изградих един слой с тези дължини, изградих около нея шина с шипове, оставяйки празнина от едната страна, за да оставя място за стъпковия двигател, след което добавих парчета плочки до средната част, където ще бъде хартиената лента. Използването на Lego го направи много здрав и лесен за промяна. За да направя хартиената ролка, изрязах ленти от хартия А4 с ширина 1,2 см (избрах тази ширина, защото е същата като ширината на Lego колелото, което използвах, можете да направите вашите по -големи или по -малки в зависимост от вашето колело) и залепих краищата им заедно за да образувам една много дълга лента, след това я увих около колелото.

Стъпка 2: Серво парчето

Серво парчето
Серво парчето
Серво парчето
Серво парчето
Серво парчето
Серво парчето

За тази стъпка се нуждаете от:

  • два дървени дюбели с дължина 4 см
  • две пружини с дължина 2 см
  • една сламка, нарязана на две парчета с дължина 2 см всяка
  • едно парче картон 12 см на 4 см
  • две парчета картон 4 см на 1,5 см
  • едно парче картон 4 см на 2 см

Първо залепете дюбелите към едно от парчетата 4 на 1,5, след това поставете пружините и сламките в дюбелите, след което залепете другото картонено парче от другата страна, за да задържите всичко на място.

Второ, залепете парчето 4 см на 2 см върху сламките.

Трето, обърнете цялото парче и залепете малък дюбел към гърба му, не в средата, а леко вляво. (Забравих да добавя малкия дюбел на първата снимка)

Накрая изрежете дупка в голямото парче картон с размерите на предната част на серво мотора и залепете двигателя, след което залепете парчето, което току -що направихме с дюбелите, към голямото парче, така че когато серво се движи, то избутва малък дюбел надолу, който от своя страна също избутва пружините надолу.

В крайна сметка изрязах около 3 см от долната част на парчето 12 см на 4 см и залепих още две парчета 4 см на 1,5 см към него, след което го покрих с парче картон 5,5 см на 4 см. И за да държа маркера направих малък контур от еластична лента и го залепих за малко парче картон, след което го залепих за парчето 4 см на 2 см, което ще се премести надолу, когато сервозадвижването започне. Тези допълнения спряха маркера да се движи от едната страна на другата, когато пружините се върнат нагоре.

Стъпка 3: Добавяне на серво мотора и ролката хартия към основата

Добавяне на серво мотора и ролката хартия към основата
Добавяне на серво мотора и ролката хартия към основата
Добавяне на серво мотора и ролката хартия към основата
Добавяне на серво мотора и ролката хартия към основата

Добавих още две тухли към едната страна на основата, за да поддържам серво парчето и го залепих на място. След това добавих колелото към далечния край на основата.

Стъпка 4: Изграждане на рамката на стъпков двигател

Изграждане на рамка на стъпков двигател
Изграждане на рамка на стъпков двигател
Изграждане на рамка на стъпков двигател
Изграждане на рамка на стъпков двигател
Изграждане на рамка на стъпков двигател
Изграждане на рамка на стъпков двигател

Тази стъпка беше малко предизвикателство, защото моторът не беше направен така, че да пасва идеално на Lego. Успях обаче да го направя, като използвах двата отвора в двигателя, за да го закрепя на място. След това залепих Lego колело към върха на двигателя и го поставих точно до основата от страната, която оставих отворена в стъпка 1.

Стъпка 5: Довършителни щрихи

Довършителни щрихи
Довършителни щрихи
Довършителни щрихи
Довършителни щрихи
Довършителни щрихи
Довършителни щрихи
Довършителни щрихи
Довършителни щрихи

Добавих две парчета дъга, за да покрия колелото, за да фиксирам хартията на място. И добавих две по -малки дъгови парчета, едното да държи проводниците на стъпковия двигател и друго, за да държи хартията. Накрая смених колелото на стъпковия двигател на малко по -голямо, което премести хартията по -добре от старото колело.

Стъпка 6: Електроника

Електроника
Електроника
Електроника
Електроника

И накрая, трябва да свържете двигателите към Arduino и да качите кода.

Ще започнем със серво мотора, ще свържем кафявия проводник (заземяващия проводник) към щифта GND, след това червения проводник (захранващия проводник) към 5V щифта и оранжевия проводник (сигналния проводник) към Dig #5 щифт. След това, стъпковият двигател, свържете 1N1 към Dig #11, 1N2 към Dig #10, 1N3 към Dig #9, 1N4 към Dig #8, 5V към положителната страна на макета и заземяващия щифт към отрицателната страна на макет. И не забравяйте да свържете захранващия модул към макета, като се уверите, че положителните и отрицателните му страни са подравнени правилно към съответните страни на макета. Ако забравите да направите това, ще обърнете захранването към вашия проект и не искате да го направите.

За кода написах четири метода, един за изписване на точка, един за изписване на тире и два, за да оставите интервал между всяка буква и всяка дума. По този начин мога просто да извикам тези методи, когато имам нужда от тях, вместо да го пиша отново за всяка буква. След това написах цикъл for, който преминава през всяка буква на текста и го напиша. Вътре в него написах оператор if за всяка буква, но можете да го напишете в оператор switch, ако предпочитате. Разбира се, можете да добавите към кода, за да позволите на програмата да чете числа. Когато цялото окабеляване е готово, просто копирайте и поставете кода във вашата IDE. Не забравяйте да инсталирате библиотеките за степъри, серво и низове. След това можете да тръгнете.

Как работи

Когато Arduino стартира, програмата разглежда първата буква от текста и в зависимост от това коя е, извиква функциите, които я записват с азбука на Морз. Например, когато се извика точкова функция, серво моторът е настроен на 160, който премества писалката надолу, след това се връща обратно на 90, което позволява на пружините да се върнат нагоре, премествайки писалката с тях. И ако се извика функцията на тирето, сервото премества писалката надолу, след това стъпковият двигател завърта колелото, което дърпа хартията, карайки писалката да напише тире. И ако една от интервалните функции се нарича стъпковият двигател се върти, но с писалката нагоре, така че издърпва хартията, като прави интервал между буквите или думите. Когато приключи, преминава към следващата буква и повтаря същия процес. Надявам се че го харесваш;)

Кодът

#включва

#include #include #include const int stepsPerRevolution = 150; // Това е променливата за стъпковия двигател String изречение = "*здравей"; // Променете тази променлива, за да пишете различни думи, но пишете само с малки букви и започнете думата си с "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Серво myServo; // Това е методът, който кара робота да напише точка void dot () {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 ("тире готово"); } // Това е методът, който кара робота да остави интервал между всяко писмо void space () {Serial.println ("space start"); myServo.write (90); забавяне (1000); myStepper.step (200); забавяне (1000); Serial.println ("пространство направено"); } // Това е методът, който кара робота да остави по -голямо пространство между всяка дума void bigSpace () {myServo.write (90); myStepper.step (250); забавяне (1000); } void setup () {// поставете вашия код за настройка тук, за да се стартира веднъж: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int първо = изречение.indexOf ('*'); // този цикъл for преминава през всяка буква на низа и след това извиква правилните методи, за да го запише за (int i = 0; i <изречение.length (); i ++) {if (изречение.charAt (първо+i) == 'a') {Serial.print (".-"); точка (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'b') {Serial.print ("-…"); тире (); точка (); точка (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'c') {Serial.print ("-.-."); тире (); точка (); тире (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'd') {Serial.print ("-.."); тире (); точка (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'e') {Serial.print ("."); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'f') {Serial.print ("..-."); точка (); точка (); тире (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'g') {Serial.print ("-."); тире (); тире (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'h') {Serial.print ("…."); точка (); точка (); точка (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'i') {Serial.print (".."); точка (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'j') {Serial.print (".---"); точка (); тире (); тире (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'k') {Serial.print ("-.-"); тире (); точка (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'l') {Serial.print (".-.."); точка (); тире (); точка (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'm') {Serial.print ("-"); тире (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'n') {Serial.print ("-."); тире (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'o') {Serial.print ("---"); тире (); тире (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'p') {Serial.print (".--."); точка (); тире (); тире (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'q') {Serial.print ("--.-"); тире (); тире (); точка (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'r') {Serial.print (".-."); точка (); тире (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 's') {Serial.print ("…"); точка (); точка (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == 't') {Serial.print ("-"); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'u') {Serial.print ("..-"); точка (); точка (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'v') {Serial.print ("…-"); точка (); точка (); точка (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'w') {Serial.print (".--"); точка (); тире (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'x') {Serial.print ("-..-"); тире (); точка (); точка (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'y') {Serial.print ("-.--"); тире (); точка (); тире (); тире (); интервал (); } иначе ако (изречение.charAt (първо + i) == 'z') {Serial.print ("-.."); тире (); тире (); точка (); точка (); интервал (); } иначе ако (изречение.charAt (първо + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Не пишете нищо тук}

Стъпка 7: Отстраняване на неизправности

Колелото не се движи

Възможно е да има твърде голямо триене между колелото и хартията, опитайте да повдигнете малко колелото или да го смените.

Колелото дърпа хартията, но след това продължава да се върти, без да дърпа хартията

Уверете се, че сте залепили колелото в центъра на стъпковия двигател

Точките и тиретата са свързани

Проверете дали точката, тирето и интервалът са написани правилно, те трябва да са така:

// Това е методът, който кара робота да напише dotvoid dot () {Serial.println ("dot start"); 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 ("тире готово"); }

// Това е методът, който кара робота да остави интервал между всяка буква

void space () {Serial.println ("space start"); myServo.write (90); забавяне (1000); myStepper.step (200); забавяне (1000); Serial.println ("пространство е направено"); }

Препоръчано: