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


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

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


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

Схема


Скетч
#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--;
      }
    }
  }
}


Ссылки:
meandollie.com — Ollie is a DIY autonomous robotic blimp
инструкция по сборке
  • +3
  • 2 июня 2012, 21:33
  • admin

Комментарии (1)

RSS свернуть / развернуть
+
0
Мне кажется, было бы интереснее оснастить его УЗ сенсором высоты ;).
avatar

brujodentista

  • 4 июня 2012, 11:53

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.