Skocz do zawartości

Boeing 747-8F Cargolux, Revel 1:144 + oświetlenie


milczacy

Rekomendowane odpowiedzi

  • Super Moderator
Jeden z Kolegów pytał mnie o zastosowane diody, poniżej zestawienie:

 

Czerwona, pozycyjne skrzydło

http://www.tme.eu/pl/details/asmt-rr45-aq902/diody-led-smd-kolorowe/avago/

 

Zielona, pozycyjne skrzydło

http://www.tme.eu/pl/details/ll-s190pgc-g51b/diody-led-smd-kolorowe/lucky-light/

 

Biała, stroboskopy tył i skrzydła

http://www.tme.eu/pl/details/ll-s192w-w21c/diody-led-smd-biale/lucky-light/ll-s192w-w2-1c/

 

Beacon

http://www.tme.eu/pl/details/l-2060src/diody-led-tht-18mm/kingbright-electronic/

 

Biała, reflektory lądowania w skrzydłach

http://www.tme.eu/pl/details/osw5dk7331a/diody-led-tht-18mm/optosupply/

 

Moduł sterujący

Arduino Nano (na Allegro za ok. 15zł)

 

I jak się ten moduł "konfiguruje", czy programuje, żeby diody migały w odpowiedniej kolejności?

Odnośnik do komentarza
Udostępnij na innych stronach

Tu jest kod/program działający u mnie:

 

/* Oświetlenie nawigacyjne Boening 747
*
*/

const int LEDOFF = 0;
const int LEDON = 96; // 25%
const int LEDBLINK = 244;  // 100%
const int LEDHALF = 120; // 50%

class LED {
 private:
   byte _ledPin;
   int _ledState;
   int _ledLastState;
   long _currentMillis;
   long _previousMillis;
 public:
   byte _brightness;
   long _interval;
   long _time;
   LED ( byte pin);
   void setOn();
   void setOff();
   void setOnTime();
   void setBrightness( byte brightness);
};

LED::LED( byte ledpin) : _ledPin(ledpin) {
 _brightness = 0;
   _ledState = LOW;
   _ledLastState = LOW;
   _currentMillis = millis();
   _previousMillis = _currentMillis;
   long _time;  pinMode(_ledPin, OUTPUT);
}

void LED::setOn() {
 analogWrite (_ledPin, _brightness);
}

void LED::setOff() {
 digitalWrite (_ledPin, LOW);
}

void LED::setBrightness ( byte brightness) {
 _brightness = brightness;
}

void LED::setOnTime(){
 _currentMillis = millis();
 if( _currentMillis - _previousMillis > _interval) {
   _previousMillis = _currentMillis;   
   if (_ledState == LOW) {
     _ledState = HIGH;
     _brightness = LEDBLINK;
   } else {
     _ledState = LOW;
     _brightness = LEDOFF;
   }
   _ledLastState = _ledState;
 }
 if (_ledLastState == _ledState) {
   if ( (_currentMillis - _time) < _previousMillis) {
     _brightness = LEDBLINK;
   } else {
     _brightness = LEDOFF;
   }
   setOn();
 }
   
}

/* dla Arduino Nano */
int Led_1 = 3;  //ogon, białe flash
int Led_2 = 5;  //strobo skrzydla, biały flash
int Led_3 = 6;  //beacon, czerwony flash
int Led_4 = 9;  //position-zielone,czerwone,białe
int Led_5 = 10;  
int Led_6 = 13;  
int Led_7 = 2;  //landing golen, białe stałe
int Led_8 = 7;  //landing skrzydla wew, białe stałe
int Led_9 = 8;  //landing skrzydla zew, białe stałe
int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 12;      // oświetlenie wnętrza modelu, białe
int sensorValue = 0;  // variable to store the value coming from the sensor

LED Led_tail(Led_1);
LED Led_strobe(Led_2);
LED Led_beacon(Led_3);

// Ustawienia po uruchomieniu układu
void setup() {
 // ustawiamy stan IO, internal pull
 pinMode(Led_1, OUTPUT);     
 pinMode(Led_2, OUTPUT);     
 pinMode(Led_3, OUTPUT);     
 pinMode(Led_4, OUTPUT);     
 pinMode(Led_7, OUTPUT);       
 pinMode(Led_8, OUTPUT);       
 pinMode(Led_9, OUTPUT);         
 pinMode(ledPin, OUTPUT);

 // tu regulujesz czas błysków
 Led_tail._interval = 1700;
 Led_tail._time = 60;
 
 Led_strobe._interval = 1000;
 Led_strobe._time = 70;
 
 Led_beacon._interval = 2400;
 Led_beacon._time = 100;
}

/* Wszystkie światła wyłączone */
void LEDS_OFF() {
 analogWrite(Led_1, LEDOFF);
 analogWrite(Led_2, LEDOFF);
 analogWrite(Led_3, LEDOFF);
 analogWrite(Led_4, LEDOFF); 
 analogWrite(Led_7, LEDOFF); 
 analogWrite(Led_8, LEDOFF);
 analogWrite(Led_9, LEDOFF);
 analogWrite(ledPin, LEDOFF);
}

/* Tylko światła nawigacyjne i pozycyjne (obrysowe) */
void Mode1() {  
 Led_tail.setOnTime();
 Led_strobe.setOnTime();
 Led_beacon.setOnTime();
 analogWrite(Led_4, LEDBLINK);
 analogWrite(Led_7, LEDOFF);
 analogWrite(Led_8, LEDOFF);
 analogWrite(Led_9, LEDOFF);
}

/* Światła nawigacyjne, pozycyjne i lądowania*/
void Mode2a() {  
 Led_tail.setOnTime();
 Led_strobe.setOnTime();
 Led_beacon.setOnTime();
 analogWrite(Led_4, LEDBLINK);
 analogWrite(Led_7, LEDBLINK);
 analogWrite(Led_8, LEDOFF);
 analogWrite(Led_9, LEDOFF);
}

void Mode2b() {  
 Led_tail.setOnTime();
 Led_strobe.setOnTime();
 Led_beacon.setOnTime();
 analogWrite(Led_4, LEDBLINK);
 analogWrite(Led_7, LEDBLINK);
 analogWrite(Led_8, LEDBLINK);
 analogWrite(Led_9, LEDOFF);
 
}

void Mode2c() {  
 Led_tail.setOnTime();
 Led_strobe.setOnTime();
 Led_beacon.setOnTime();
 analogWrite(Led_4, LEDBLINK);
 analogWrite(Led_7, LEDBLINK);
 analogWrite(Led_8, LEDBLINK);
 analogWrite(Led_9, LEDBLINK);
}

/* Tylko światła pozycyjne - obrysowe */
void Mode3() {
 analogWrite(Led_1, LEDOFF);
 analogWrite(Led_2, LEDOFF);
 analogWrite(Led_3, LEDOFF);
 analogWrite(Led_4, LEDBLINK);
 analogWrite(Led_7, LEDOFF);
 analogWrite(Led_8, LEDOFF);
 analogWrite(Led_9, LEDOFF);
}

/* w tej pętli, program wykonuje się w nieskończoność */
void loop() {
   /* read the value from the sensor:
   potencjometr dzielę na 6 pozycji, dla 6 trybów pracy */
 sensorValue = analogRead(sensorPin);    
 if ( sensorValue < 170 ) {
   LEDS_OFF();
   analogWrite(ledPin, LEDOFF);
 }
 if ((sensorValue > 170) and (sensorValue < 340)) {
   Mode3(); 
   analogWrite(ledPin, LEDHALF); }
 if ((sensorValue > 340) and (sensorValue < 510)) {  
   analogWrite(ledPin, LEDOFF);   
   Mode1(); }
 if ((sensorValue > 510) and (sensorValue < 680)) {
   analogWrite(ledPin, LEDOFF);   
   Mode2a(); }
 if ((sensorValue > 680) and (sensorValue < 850)) {
     analogWrite(ledPin, LEDOFF);   
   Mode2b(); }
 if (sensorValue > 850) {
   Mode2c(); }
}
/* a tu jest koniec kodu v2.3.2 */

 

Opis obsługi modułu Arduino jest na dedykowanej stronie - https://www.arduino.cc

Odnośnik do komentarza
Udostępnij na innych stronach

  • Super Moderator
Tak jest. Czysta technika ;)

Myślałem, że to jest bardziej skomplikowane. W kolejce czeka Airbus A380, tak że może mu coś takiego zrobię. A czy mógłbyś podać link o jaki to dokładnie moduł chodzi. Żeby nie kupić innego.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja kupowałem u tego sprzedawcy. Wklejam link z wynikami wyszukiwania, gdybym wkleił link do konkretnej aukcji za kilka dni byłby nieaktywny.

 

Kod do Airbusa umieszczę, gdy go końcowo obrobię, teraz jest jeszcze w fazie "beta" ;-) ( działa tak ->

)

 

Jeśli przewidujesz różne tryby pracy daj proszę znać, przygotuję odpowiedni kod

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.