Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Двуногий Arduino (Малыш Дино)

Компоненты и расходные материалы

Arduino Mega 2560
× 1
Батарея 9 В (стандартная)
× 1
Ультразвуковой датчик SparkFun - HC-SR04
× 1
Микро-серводвигатель SG90
× 5

Об этом проекте

Baby Dino - двуногий робот на базе Arduino. В основном он использует пять серводвигателей, по два для каждой ноги и один для головы. Он также использует ультразвуковой датчик для обнаружения препятствий и их избегания. А теперь посмотрим, как это сделать!

Шаг 1. Введение

  • Baby Dino - это робот, созданный своими руками на Arduino.
  • Изготовлен из картона.
  • Он найдет препятствия, а затем переместится влево или вправо.

Шаг 2. Необходимые компоненты

  • 1 модуль Arduino Uno, Nano или Mega
  • Сервопривод 5 x 9 г
  • 1 ультразвуковой датчик HC-SR04
  • 1 батарея LiPo (батарея 2 или 9 В)

Шаг 3. Установка сервопривода

  • Скачать программу
  • Загрузить в Arduino
  • Подключите сервопривод в соответствии со схемой ниже.
  • Починить рог сервопривода.
  • Убедитесь, что все расположено под углом 90 градусов.
fix.ino

Шаг 4. Дизайн

  • Загрузить дизайн
  • Распечатать на A4
  • Наклейте на картон.
  • Вырежьте

Шаг 5:Заключительный шаг

  • Прикрепите сервоприводы к картону.
  • Загрузите программу в Arduino.
  • Подключите сервоприводы и ультразвуковой датчик.
  • Сделать кабель "хвостом".
  • Подключите аккумулятор.

Вот и все!

uBipedino.ino

Код

  • fix.ino
  • двуногий
fix.ino Arduino
 #include  Серво s1; Серво s2; Серво s3; Сервопривод s4; Серво s5; void setup () {s1.attach (8); s2.attach (9); s3.attach (10); s4.attach (11); s5.attach (12);} недействительный цикл () {s1.write (90); s2.write (90); s3.write (90); s4.write (90); s5.write (90); } 
двуногий Arduino
отредактируйте выводы сервопривода и ультразвукового датчика по своему желанию
 #include  #include  // отредактируйте вывод в соответствии с вашим подключением # define IRsensorPin 13 // если вы используете ИК-датчик вместо ультразвуковой датчик # define TRIGGER_PIN 12 // вывод Arduino, привязанный к контакту триггера на ультразвуковом датчике. #define ECHO_PIN 11 // контакт Arduino, привязанный к контакту эхо на ультразвуковом датчике. # define LEFTLEG 7 # define RIGHTLEG 10 # define LEFTFOOT 8 # define RIGHTFOOT 9 #define HEAD 6 #define MAX_DISTANCE 200 // Максимальное расстояние, на которое мы хотим пинговать (в сантиметрах). Максимальное расстояние датчика оценивается в 400-500 см. Новый гидролокатор (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка пинов и максимального расстояния NewPing.Servo Lleg; // создание сервообъекта для управления сервоприводом Servo Rleg; Servo Lfoot; Servo Rfoot; Servo Head; int Hcenter =70; // переменная для хранения центрального положения сервопривода int RLcenter =100; int RFcenter =65; // переменная для хранения центрального положения сервопривода int LLcenter =90; int LFcenter =75; int tAngle =30; // угол наклона int uAngle =35; // угол поворота int sAngle =35; // угол поворота int hAngle =Hcenter; void Вперед (байтовые шаги, байтовая скорость) {Serial.println ("Вперед"); TiltRightUp (tAngle, Скорость); for (байт j =0; j <шаги; ++ j) {SwingRight (sAngle, Speed); TiltRightDown (tAngle, Скорость); TiltLeftUp (tAngle, Скорость); SwingRcenter (угол, скорость); SwingLeft (угол, скорость); TiltLeftDown (tAngle, Скорость); TiltRightUp (tAngle, Скорость); SwingLcenter (угол, скорость); } TiltRightDown (tAngle, Speed);} void TurnLeft (byte Steps, byte Speed) {Serial.println ("TurnLeft"); TiltLeftUp (угол, скорость); задержка (20); для (байт j =0; j <шаги; ++ j) {LeftLegIn (sAngle, Speed); TiltLeftDown (uAngle, Скорость); TiltRightUp (uAngle, Скорость); задержка (20); LeftLegIcenter (угол, скорость); RightLegOut (угол, скорость); TiltRightDown (uAngle, Скорость); TiltLeftUp (угол, скорость); задержка (20); RightLegOcenter (угол, скорость); } TiltLeftDown (uAngle, Speed);} void TurnRight (byte Stps, byte Speed) {Serial.println ("TurnRight"); TiltRightUp (uAngle, Скорость); задержка (20); for (байт f =0; f <=Stps; ++ f) {RightLegIn (sAngle, Speed); TiltRightDown (uAngle, Скорость); TiltLeftUp (угол, скорость); задержка (20); RightLegIcenter (угол, скорость); LeftLegOut (угол, скорость); TiltLeftDown (uAngle, Скорость); TiltRightUp (uAngle, Скорость); задержка (20); LeftLegOcenter (угол, скорость); } TiltRightDown (uAngle, Speed);} void HeadRight () {Serial.println ("HeadRight"); Head.write (Hcenter - 105); задержка (1000);} void HeadLeft () {Serial.println ("HeadLeft"); Head.write (Hcenter + 105); задержка (1000);} void HeadCenter () {Serial.println ("HeadCenter"); Head.write (Hcenter); delay (1000);} void TiltRightUp (byte ang, byte sp) {// наклон вправо для (int i =0; i <=ang; i + =5) {Lfoot.write (LFcenter + i); Rfoot.write (RFcenter + i); задержка (sp); }} void TiltRightDown (byte ang, byte sp) {// наклон вправо для (int i =ang; i> 0; i- =5) {Lfoot.write (LFcenter + i); Rfoot.write (RFcenter + i); задержка (sp); }} void TiltLeftUp (byte ang, byte sp) {// наклон влево вверх для (int i =0; i <=ang; i + =5) {Lfoot.write (LFcenter-i); Rfoot.write (RFcenter-i); задержка (sp); }} void TiltLeftDown (byte ang, byte sp) {// наклон влево для (int i =ang; i> 0; i- =5) {Lfoot.write (LFcenter-i); Rfoot.write (RFcenter-i); задержка (sp); }} void LeftFootUp (char ang, byte sp) {// наклон влево вверх для (int i =0; i <=ang; i + =5) {Lfoot.write (LFcenter-i); задержка (sp); }} void LeftFootDown (byte ang, byte sp) {// наклон влево для (int i =ang; i> 0; i- =5) {Lfoot.write (LFcenter-i); задержка (sp); }} void RightFootUp (byte ang, byte sp) {// наклон вправо для (int i =0; i <=ang; i + =5) {Rfoot.write (RFcenter + i); задержка (sp); }} void RightFootDown (byte ang, byte sp) {// наклон вправо для (int i =ang; i> 0; i- =5) {Rfoot.write (RFcenter + i); задержка (sp); }} void SwingRight (byte ang, byte sp) {// поворот вправо для (int i =0; i <=ang; i + =5) {Lleg.write (LLcenter-i); Rleg.write (RLcenter-i); задержка (sp); }} void SwingRcenter (byte ang, byte sp) {// поворот r-> center for (int i =ang; i> 0; i- =5) {Lleg.write (LLcenter-i); Rleg.write (RLcenter-i); задержка (sp); }} void SwingLeft (byte ang, byte sp) {// поворот влево для (byte i =0; i <=ang; i =i + 5) {Lleg.write (LLcenter + i); Rleg.write (RLcenter + i); задержка (sp); }} void SwingLcenter (byte ang, byte sp) {// качание l-> center for (byte i =ang; i> 0; i =i-5) {Lleg.write (LLcenter + i); Rleg.write (RLcenter + i); задержка (sp); }} void RightLegIn (byte ang, byte sp) {// поворот вправо для (int i =0; i <=ang; i + =5) {Rleg.write (RLcenter-i); задержка (sp); }} void RightLegIcenter (byte ang, byte sp) {// поворот r-> center for (int i =ang; i> 0; i- =5) {Rleg.write (RLcenter-i); задержка (sp); }} void RightLegOut (byte ang, byte sp) {// повернуть вправо для (int i =0; i <=ang; i + =5) {Rleg.write (RLcenter + i); задержка (sp); }} void RightLegOcenter (byte ang, byte sp) {// поворот r-> center for (int i =ang; i> 0; i- =5) {Rleg.write (RLcenter + i); задержка (sp); }} void LeftLegIn (byte ang, byte sp) {// поворот влево для (byte i =0; i <=ang; i =i + 5) {Lleg.write (LLcenter + i); задержка (sp); }} void LeftLegIcenter (byte ang, byte sp) {// поворот l-> center for (byte i =ang; i> 0; i =i-5) {Lleg.write (LLcenter + i); задержка (sp); }} void LeftLegOut (byte ang, byte sp) {// поворот влево для (byte i =0; i <=ang; i =i + 5) {Lleg.write (LLcenter-i); задержка (sp); }} void LeftLegOcenter (byte ang, byte sp) {// поворот l-> center for (byte i =ang; i> 0; i =i-5) {Lleg.write (LLcenter-i); задержка (sp); }} void setup () {Serial.begin (19200); Serial.println («Выполняется установка Bipedino.»); Lleg.attach (LEFTLEG); Rleg.attach (RIGHTLEG); Lfoot.attach (LEFTFOOT); Rfoot.attach (RIGHTFOOT); Head.attach (ГОЛОВА); CenterServos (); задержка (500); для (int я =0; я <5; ++ я) {GetSonar (); задержка (1000); } Serial.println ("Bipedino готов.");} // setup () void loop () {unsigned int cmCenter =MAX_DISTANCE; беззнаковое int cmLeft =MAX_DISTANCE; беззнаковое int cmRight =MAX_DISTANCE; HeadCenter (); cmCenter =GetSonar (); если (cmCenter <20) {HeadRight (); cmRight =GetSonar (); HeadCenter (); если (cmRight> 20) {TurnRight (1, 30); } еще {HeadLeft (); cmLeft =GetSonar (); HeadCenter (); если (cmLeft> 20) {TurnLeft (1, 30); }}} еще {int nSteps =cmCenter / 5; если (nSteps> 5) {nSteps =5; } else {nSteps =1; } Serial.print ("Шаги <"); Serial.print (nSteps); Serial.println (">"); for (int n =0; n  

Изготовленные на заказ детали и корпуса

Схема


Производственный процесс

  1. Соска
  2. Переноска-переноска
  3. Детские влажные салфетки
  4. Детское питание
  5. Детская коляска
  6. Arduino Spybot
  7. FlickMote
  8. Самодельный телевизор B-Gone
  9. Основные часы
  10. Робот с сервомотором избегает препятствий