INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hexacopter LED mit RC Empfänger und WS2812B LED
08.11.2014, 21:19
Beitrag #1
Lightbulb Hexacopter LED mit RC Empfänger und WS2812B LED
Hy an alle,

wieder ein kurzes Zwischenprojekt.
Der winter kommt und das Modellbauen geht weiter.
Mein aktuelles Winterprojekt wird ein Vollcarbon Hexakopter mit knapp 100cm Durchmesser sein der 9Kg Gesamtlast abheben wird. Kameragimbal, GPS Positionierung inklusive.

Auch bei Dunkelheit oder Nacht will ich ja wissen wo die Kiste steht.

Da der Hexakopter wie der name schon verrät eine 6-Motorige Drohne wird hab ich mir kurzerhand mal n Packen WS2812B LED´s geordert. das Zeug ist echt nicht grad günstig (mit 2€ pro LED) aber der Programmierung mehrerer LED´s sind keinerlei Grenzen gesetzt.

Im Anhang der neuste Code der momentan grad steht und läuft. Um den Code mit einer RC Anlage zu betreiben fehlt allerdings noch der PulseIn mode (kommt später). Zur zeit is er nur über ein drehpoti bestimmbar.

Es laufen Aktuell 6 verschiedene Leuchtmodi. ;-)

Greez Wampo

Code:
#include <Adafruit_NeoPixel.h>
#define Pixels 5
#define Pin 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixels,Pin,NEO_GRB + NEO_KHZ800);
#define Brightness 3 //Set brightness to 1/10th
#define Full (255/Brightness)

float redStates[Pixels];
float blueStates[Pixels];
float greenStates[Pixels];
float fadeRate = 0.93;

//int ch1;

const int min = 0;      // Lowest reading at analog pin
const int max = 1023; // Highest reading at analog pin

void setup() {
  //pinMode(5, INPUT);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  randomSeed(1234);//Set up random number generator
  for(uint16_t l = 0; l < Pixels; l++) {
  redStates[l] = 0;
  greenStates[l] = 0;
  blueStates[l] = 0;
}
}

void loop() {

//ch1 = pulseIn(5, HIGH, 25000);
// int range = map(ch1, 1000 ,2000 ,0 ,7 );
int sensorReading = analogRead(A0);
int range = map(sensorReading, min, max, 0, 7);
int h = map (sensorReading, 0, 170, 0, 255);

switch (range) {

  case 0:    
     colorWipe(h,1); //LED off and Dimm in Blau
     break;
  case 1:  
      flashrand();
     break;
  case 2:    
     RandomColor(1,50);//50 sets of random colors
     break;
  case 3:  
    RandomWhite(1,50);//50 sets of random grayscale
     break;
  case 4:  
     rainbowCycle(1,4); //durchläufe, geschwindigkeit
     break;
  case 5:  
     positionlight();
     break;
  case 6:  
     CandyCane(2,5,50); //durchläufe, pixelbreite, geschwindigkeit
     break;
  case 7:  

     break;
  }
}

//LED aus
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

void CandyCane  (int sets,int width,int wait) {
  int L;
  for(int j=0;j<(sets*width);j++) {
    for(int i=0;i< strip.numPixels();i++) {
      L=strip.numPixels()-i-1;
      if ( ((i+j) % (width*2) )<width)
        strip.setPixelColor(L,Full,0,0);
      else
        strip.setPixelColor(L,0, Full ,0 );
    };
    strip.show();
    delay(wait);
  };
};

