Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин


[ Раскрыть online-чат / Закрыть ] · [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: nightmare, Huntswarrior, Aleks_Crow, {{TNT}}  
Миньон-копилка на 3D-принтере⁠⁠
Отправлено 27.08.2022 - 19:471
Начальная группа
1 сообщений
Женщина
Проект подойдет для тех, кто только начинает осваивать Ардуино. Код подробно прокомментирован, а требуемая элементная база минимальна.



Робот реагирует на движение. Если положить мелкий предмет ему в корыто, он открывает рот и забрасывает предмет внутрь себя. Для реализации проекта потребуется 3D-принтер, паяльник, установленная среда программирования Arduino IDE, простейшие навыки работы с Ардуино, большой адронный коллайдер и несколько электронных компонентов:
- Arduino pro mini
- Ультразвуковой дальномер HC-SR04
- Сервопривод SG90 или аналогичный
- Блок питания 5V или аккумуляторы
- Корпус напечатанный на 3D-принтере
- Светодиод и резистор 220 Ом (опционально)

Печатаем корпус
Качаем файлы для печати на 3d-принтере с Thingeverse и собираем по инструкции. При желании можно раскрасить корпус акриловыми красками.


Схема
$IMAGE2$
Код для Arduino IDE:

Код
// Пины для подключения дальномера, светодиода, сервопривода//
#define trigPin 9   //
#define echoPin 8   //
#define led 10      //
#define servopin 7  //

//основные параметры
#define chewing 4   // Сколько раз пережёвываем проглоченное
#define blizost 10  // Расстояние, до которого будет реагировать датчик (в сантиметрах)

//состояния открытия рта. Всего их три: закрыт, открыт, приоткрыт.
//Настраиваются индивидуально под каждый сервопривод (значения от 0 до 180 градусов).
#define mouthClose 90 // Рот закрыт
#define mouthOpen 30  // Рот открыт
#define mouthAjar 70  // Рот приоткрыт

#include <Servo.h>    // Подключаем библиотеку сервопривода
Servo Sergo;      

void setup() {
  Serial.begin(9600);      //Инициализируем последовательный порт чтобы выводить в него расстояния определенное датчиком

  pinMode(trigPin, OUTPUT); //
  pinMode(echoPin, INPUT);

  Sergo.attach(servopin);   // в скобках номера пина к которому подключен сервопривод
  sleep();                  // установим сервопривод в исходное положение, т.е. рот закрыт
}

void loop() {
  int duration, distance;
  digitalWrite(trigPin, LOW);     // Для большей точности установим значение LOW на пине Trig
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);    // Теперь установим высокий уровень на пине Trig
  delayMicroseconds(10);        
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH); // Узнаем длительность высокого сигнала на пине Echo
  //Переводим скорость звука из 343 м/с в см/мкс: s = duration/29
  //Поскольку расстояние пройдено дважды, то s = duration / (29*2)

  distance = duration / 58;       // Рассчитываем расстояние в сантиметрах
  Serial.print(distance);         // Выведем значение в Serial Monitor
  Serial.println(" cm");

  if (distance < blizost) {       // Если расстояние до предмета меньше заданного, то проглатываем
    om_nom_nom();
    digitalWrite(led, HIGH);
  }
  delay(100);
}

void om_nom_nom() {
  digitalWrite(led, HIGH);  // Зажигаем лампочкой
  Sergo.attach(servopin);   // Подключаем сервопривод
  delay(200);

  Sergo.write(mouthOpen);          // открываем рот и ждем пока предмет свалится в него
  delay(700);

  // жуем //
  for (int x = 0; x < chewing; x++) {
    Sergo.write(mouthAjar);
    delay(250);
    Sergo.write(mouthOpen);
    delay(250);
    Serial.println("nyam");
  }
  sleep();  //спим
}

void sleep(){
  Sergo.write(mouthClose);
  delay(250);

  Sergo.detach();         // отключаем питание сервопривода, иначе он будет жужжать
  digitalWrite(led, LOW); // гасим светодиод
}



Страница проекта


6528751.jpg (110.2 Kb) · 22baca_75053f9f.webp (112.7 Kb)
Профиль Личное сообщение Дом. страница icq Skype
2
Отправлено 28.08.2022 - 12:542
Администраторы
3417 сообщений
Мужчина
Зачет! ))


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
  • Страница 1 из 1
  • 1
Поиск: