Mittwoch, 23. Oktober 2013

Heli Blinkerle

Nachdem der Hughes 500 ganz gut fliegt MUSS nun natürlich eine Beleuchtung rein. Deshalb hab ich mal mein Arduino Diecimila geschnappt und flux ein kleines Program geschrieben, welches beliebig viele LEDs in unterschiedlichen Intervallen blinken lässt. Der Testaufbau besteht noch aus normalen LEDs. Im Heli werden dann 1W LEDs mit einer kleinen LED Treiberplatine an 2S Lipo betrieben ... more to come.

Hier mal ein kurzer Preview ...

und der Source:

// Author: fliegerle.com, V0.9
//
// Small sketch whichs let's LEDs make blink blink blink ...
// How it works: Just create a light object with "Create" and put an "Init" into Setup() and a "Check" in Loop(). 
// After on_1 ms the light is turned off, then after off_1 turned on again. You can define up to
// 2 periods. Each light gets its own counter, so you don't need to compute divisors or counters. I'm using JeeLib 
// for the MilliTimer.

#include <JeeLib.h>

struct Light
{
  Light() : m_event(0), 
            m_status(255), 
            m_period(0)           
  {};
  
  void Create( byte led_pin, int on_1=0, int off_1=0, int on_2=0, int off_2=0 )
  {
    m_period_switch[0]  = on_1; 
    m_period_switch[1]  = ( off_1 == 0 ) ? on_1 : off_1;
    m_period_switch[2]  = ( on_2 == 0 ) ? on_1 : on_2;
    m_period_switch[3]  = ( off_2 == 0 ) ? off_1 : off_2;
    m_led_pin = led_pin;
    m_status  = 255;
  }
  
  void Init()
  {
    m_event = 1; 
    m_period = m_period_switch[0];   
    m_counter = 0;
    pinMode( m_led_pin, OUTPUT );
    Off();
  }
  void Check()
  {
    if( m_status == 255 )
    {
      Init();
    }
    if ( m_period_switch[0] == 0 )
    {
      On();
      return;
    }
    
    if ( m_timer.poll(m_period) )
    {
      switch( m_event )
      {
        case 1:
        {
          digitalWrite( m_led_pin, 1 );
          m_event = 0;
          m_period = m_period_switch[2*m_counter+1];
          m_counter++;
          if ( m_counter>1 )
          {
            m_counter=0;
          }
          break;
        }
        case 0:
        { 
          digitalWrite( m_led_pin, 0 );
          m_event = 1;
          m_period = m_period_switch[2*m_counter];
          break;
        }
        default:;
      }
    }
  }
  void Off()
  {
    if ( m_status!=0 )
    {
      m_status = 0;
      digitalWrite( m_led_pin, m_status );
    }
  }
  void On()
  {
    if ( m_status!=1 )
    {
      m_status = 1;
      digitalWrite( m_led_pin, m_status );
    }
  }
  
  MilliTimer m_timer;
  byte m_event;
  int m_period;
  int m_period_switch[4];
  byte m_counter;
  byte m_led_pin;
  byte m_status;
  
};


const int max_leds = 5;
Light test_led[max_leds];

void setup()

  for ( int i=0; i<max_leds; i++ )
  {
    switch( i )
    {
     case 0: test_led[i].Create( 13,  50, 1000 );          break; // ON for 50ms, OFF for 1000ms
     case 1: test_led[i].Create( 3,   50, 100, 50, 3000 ); break; // double blink
     case 2: test_led[i].Create( 4, 1500, 100 );           break; // long on, then off
     case 3: test_led[i].Create( 5,   50, 100, 150, 200 ); break; // now to something completely different
     case 4: test_led[i].Create( 6 );                      break; // permanently ON
     default:;
    }   
    test_led[i].Init();
  }
}

void loop() 
{
  for ( int i=0; i<max_leds; i++ )
  {
    test_led[i].Check();
  }
}

Mittwoch, 9. Oktober 2013

Segelflug Events

Das Modellflugjahr geht schon wieder mit großen Schritten Richtung Winter, aber wir hatten im Herbst noch zwei tolle Events beim MFG Erbach:
Da war zum einen wieder eine sehr spannende Segelflugvereinsmeisterschaft am Anfang September. Das Wetter hatte mitgespielt und so konnten auch Durchgänge mit vollen 5 Minuten Flugzeit geflogen werden. Konkret bedeutete dies aktive Thermiksuche, sonst war man weit vor der Rahmenzeit wieder unten. An der Spitze der Tabelle gings eng zu: Markus W. siegte dieses Jahr vor Michael. K und Tobias E. - ganz knapp dahinter war Heinz B. Ich selber bin dann auf dem 8. Platz gelandet. Hat richtig Spass gemacht, und nächstes Jahr wird aber von meiner Seite mehr mit dem F3B Segler geflogen ... da ist noch Luft nach oben :)



Dann gabs ein sehr schönes Hangflugwochenende in Damüls: Wetter war gut, tolle Unterkunft im Hertehof und ein sehr interessantes Fluggebiet. HLGs konnte man schon morgens direkt an unserer Unterkunft fliegen, die großen Segler hatten dann bei der Uga Alpe und weiter oben bei der Mittagsspitze Ausgang. Macht einfach Spaß bei dem Panorama draußen zu sein.