void rainbowCycle(uint8_t sets, uint8_t wait) {
  uint16_t i, j;
  for(j=0; j<256*sets; j++) { //cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(strip.numPixels()-i-1, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

//Create sets of random white or gray pixels
void RandomWhite (int sets, int wait) {
  int V,i,j;
  for (i=0;i<sets;i++) {
    for(j=0;j<strip.numPixels();j++) {
      V=random(Full);
      strip.setPixelColor(j,V,V,V);
    }
    strip.show();
    delay(wait);
  }
};

//Create sets of random colors
void RandomColor (int sets, int wait) {
  int i,j;
  for (i=0;i<sets;i++) {
    for(j=0;j<strip.numPixels();j++) {
      strip.setPixelColor(j,random(255)/Brightness,random(255)/Brightness,random(255)/Brightness);
    }
    strip.show();
    delay(wait);
  }
};

void flashrand () {
if (random(20) == 1) {
uint16_t i = random(Pixels);
if (redStates[i] < 1 && greenStates[i] < 1 && blueStates[i] < 1) {
redStates[i] = random(Full);
greenStates[i] = random(Full);
blueStates[i] = random(Full);
}
}
for(uint16_t l = 0; l < Pixels; l++) {
if (redStates[l] > 1 || greenStates[l] > 1 || blueStates[l] > 1) {
strip.setPixelColor(l, redStates[l], greenStates[l], blueStates[l]);
if (redStates[l] > 1) {
redStates[l] = redStates[l] * fadeRate;
} else {
redStates[l] = 0;
}
if (greenStates[l] > 1) {
greenStates[l] = greenStates[l] * fadeRate;
} else {
greenStates[l] = 0;
}
if (blueStates[l] > 1) {
blueStates[l] = blueStates[l] * fadeRate;
} else {
blueStates[l] = 0;
}
} else {
strip.setPixelColor(l, 0, 0, 0);
}
}
strip.show();
delay(5);
}

void positionlight(){
  strip.setPixelColor(0,0,0, Full);
  strip.setPixelColor(1,Full,0, 0);
  strip.setPixelColor(2,0,Full, 0);
  strip.setPixelColor(3,Full,0, 0);
  strip.setPixelColor(4,0,0, Full);
  strip.show();
  delay(1);
}

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color((WheelPos * 3)/Brightness, (255 - WheelPos * 3)/Brightness, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color((255 - WheelPos * 3)/Brightness, 0, (WheelPos * 3)/Brightness);
  } else {
   WheelPos -= 170;
   return strip.Color(0,(WheelPos * 3)/Brightness, (255 - WheelPos * 3)/Brightness);
  }
}


Angehängte Datei(en) Thumbnail(s)
                   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.12.2014, 09:49
Beitrag #2
RE: Hexacopter LED mit RC Empfänger und WS2812B LED
Hi Wampo,
du schreibst was von 2€/stck. Schau mal hier für meine Projekte habe ich hier schon zweimal 200*/stck bestellt. Lief alles ohne Probleme

http://www.aliexpress.com/item/100x-WS28...52191.html

Gruß
DerDani
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.12.2014, 10:03 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2014 10:04 von Wampo.)
Beitrag #3
RE: Hexacopter LED mit RC Empfänger und WS2812B LED
(02.12.2014 09:49)volvodani schrieb:  Hi Wampo,
du schreibst was von 2€/stck. Schau mal hier für meine Projekte habe ich hier schon zweimal 200*/stck bestellt. Lief alles ohne Probleme

http://www.aliexpress.com/item/100x-WS28...52191.html

Gruß
DerDani

Ja die seite kenn ich, habe aber keine Kreditkarte und paypal geht ja nicht! Aber diw gleichen verwende ich jetzt auch...einfach der hammer die teile!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.12.2014, 11:59
Beitrag #4
RE: Hexacopter LED mit RC Empfänger und WS2812B LED
Die sind extrem die kommen in meine Wordclock (QlockTwo Clone).
Gruß
DerDani
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.12.2014, 01:42
Beitrag #5
RE: Hexacopter LED mit RC Empfänger und WS2812B LED
Sodala, das mit der Spektrum funzt einwandfrei, leichte anpssungen an der Fernsteuerung selber mussten gemacht werden.

Ich wünsche jetzt schon viel Spaß beim nachbau.
Hier ein kurzes Testvideo - - -> https://www.youtube.com/watch?v=3XneP2s_44o

hier der Code dafür....man kann ihn sicherlich noch ausarbeiten, wenn euch was ein/auffällt dann schreibt mir
Code:
#include <Adafruit_NeoPixel.h>
#define Pixels 6
#define Pin 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixels,Pin,NEO_GRB + NEO_KHZ800);
#define Brightness 1 //Set brightness to 1/10th
#define Full (255/Brightness)

float redStates[Pixels];
float blueStates[Pixels];
float greenStates[Pixels];
float Pix[Pixels];
float fadeRate = 0.85;

int ch1;

int wc = 0;

void setup() {
  pinMode(5, INPUT);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  randomSeed(623514);//Set up random number generator
  for(uint16_t l = 0; l < Pixels; l++) {
  redStates[l] = 0;
  greenStates[l] = 0;
  blueStates[l] = 0;
  Pix[6] = 0;
}
}

void loop() {

ch1 = pulseIn(5, HIGH, 22000);
int range = map(ch1, 1000 ,2048 ,0 ,7 );
// int range = map(analogRead(A0), 0, 1000, 0, 8);
int h = map(ch1, 980, 1200, 0, 255);
if( ch1<980){
   h=0;
}

switch (range) {

  case 0:    
     colorWipe(h,2); //LED off and Dimm in Blau
     break;
  case 1:  
      flashrand(3);//flashzyklen
     break;
  case 2:    
     RandomColor(1,50);//50 sets of random colors
     break;
  case 3:  
    RandomWhite(1,50);//50 sets of random grayscale
     break;
  case 4:  
     rainbowCycle(1,4); //durchläufe, geschwindigkeit
     break;
  case 5:  
     positionlight();
     break;
  case 6:
     stepbystep(50); //geschwindigkeit
     break;
  case 7:  
     CandyCane(2,3,50); //durchläufe, pixelbreite, geschwindigkeit
     break;
       return;
  }
}

//LED aus
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

void CandyCane  (int sets,int width,int wait) {
  int L;
  for(int j=0;j<(sets*width);j++) {
    for(int i=0;i< strip.numPixels();i++) {
      L=strip.numPixels()-i-1;
      if ( ((i+j) % (width*2) )<width)
        strip.setPixelColor(L, Full, 0, 0);
      else
        strip.setPixelColor(L, 0 , 0, Full);
    };
    strip.show();
    delay(wait);
  };
};

void rainbowCycle(uint8_t sets, uint8_t wait) {
  uint16_t i, j;
  for(j=0; j<256*sets; j++) { //cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(strip.numPixels()-i-1, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
    }
    strip.show();
    delay(wait);
  }
}

//Create sets of random white or gray pixels
void RandomWhite (int sets, int wait) {
  int V,i,j;
  for (i=0;i<sets;i++) {
    for(j=0;j<strip.numPixels();j++) {
      V=random(Full);
      strip.setPixelColor(j,V,V,V);
    }
    strip.show();
    delay(wait);
  }
};

//Create sets of random colors
void RandomColor (int sets, int wait) {
  int i,j;
  for (i=0;i<sets;i++) {
    for(j=0;j<strip.numPixels();j++) {
      strip.setPixelColor(j,random(255)/Brightness,random(255)/Brightness,random(255)/Brightness);
    }
    strip.show();
    delay(wait);
  }
};

void flashrand (uint8_t f) {
if (random(f) == 1) {
uint16_t i = random(Pixels);
if (redStates[i] < 1 && greenStates[i] < 1 && blueStates[i] < 1) {
redStates[i] = random(Full);
greenStates[i] = random(Full);
blueStates[i] = random(Full);
}
}
for(uint16_t l = 0; l < Pixels; l++) {
if (redStates[l] > 1 || greenStates[l] > 1 || blueStates[l] > 1) {
strip.setPixelColor(l, redStates[l], greenStates[l], blueStates[l]);
if (redStates[l] > 1) {
redStates[l] = redStates[l] * fadeRate;
} else {
redStates[l] = 0;
}
if (greenStates[l] > 1) {
greenStates[l] = greenStates[l] * fadeRate;
} else {
greenStates[l] = 0;
}
if (blueStates[l] > 1) {
blueStates[l] = blueStates[l] * fadeRate;
} else {
blueStates[l] = 0;
}
} else {
strip.setPixelColor(l, 0, 0, 0);
}
}
strip.show();
delay(5);
}

void positionlight(){
  
  for(int x=0; x<2; x++){
  strip.setPixelColor(2,0,Full, 0);
  strip.setPixelColor(3,0,Full, 0);
  strip.show();
  delay(40);
  strip.setPixelColor(2,0,0,0);
  strip.setPixelColor(3,0,0,0);
  strip.show();
  delay(40);
  }
  
  delay(150);
  
  for(int y=0; y<2; y++){
  strip.setPixelColor(0,0,0, Full);
  strip.setPixelColor(1,Full,0, 0);
  strip.setPixelColor(4,Full,0, 0);
  strip.setPixelColor(5,0,0, Full);
  strip.show();
  delay(40);
  strip.setPixelColor(0,0,0,0);
  strip.setPixelColor(1,0,0,0);
  strip.setPixelColor(4,0,0,0);
  strip.setPixelColor(5,0,0,0);  
  strip.show();
  delay(40);
  }

delay(1000);
}

void stepbystep(uint8_t wait){
  int t;
  for (int i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, Wheel(wc));
    t = i - 1;
    if (t < 0) t = strip.numPixels() - 1;
    strip.setPixelColor(t, strip.Color(0, 0, 0));
    strip.show();
    delay(wait);
  }
   wc+=8;
  if (wc>255) wc=0;
}

void flashposlight(){
  int i = 0;
   for(i=0; i<2; i++)
   {
   strip.setPixelColor(0,0,0, Full);
   strip.setPixelColor(1,Full,0, 0);
   strip.setPixelColor(4,Full,0, 0);
   strip.setPixelColor(5,0,0, Full);
   strip.show();
   delay(100);
   }
   delay(500);
   i=0;
   for(int i=0; i<2; i++)
   {
   strip.setPixelColor(2,0,Full, 0);
   strip.setPixelColor(3,0,Full, 0);
   strip.show();
   delay(100);
   }
   }

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  if(WheelPos < 85) {
   return strip.Color((WheelPos * 3)/Brightness, (255 - WheelPos * 3)/Brightness, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return strip.Color((255 - WheelPos * 3)/Brightness, 0, (WheelPos * 3)/Brightness);
  } else {
   WheelPos -= 170;
   return strip.Color(0,(WheelPos * 3)/Brightness, (255 - WheelPos * 3)/Brightness);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.01.2015, 21:11 (Dieser Beitrag wurde zuletzt bearbeitet: 01.01.2015 21:19 von Wampo.)
Beitrag #6
Hexacopter LED mit RC Empfänger und WS2812B LED
Kurzes Update vom ganzen Projekt, mal eben die Kabel und die Steuerung fertig gebaut und probeweiser aufn Boden in Hexaform geklebt.

Ansteuerung läuft sauber und ist Tip Top, am Hexa Copter sollen dann die LED´s unten an die Ausleger ran und über die LED´s werden noch Tischtennisbälle geklebt die vorher halbiert worden sind, damit erhöt sich die Leuchtfläche und es sieht nicht mehr nach nem Punkt aus.

Hier noch ein kurzes DEMO VIDEO dazu:
http://youtu.be/CPr98tIdvRQ

Greez


Angehängte Datei(en) Thumbnail(s)
                                   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2015, 03:53
Beitrag #7
RE: Hexacopter LED mit RC Empfänger und WS2812B LED
Hallo Wampo,
schöne Lichterführung, sieht sicher eindrucksvoll im Dunkeln aus. Hab deinen Code auf die Schnelle nicht gelesen, wollte dennoch fragen ob Du nur die Lichter über den Ardu steuern willst, oder später die gesamte Flugsteuerung inklusive Gyro selber machst? Könnte mir dann vorstellen das die Pulsin Methode zu langsam wird.

Gruß Sven

Nichts auf der Welt ist unnütz, es kann im schlimmsten Fall immer noch als schlechtes Beispiel dienen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.01.2015, 08:00
Beitrag #8
RE: Hexacopter LED mit RC Empfänger und WS2812B LED
Hy Danke, bin auch gespannt wies dann am Nachthimmel wirkt!
Nein der Ardu bzw Mega bleibt rein zur Lichtsteuerung, was ich mir evtl noch vorstell ist ein autonomes überwachungssystem was bei bestimmter lage (die nie erreicht wird im normalfall) den onBoard Fallschirm abfeuert!
Gyro und Flugsteuerung vertrau ich in dem fall keinen Arduino an Big Grin da kommt schon der Naza M V2 zum einsatzWink

Greez Wampo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Mini Pro mit RCSwich und 433MHz Empfänger OLDARDUINO 6 266 03.11.2016 14:43
Letzter Beitrag: hotsystems
  WS2812b Matrix CrazyHawk 9 1.313 31.08.2016 12:58
Letzter Beitrag: Binatone
  433Mhz Fernbedienung Empfänger Haustechno 5 1.988 21.11.2015 17:06
Letzter Beitrag: hotsystems
Big Grin Bluetooth CoronaClock mit WS2812b LED mit App für Android Wampo 7 2.657 27.03.2015 21:55
Letzter Beitrag: Wampo
Lightbulb LED Thermometer über WS2812b LED und Dallas DS18B20 Wampo 2 1.724 15.03.2015 17:45
Letzter Beitrag: Wampo
Lightbulb HC-SR4 Ultraschall Abstands Ampel mit WS2812b Pixel LED´s Wampo 0 1.714 14.03.2015 18:40
Letzter Beitrag: Wampo
  vorbereitung für spectrum analyzer speziell ws2812b nighty2006 16 4.435 28.02.2015 13:29
Letzter Beitrag: nighty2006
  IR- Empfänger für RGBWW LEDs - Feinschliff MaHa1976 14 2.784 27.12.2014 18:37
Letzter Beitrag: MaHa1976
  RC-Empfänger PWM-Signale für Servoansteuerung einlesen do1xxy 2 4.150 15.07.2014 21:32
Letzter Beitrag: do1xxy

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste