Arduino project - tail, Робот аніматроніку - хвіст.

Те, що у вас вже є, ви можете видалити в кошику.

Вітання!

Аніматроніка - методика, що застосовується в кінематографії, мультиплікації, комп'ютерному моделюванні для створення спецефектів рухомих штучних частин тіла людини або тварини, коли необхідно створити складний макет, покадрова зйомка якого неможлива. (Wiki)

Хочете здивувати своїх друзів привести в шок випадкових перехожих? Покажіть їм хвіст!

Пропонуємо зробити своїми руками найпростішого робота аніматроніка - хвіст лисиці. (Рис.1) При подачі команди з кнопки, яку ви заховаєте в кишені, хвіст почне виляти. Це буде тривати кілька секунд.

Це буде тривати кілька секунд

Як це працює? До маленької платі Arduino підключений сервомоторчік і кнопка. Куди що підключити зазначено в перших рядках скетчу. На осі сервомоторчіка встановлена ​​капронова стяжка. Вона вставляється в маленьку прищіпку надруковану на 3d принтері. А на цю стяжку надаватися хвіст. (Рис.2). Хвіст можна купити в сувенірній крамниці або зшити зі штучного хутра. Сервомоторчік ховається в корпус з великою прищіпкою, яка утримує хвіст на спідниці або брюках.

Сервомоторчік ховається в корпус з великою прищіпкою, яка утримує хвіст на спідниці або брюках

Власне і все - проект вихідного дня.

У скетчі є рядки, в яких можна налаштовувати кут і швидкість виляння хвоста. Також можна встановити і час виляння після натискання кнопкі.В підвалі ви можете завантажити stl-файли корпусу і прищіпок для 3D принтера. Якщо у вас немає 3D принтера, не турбуйтеся, конструкція настільки проста, що можливо ви самі придумаєте, як закріпити серв на поясі. Живити робота можна трьома батарейками ААА.В маленьких роликах можна подивитися як влаштований корпус з прищіпками і як працює хвіст.

Це відкритий проект! Ліцензія, під якою він поширюється - Creative Commons - Attribution - Share Alike license.

#include <Servo.h> #define TailPin 3 // висновок для підключення приводу #define KeyPin 4 // висновок для підключення кнопки #define MaxAngleShift 10 // відхилення від початкового положення // в одну сторону, градуси //т.е. хід приводу = 2 * значення #define MoveDelay 35 // затримка при зміні кута (мс), // визначає швидкість руху, // ніж, більше значення, тим менше швидкість #define INIT_TAIL_POS 50 // початкове положення приводу, градуси #define MoveTimes 10 // кількість рухів після натискання кнопки Servo Tail; void setup () {pinMode (KeyPin, INPUT); digitalWrite (KeyPin, HIGH); Tail.attach (TailPin); Tail.write (INIT_TAIL_POS); delay (300); Tail.detach (); } // --------------------------------------------- void loop () {if (digitalRead (KeyPin) == 0) {delay (70); if (digitalRead (KeyPin) == 0) {Tail.attach (TailPin); for (byte i = 0; i <= MaxAngleShift; i ++) {Tail.write (INIT_TAIL_POS + i); delay (MoveDelay); } For (byte j = 0; j <MoveTimes; j ++) {for (byte i = 0; i <= 2 * MaxAngleShift; i ++) {Tail.write (INIT_TAIL_POS + MaxAngleShift - i); delay (MoveDelay); } For (byte i = 0; i <= 2 * MaxAngleShift; i ++) {Tail.write (INIT_TAIL_POS - MaxAngleShift + i); delay (MoveDelay); }} Tail.write (INIT_TAIL_POS); delay (300); Tail.detach (); }}}

Як це працює?