Ollie — рободирижабль под управлением Arduino


Ollie - рободирижабль под управлением Arduino
Ollie — открытый (open source) проект автономного рободирижабля.

Демонстрационное видео:

Для проекта используются:
* Arduino Pro Mini
* электронный микрофон
* литий-ионная батарея 900 мАч
* 2 Микро-сервомашинки ( 3,6г)
* Метровый майларовый (фольгированный) шар + лист майлара/фольги для крыльев
+ мелочёвка

Схема
Ollie - рободирижабль под управлением Arduino

Скетч

#include <SoftwareServo.h>
SoftwareServo myservo;  // create servo object to control a servo
SoftwareServo myservo2;
int goUp = 0;
int val = 0;
int wait = 0;
int flyFor = 0;
long flapTime = 0;
int angleMin = 0;
int angleMax = 120;
int upSpeed = 20;
int downSpeed = 1;
int buffer = 0;
//Sound variables
int potPin = 1;    // select the input pin for sound sensor
int ledPin = 13;   // select the pin for the LED
int soundVal = 0;
void setup()
{
  pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT
  myservo.attach(2);  // attaches the servo on pin 2
  myservo2.attach(4);
  Serial.begin(9600);      // open the serial port at 9600 bps:
}
void loop()
{
  // Servo
  if (flyFor < flapTime){
    if (wait == 5){
      if (val < angleMin){
        goUp = 1;
        digitalWrite(ledPin,HIGH);
        }
      else if (val >angleMax){
        goUp = 0;
        digitalWrite(ledPin,LOW);
      }
      if (goUp == 0){
        val-=upSpeed;
      }else {
        val+=downSpeed;
      }
    }
    wait++;
    if (wait > 200)
      wait = 0;
    myservo.write(val);
// sets the servo position according to the scaled value
    myservo2.write(120-val);
    SoftwareServo::refresh();
    flyFor++;
  }else{
     //Sound
    soundVal = analogRead(potPin);
    Serial.println("Listening............");
    if( soundVal>1020 ){
      Serial.println("FREEAK OUT!");
      upSpeed = 15;
      downSpeed = 15;
      angleMax = 45;
      angleMin = 10;
      flapTime = 6000;
   }
    else if (soundVal<450 || soundVal >750){
      if (buffer == 0){
        Serial.println(soundVal);
        upSpeed = random (1, 20); //1 to 30
        downSpeed = random (1, 30);// 1 to 30
        angleMax = random (110, 120);
        angleMin = random (30, 45);
        flapTime = 10000 + random (5000 , 10000);
        flyFor = 0;
        buffer = 15;
      }else{
         buffer--;
      }
    }
  }
}

Ссылки
http://meandollie.com — Ollie is a DIY autonomous robotic blimp
инструкция по сборке


0 комментариев на «“Ollie — рободирижабль под управлением Arduino”»

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение