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
vorbereitung für spectrum analyzer speziell ws2812b
28.02.2015, 13:29 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2015 20:16 von nighty2006.)
Beitrag #17
RE: vorbereitung für spectrum analyzer speziell ws2812b
Hi, ich mal wieder...

hab hier mal den "Beta" Code ausprobiert..ich finde nur den Fehler nicht!

Er aktiviert pro Band (insgesamt sind es 7 Bänder a 15 Leds) immer nur 6-7 Leds am Stück.

sprich: in einem Strip nimmt er die ersten 6-7 und fängt in demselben Strip dort wieder an- die nächsten 6-7.. kann mir jemand nen Tipp geben?

/*
msgeq7 ws2812 led equalizer
*/
#include <Adafruit_NeoPixel.h>
//#include "WS2812_Definitions.h" //add this if you want

#define LED_PIN 6 //pin for led strip
#define LED_COUNT 49 //# of leds in strip
#define LED_IN_BAND 7 //# of leds per band
#define STROBE_PIN 2 //Strobe pin for msgeq7
#define RESET_PIN 3 //Reset pin for msgeq7
#define ANLG_IN_PIN A2 //analog input pin for msgeq7
#define BRIGHT_PIN A1 //pin for brightness potentiometer
#define COLOR_PIN A0 //pin for color potentiometer

//setup strip values
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);

/*call out pins for msgeq7*/
int analogPin = ANLG_IN_PIN; //output pin to read bands for eq7
int strobePin = STROBE_PIN; //strobe pin for eq7
int resetPin = RESET_PIN; //reset pin for eq7
int bandValue[7]; // to hold a2d values
int bandMap[7]; //hold mapped values for the band
long lightState[7][7]; //multidim array to hold light color use later or struct for lights


/*color and brightness */
int brightPin = BRIGHT_PIN; //pot pin
int bright = 0; //variable to store value for brightness
int brightVal = 0; //brightness value

int colorPin = COLOR_PIN; //pot for color adj
int color = 0; //variable to store the pot value for color
int colorMap = 0; //temp value to store mapped color value
long adjColor[8] = {0xFFFFFF, 0xFF1493, 0xFFFF00, 0x556B2F, 0x48D1CC, 0xFF6347, 0xFF4500, 0x008000};
long colorVal = 0; //value for color of led strip
int ledsInBand = LED_IN_BAND; //leds in band, in defines



void setup()
{
Serial.begin(9600);
//Serial.print("\eSP F"); // tell to use 7-bit control codes
//Serial.print("\e[?25l"); // hide cursor
//Serial.print("\e[?12l"); // disable cursor highlighting

strip.begin(); // LED strip setup
strip.show(); // Initialize all pixels to 'off'

//initialize the msgeq7
pinMode(analogPin, INPUT);
pinMode(strobePin, OUTPUT);
pinMode(resetPin, OUTPUT);
analogReference(DEFAULT);
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, HIGH);
}

void loop() {
//read pots for led color and brightness
colorbright();
//read the msgeq7
readMSGEQ7();
//put the eq values into array
//fillLights();

for(int band=0; band<7; band++) {
for (int led=0; led<ledsInBand; led++) {
lightState[band][led] = (led<=bandMap[band])?colorVal:0;
}
}

for(int band=0; band<7; band++) {
for (int led=0; led<ledsInBand; led++) {
strip.setPixelColor(band*7+led, lightState[band][led]);
}
}

for (int i=0;i<7;i++)
{
Serial.print(bandMap[i]);
Serial.print(" ");
}
Serial.println();

strip.setBrightness(brightVal);
strip.show();
}


/*
Function to set strip color and brightness
*/

void colorbright() {
bright = analogRead(brightPin); //read pot to get brightness for strip
brightVal = map(bright, 0, 1023, 0, 255); //map led brightness value for strip

color = analogRead(colorPin); //read pin to find color value from pot
colorMap = map(color, 0, 1023, 0, 7); //map pin value to # of available colors set in adjColor
colorVal = adjColor[colorMap]; //set color to list of colors above
}


/*
Function to read the msgeq7
*/
void readMSGEQ7() {
digitalWrite(resetPin, HIGH);
digitalWrite(resetPin, LOW);
for(int i=0; i<7; i++)
{
digitalWrite(strobePin,LOW); // strobe pin on the shield - kicks the IC up to the next band
delayMicroseconds(30); //
bandValue[i] = analogRead(analogPin); // store left band reading
bandMap[i] = map(bandValue[i], 0, 900, 0, 6); //map the band values to light positions
//right[band] = analogRead(1); // implement later
digitalWrite(strobePin,HIGH);
}
}

editiere ich mit diesen Daten
original: Meine Daten:
#define LED_COUNT 49 //# of leds in strip #define LED_COUNT 105 //# of leds in strip
#define LED_IN_BAND 7 //# of leds per band #define LED_IN_BAND 15 //# of leds per band

blinkt im ersten strip nur die unterste Led...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  WS2812b Matrix CrazyHawk 9 1.334 31.08.2016 12:58
Letzter Beitrag: Binatone
Big Grin Bluetooth CoronaClock mit WS2812b LED mit App für Android Wampo 7 2.661 27.03.2015 21:55
Letzter Beitrag: Wampo
Lightbulb LED Thermometer über WS2812b LED und Dallas DS18B20 Wampo 2 1.734 15.03.2015 17:45
Letzter Beitrag: Wampo
Lightbulb HC-SR4 Ultraschall Abstands Ampel mit WS2812b Pixel LED´s Wampo 0 1.736 14.03.2015 18:40
Letzter Beitrag: Wampo
Lightbulb Hexacopter LED mit RC Empfänger und WS2812B LED Wampo 9 3.378 02.01.2015 14:17
Letzter Beitrag: Wampo

Gehe zu:


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