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
WB2812B Projekt
20.07.2016, 15:31 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2016 15:51 von CrazyHawk.)
Beitrag #1
Rainbow WB2812B Projekt
Hallo Arduino User,
bin noch ziemlich kurz mit dem Arduino zu Gange und habe da ein kleines Projekt.
Ich habe eine 4 Meter LED Stripe an der Decke und die Ansteuerung mit der Adafruit Pixellibrary klappt auch schon ganz gut. Nur habe ich noch eine zweite Variante wo die LED`s als VU Meter im Takt der Musik laufen. Jetzt möchte ich per Taster wählen, welches der beiden "Programme" laufen sollen. Habe da zwei Beispiel Codes versucht zusammen zu bauen. Bekomme da aber immer eine Fehlermeldung, dass eine Funktion nicht angegeben ist: "'colorWipe' was not declared in this scope".
Ohne die Tasterabfrage klappt die Funktion aber. Sad
Ist für Euch Profies bestimmt eine Kleinigkeit den Fehler im Code zu finden.
Würde mich freuen, wenn mir einer helfen könnte.
Hier der Code:

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif

#define PIN 6

int x;
int y;
int z;
const int tasterPin = 2; // Taster an Pin 2 angeschlossen
int lichtmodus = 0; // Variable für die verschiedenen festgelegten Farben
int tasterStatus = LOW; // Variable zu speichern des Tasterstatus

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, PIN, NEO_GRB + NEO_KHZ800);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel. Avoid connecting
// on a live circuit...if you must, connect GND first.

void setup()
{
pinMode(tasterPin, INPUT); // Setzt den TasterPin als Eingang
strip.begin();
strip.setBrightness(100);
strip.show(); // Initialize all pixels to 'off'

}

void loop() {

// Abfrage ob der Taster gedrückt ist
tasterStatus = digitalRead(tasterPin);

// Wenn Taster gedrückt ist...
if (tasterStatus == HIGH)
{
lichtmodus++; // Lichtmodus +1
delay(300); // 300ms warten
}


//+++++++++++++++ LEUCHTPROGRAMME +++++++++++++++++

// Modus 0 = Licht 1
if (lichtmodus == 0)
{
for (int t=1;t<6;t++)
{
x=random(1,255);
y=random(1,255);
z=random(1,255);
colorWipe(strip.Color(x, y, z), 50);

x=random(1,255);
y=random(1,255);
z=random(1,255);
colorWipe2(strip.Color(x, y, z), 50);
}
}

// Modus 1 = 2
else if (lichtmodus == 1)
{
for (int t=1;t<6;t++)
{
x=random(1,255);
y=random(1,255);
z=random(1,255);
theaterChase(strip.Color(x, y, z), 100);

}
}
}


// Anzahl der Leuchtmodi auf 2 begrenzen. (0 bis 1)
else
{
lichtmodus = 0;
}
}

// void loop() {
// Some example procedures showing how to display to the pixels:
// for (int t=1;t<6;t++)
// {
// x=random(1,255);
// y=random(1,255);
// z=random(1,255);
// colorWipe(strip.Color(x, y, z), 50);
// 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);

// x=random(1,255);
// y=random(1,255);
// z=random(1,255);
// colorWipe2(strip.Color(x, y, z), 50);
// // Fill the dots one after the other with a color
// void colorWipe2(uint32_t c, uint8_t wait) {
// for(uint16_t i=0; i<strip.numPixels(); i++) {
// strip.setPixelColor(8-i, c);
// strip.show();

// delay(wait);
// }
// }
// for (int t=1;t<6;t++)
// {
// x=random(1,255);
// y=random(1,255);
// z=random(1,255);
// theaterChase(strip.Color(x, y, z), 100);
// }

// rainbow(10);
// rainbowCycle(10);
// theaterChaseRainbow(30);
// }

// Fill the dots one after the other with a color
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);
}
}

// Fill the dots one after the other with a color
void colorWipe2(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(8-i, c);
strip.show();
delay(wait);
}
}

void rainbow(uint8_t wait) {
uint16_t i, j;

for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 255));
}
strip.show();
delay(wait);
}
}

// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
uint16_t i, j;

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

//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
for (int j=0; j<10; j++) { //do 10 cycles of chasing
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, c); //turn every third pixel on
}
strip.show();

delay(wait);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}

//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
for (int j=0; j < 256; j++) { // cycle all 256 colors in the wheel
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, Wheel( (i+j) % 255)); //turn every third pixel on
}
strip.show();

delay(wait);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}
}
}
}

// 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) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Noch eine Info: Da ist nicht der Code mit dem VU Meter drin - nur der Adafruit Beispiel Code.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.07.2016, 16:12
Beitrag #2
RE: WB2812B Projekt
Ist damit gemeint, dass ich mit Fritzing meinen Schaltplan liefern soll???
Oder was sind CodeTags? Sorry bin wie gesagt noch Frischling auf dem Gebiet.
Der Code für die Ansteuerung der LED`s ist der Beispiel Code von ADAFruit mit der Ansteuerung über Pin 6 am Arduino. Hängt dann nur noch ein Taster am Pin 2.
Wenn es nicht anders geht werde ich den Schaltplan mal in Fritzing eingeben.
Kann aber was dauern - ist ja auch das erste Mal. ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.07.2016, 16:16
Beitrag #3
RE: WB2812B Projekt
Ok, wie mein "Vorredner" schon andeutet, den Sketch formatiert in Code-Tags setzen. So ist er schwer zu lesen.

Dann solltest du die bestehende Leuchtfunktion in eine eigene Funktion schreiben und die neue "VU-Funktion" ebenfalls in eine eigene Funktion setzen.

Dann kannst du diese über eine If-Anweisung per Taster aufrufen.

Du brauchst nur eine Variable in der gespeichert wird, welcher Zustand gerade eingestellt ist. Diesen Zustand änderst du auch bei Tastenabfrage.
Du must nur darauf achten, die Variablen global zu deklarieren, damit diese in allen Funktionen auch erkannt werden. Anders tritt der von dir beschriebene Fehler auf.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.07.2016, 16:36
Beitrag #4
RE: WB2812B Projekt
Puh,
da muss ich erst noch ein paar Grundlagen schaffen: Ein Sketch in Code-Tags setzen - hoffe das steht auf der Fritzing Seite wie das geht.
Und wie setzte ich eine eigene Funktion? Von der Tastatur Abfrage über eine globale Variable ganz zu schweigen.
Hatte mir das etwas leicher vorgstellt. Aber Danke für die schnellen Antworten.
Werde mich dann erstmal mit Fritzing befassen und mich dann wieder melden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.07.2016, 17:01
Beitrag #5
RE: WB2812B Projekt
Hey!

Also wenn nicht einmal der Code kompilieren geht warum wollt ihr den Schaltplan. Einzeln funktionierts ja. Versteh ich den Sinn nicht Huh

Nun zum eigentlichen Problem:
Ich hab jetzt kurz den Code in Arduino IDE gespielt, GANZEN Fehlercode durchsucht und es stand, dass "unqualified-id before else" ist. Kurz mal hinschauen zeigt, dass eine Klammer zu früh gesetzt ist:
Zeile 83, bevor
Code:
// ... HIER EINE "}"-KLAMMER ZU VIEL

// Anzahl der Leuchtmodi auf 2 begrenzen. (0 bis 1)
else

//...
Dann waren keine Fehlermeldungen mehr vorhanden.
In Zukunft: ganzen Fehlercode posten oder noch besser davor die Fehlermeldung verstehen, es stehen immer Zeilen dabei wo der Fehler liegt, es steht eine Beschreibung dabei was nicht stimmt.

Mfg Scheams
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.07.2016, 17:15
Beitrag #6
RE: WB2812B Projekt
Hey!

Um zu erkennen das im Code ein Fehler ist, muss man nur den ersten Absatz vom Topic lesen. Das es keine Probleme von der Hardwareseite aus gibt (außer evtl. Button) kann man im Satz nach dem Absatz lesen.
Wozu dann nach einem Schaltplan fragen wenn noch nicht mal das Kompilieren funktioniert? Das Software-Problem wird durch einen Schaltplan warscheinlich erstmal nicht gelöst?

mfg Scheams
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.07.2016, 17:30
Beitrag #7
RE: WB2812B Projekt
Hallo Scheams,
Du bist ein Held!!! Das wars!!! Jetzt kommt auf jeden Fall keine Fehlermeldung mehr und das erste "Muster" läuft durch, bis ich den Taster drücke. Dann startet das zweite "Muster". Komme nur nicht wieder zum ersten Muster zurück?!?!?
Aber hautpsache es läuft jetzt erstmal so.........

Vielen Dank für die Hilfe
(war ja zum Glück nur eine kleine Klammer Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.07.2016, 18:01
Beitrag #8
RE: WB2812B Projekt
(20.07.2016 16:36)CrazyHawk schrieb:  Puh,
da muss ich erst noch ein paar Grundlagen schaffen: Ein Sketch in Code-Tags setzen - hoffe das steht auf der Fritzing Seite wie das geht.
Und wie setzte ich eine eigene Funktion? Von der Tastatur Abfrage über eine globale Variable ganz zu schweigen.
Hatte mir das etwas leicher vorgstellt. Aber Danke für die schnellen Antworten.
Werde mich dann erstmal mit Fritzing befassen und mich dann wieder melden.

Es ist zwar toll, dass du es dank Scheams zum Laufen bekommen hast, aber dennoch kannst du es uns etwas leichter machen. Code-Tags in diesem Forum hat nichts mit Fritzing zu tun, sondern einfach nur eine Verbesserung der Darstellung deines Sketches auf dieser Seite. In vielen Fällen ist der Code einfach schlecht lesbar, ohne diese Formatierung.

Code-Tags = Schaltfläche #.
Das kannst du im Forum nachlesen oder uns fragen.

Alles andere sind Basics des Arduino, die du auch unbedingt lernen solltest.
Aber Glückwunsch das du es hin bekommen hast.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Roboter (Projekt) Beginner linux248 1 315 30.11.2016 12:06
Letzter Beitrag: Thie
  Arduino Projekt (Einkauf/Beratung) pekinese 2 211 21.11.2016 13:44
Letzter Beitrag: pekinese
  Cam Slider Projekt, die ersten Schritte T8T 3 1.151 30.04.2016 16:26
Letzter Beitrag: SkobyMobil
  Projekt: Türsensor _Aviciii_ 9 2.429 05.04.2016 18:50
Letzter Beitrag: hotsystems
  Erstes Projekt Claus_M 8 1.961 08.01.2016 07:36
Letzter Beitrag: Claus_M
  NwT-Projekt Kursstufe1 Jonas Halbgewachs 6 2.291 26.10.2015 10:47
Letzter Beitrag: Binatone
  [Projekt] Reifeschrank Klimasteuerung sleipneer 116 17.703 18.10.2015 20:21
Letzter Beitrag: sleipneer
  Anfänger mit großem Bau Projekt (Useless Box 3.0) Wambo 7 4.132 02.10.2015 16:36
Letzter Beitrag: Klaus(i)
  Ardunio Anfänger mit vielen Fragen zu einem Design Projekt (mit Bildern) farbexot 0 1.530 01.08.2015 13:03
Letzter Beitrag: farbexot
  1. Arduino Projekt: Riesengrill Wotan 2 2.318 24.06.2015 14:45
Letzter Beitrag: Wotan

Gehe zu:


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