Go Down

Topic: Neopixel (Read 93 times) previous topic - next topic

Merzomann

Hallo Zusammen,

mit Code unten kann ich über eine App meine Neopixel WS2812b steuern. Wenn ich über die App "1" schicke dann ist die Lichterkette aus und bei "2" ist sie rot. Funktioniert so weit perfekt!

Den Abschnitt für die Farben würde ich jetzt gerne über eine Veränderung von Variablen programmieren.  Die Variablen sind hier "eins", "zwei" und "drei". Dadurch möchte ich den Code verkleinern. In etwa so:

Code: [Select]
if (data == "1") {
    status = 0;
    data = "";
    Serial.println("Aus");
    pixels.setPixelColor(0, pixels.Color(eins, zwei, drei));
    pixels.setPixelColor(1, pixels.Color(eins, zwei, drei));
    pixels.setPixelColor(2, pixels.Color(eins, zwei, drei));



Damit ich die folgenden 2 Abschnitte nur 1mal habe und sich nur die Variablen ändern.


1. Abschnitt:

Code: [Select]
if (data == "1") {
    status = 0;
    data = "";
    Serial.println("Aus");
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));
    pixels.setPixelColor(1, pixels.Color(0, 0, 0));
    pixels.setPixelColor(2, pixels.Color(0, 0, 0));




2. Abschnitt:
Code: [Select]
else if (data == "2") {
    status = 0;
    data = "";
    Serial.println("Rot");
    pixels.setPixelColor(0, pixels.Color(255, 0, 0));
    pixels.setPixelColor(1, pixels.Color(255, 0, 0));
    pixels.setPixelColor(2, pixels.Color(255, 0, 0));



Der komplette Code ungekürzt:

Code: [Select]
#include <ESP8266WiFi.h>
#include <Adafruit_NeoPixel.h>

#define PIN        2
#define NUMPIXELS  22

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);


//ROUTER VERBINDUNG
/* define port */
WiFiClient client;
WiFiServer server(80);

// INTERNET Einstellungen
const char* ssid = "o2";
const char* password = "password";
IPAddress ip(192, 168, 1, 10); //set IP
IPAddress gateway(172, 18, 67, 230); //set getteway
IPAddress subnet(255, 255, 255, 0);

// Empfangene Daten von App
String  data = "";



void setup()
{
  pixels.begin();
  //ROUTER VERBINDUNG
  Serial.begin(115200);
  delay(10);
  // Verbindung zum Netzwerk
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid, password);
  if (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  server.begin();
  Serial.println("Server started");
  Serial.print("Type this address in URL to connect: ");
  Serial.print("http://");
  Serial.println(ip);
  Serial.println("/");
}

void loop()
{

  client = server.available();

  if (client) data = checkClient ();

  // Eingehende Daten von App
  if (data == "1") {
    status = 0;
    data = "";
    Serial.println("Aus");
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));
    pixels.setPixelColor(1, pixels.Color(0, 0, 0));
    pixels.setPixelColor(2, pixels.Color(0, 0, 0));
    pixels.setPixelColor(3, pixels.Color(0, 0, 0));
    pixels.setPixelColor(4, pixels.Color(0, 0, 0));
    pixels.setPixelColor(5, pixels.Color(0, 0, 0));
    pixels.setPixelColor(6, pixels.Color(0, 0, 0));
    pixels.setPixelColor(7, pixels.Color(0, 0, 0));
    pixels.setPixelColor(8, pixels.Color(0, 0, 0));
    pixels.setPixelColor(9, pixels.Color(0, 0, 0));
    pixels.setPixelColor(10, pixels.Color(0, 0, 0));
    pixels.setPixelColor(11, pixels.Color(0, 0, 0));
    pixels.setPixelColor(12, pixels.Color(0, 0, 0));
    pixels.setPixelColor(13, pixels.Color(0, 0, 0));
    pixels.setPixelColor(14, pixels.Color(0, 0, 0));
    pixels.setPixelColor(15, pixels.Color(0, 0, 0));
    pixels.setPixelColor(16, pixels.Color(0, 0, 0));
    pixels.setPixelColor(17, pixels.Color(0, 0, 0));
    pixels.setPixelColor(18, pixels.Color(0, 0, 0));
    pixels.setPixelColor(19, pixels.Color(0, 0, 0));
    pixels.setPixelColor(20, pixels.Color(0, 0, 0));
    pixels.setPixelColor(21, pixels.Color(0, 0, 0));
    //usw
    pixels.show();
  }
  else if (data == "2") {
    status = 0;
    data = "";
    Serial.println("Rot");
    pixels.setPixelColor(0, pixels.Color(255, 0, 0));
    pixels.setPixelColor(1, pixels.Color(255, 0, 0));
    pixels.setPixelColor(2, pixels.Color(255, 0, 0));
    pixels.setPixelColor(3, pixels.Color(255, 0, 0));
    pixels.setPixelColor(4, pixels.Color(255, 0, 0));
    pixels.setPixelColor(5, pixels.Color(255, 0, 0));
    pixels.setPixelColor(6, pixels.Color(255, 0, 0));
    pixels.setPixelColor(7, pixels.Color(255, 0, 0));
    pixels.setPixelColor(8, pixels.Color(255, 0, 0));
    pixels.setPixelColor(9, pixels.Color(255, 0, 0));
    pixels.setPixelColor(10, pixels.Color(255, 0, 0));
    pixels.setPixelColor(11, pixels.Color(255, 0, 0));
    pixels.setPixelColor(12, pixels.Color(255, 0, 0));
    pixels.setPixelColor(13, pixels.Color(255, 0, 0));
    pixels.setPixelColor(14, pixels.Color(255, 0, 0));
    pixels.setPixelColor(15, pixels.Color(255, 0, 0));
    pixels.setPixelColor(16, pixels.Color(255, 0, 0));
    pixels.setPixelColor(17, pixels.Color(255, 0, 0));
    pixels.setPixelColor(18, pixels.Color(255, 0, 0));
    pixels.setPixelColor(19, pixels.Color(255, 0, 0));
    pixels.setPixelColor(20, pixels.Color(255, 0, 0));
    pixels.setPixelColor(21, pixels.Color(255, 0, 0));
    pixels.show();
  }
}

//Daten von der App
String checkClient (void)
{
  if (!client.available()) delay(1);
  String request = client.readStringUntil('\r');
  request.remove(0, 5);
  request.remove(request.length() - 9, 9);
  return request;
}


Über andere Lösungsvorschläge bin ich auch dankbar.

Gruß,
Merzo

noiasca

#1
Aug 19, 2019, 10:33 am Last Edit: Aug 19, 2019, 10:46 am by noiasca
sorry, eins zwei drei ist für so eine variable aber schon eigenartig

pixels.setPixelColor(0, pixels.Color(eins, zwei, drei));

nenne, sie doch so, was sie darstellen, nämlich rot, gruen, blau

Code: [Select]

pixels.setPixelColor(0, pixels.Color(rot, gruen, blau));


im Prinzip musst du jetzt nur gedanklich trennen:

Welchen Befehl bekommst übers web?
1
2
3

und abhängig von dem setzt du deine rot/gruen/blau Werte und erst dann setzt du deine Neopixel

Code: [Select]

else if (data == "2") {
   rot = 255;
   gruen = 0;
   blau = 0;
   ...
   pixels.setPixelColor(0, pixels.Color(rot, gruen, blau));


außerdem würde ich die ganzen setPixel noch in eine for schleife packen und nur einmal hinschreiben:

Code: [Select]

for(byte i = 0; i <NUMPIXELS; i++)
{
  pixels.setPixelColor(i, pixels.Color(rot, gruen, blau));
}


edit: dein Code kompiliert nicht (status?)

edit2: ungeprüft aber kompiliert. schön ist es immer noch nicht. Ein etwas anderer Ansatz, keine Zwischenvariablen, sondern eine Funktion der man dann die Farben übergibt:
Code: [Select]

#include <ESP8266WiFi.h>
#include <Adafruit_NeoPixel.h>

#define PIN        2
#define NUMPIXELS  22

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//ROUTER VERBINDUNG
/* define port */
WiFiClient client;
WiFiServer server(80);

// INTERNET Einstellungen
const char* ssid = "o2";
const char* password = "password";
IPAddress ip(192, 168, 1, 10); //set IP
IPAddress gateway(172, 18, 67, 230); //set getteway
IPAddress subnet(255, 255, 255, 0);

// Empfangene Daten von App
String  data = "";

void setup()
{
  pixels.begin();
  //ROUTER VERBINDUNG
  Serial.begin(115200);
  delay(10);
  // Verbindung zum Netzwerk
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid, password);
  if (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  server.begin();
  Serial.println("Server started");
  Serial.print("Type this address in URL to connect: ");
  Serial.print("http://");
  Serial.println(ip);
  Serial.println("/");
}

void loop()
{

  client = server.available();

  if (client) data = checkClient ();

  // Eingehende Daten von App
  if (data == "1") {
    //status = 0;
    data = "";
    Serial.println("Aus");
    setColorAll(0, 0, 0);
    pixels.show();
  }
  else if (data == "2") {
    //status = 0;
    data = "";
    Serial.println("Rot");
    setColorAll(255, 0, 0);
    pixels.show();
  }
}

//Daten von der App
String checkClient (void)
{
  if (!client.available()) delay(1);
  String request = client.readStringUntil('\r');
  request.remove(0, 5);
  request.remove(request.length() - 9, 9);
  return request;
}

void setColorAll(byte red, byte green, byte blue)
{
  for (byte i = 0; i < NUMPIXELS; i++)
  {
    pixels.setPixelColor(i, pixels.Color(red, green, blue));
  }
}
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

Merzomann

Vielen Dank noiasca,

dein Vorschlag funktioniert perfekt!

Allerdings möchte ich gerne den Farbwechsel in meiner Textuhr einbauen. Die Textuhr lässt sich momentan über 2 Pushbuttons einstellen. Die Uhrzeit wird zum Einstellen in einem OLED-Display angezeigt. Mit einem dritten Pushbutton kann man die Farbe wechseln. Außerdem kann man die Farbe über eine App wechseln. Der Uhrzeit-Code (nicht komplett, da zu groß) für die Ansteuerung der LED sieht so aus (Vor deiner Anmerkung waren red, green, blue Zahlen):

Code: [Select]
//Textuhr
void uhrzeit () {

  int zeit = minute;
  if (0 <= zeit && zeit <= 59)
  {
    pixels.setPixelColor(10, pixels.Color(red, green, blue));
    pixels.setPixelColor(12, pixels.Color(red, green, blue));
    pixels.setPixelColor(32, pixels.Color(red, green, blue));
    pixels.setPixelColor(51, pixels.Color(red, green, blue));
    pixels.setPixelColor(52, pixels.Color(red, green, blue));
    pixels.setPixelColor(71, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(10, pixels.Color(0, 0, 0));
    pixels.setPixelColor(12, pixels.Color(0, 0, 0));
    pixels.setPixelColor(32, pixels.Color(0, 0, 0));
    pixels.setPixelColor(51, pixels.Color(0, 0, 0));
    pixels.setPixelColor(52, pixels.Color(0, 0, 0));
    pixels.setPixelColor(71, pixels.Color(0, 0, 0));
    pixels.show();
  }
  //STUNDEN___STUNDEN____STUNDEN____STUNDEN___STUNDEN___STUNDEN______________________
  // SONDERZEICHEN bei Stunden____________________________
  //"S" bei SECHSE und OIS ___________
  int zeit50 = hour * 100 + minute;
  if (1215 <= zeit50 && zeit50 < 1315 || 15 <= zeit50 && zeit50 < 115 || 1715 <= zeit50 && zeit50 < 1815 || 515 <= zeit50 && zeit50 < 615)
  {
    pixels.setPixelColor(26, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(26, pixels.Color(0, 0, 0));
    pixels.show();
  }
  // Erstes "E" bei SECHSE und ELFE __________
  int zeit51 = hour * 100 + minute;
  if (1015 <= zeit51 && zeit51 < 1115 || 2215 <= zeit51 && zeit51 < 2315 || 1715 <= zeit51 && zeit51 < 1815 || 515 <= zeit51 && zeit51 < 615)
  {
    pixels.setPixelColor(77, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(77, pixels.Color(0, 0, 0));
    pixels.show();
  }
  //"NE" bei NEUNE und ZEHNE
  int zeit52 = hour * 100 + minute;
  if (2015 <= zeit52 && zeit52 < 2215 || 815 <= zeit52 && zeit52 < 1015)
  {
    pixels.setPixelColor(40, pixels.Color(red, green, blue));
    pixels.setPixelColor(43, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(40, pixels.Color(0, 0, 0));
    pixels.setPixelColor(43, pixels.Color(0, 0, 0));
    pixels.show();
  }
  //"OIS" von 00:15 bis 01:15 Uhr und 12:15 bis 13:15 Uhr an _________
  int zeit18 = hour * 100 + minute;
  if (1215 <= zeit18 && zeit18 < 1315 || 15 <= zeit18 && zeit18 < 115)
  {
    pixels.setPixelColor(5, pixels.Color(red, green, blue));
    pixels.setPixelColor(17, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(5, pixels.Color(0, 0, 0));
    pixels.setPixelColor(17, pixels.Color(0, 0, 0));
    pixels.show();
  }
  //"ZWOI" von 01:15 bis 02:15 Uhr und 13:15 bis 14:15 Uhr an ________
  int zeit19 = hour * 100 + minute;
  if (1315 <= zeit19 && zeit19 < 1415 || 115 <= zeit19 && zeit19 < 215)
  {
    pixels.setPixelColor(4, pixels.Color(red, green, blue));
    pixels.setPixelColor(18, pixels.Color(red, green, blue));
    pixels.setPixelColor(25, pixels.Color(red, green, blue));
    pixels.setPixelColor(38, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(4, pixels.Color(0, 0, 0));
    pixels.setPixelColor(18, pixels.Color(0, 0, 0));
    pixels.setPixelColor(25, pixels.Color(0, 0, 0));
    pixels.setPixelColor(38, pixels.Color(0, 0, 0));
    pixels.show();
  }
  //"DREIE" von 02:15 bis 03:15 Uhr und 14:15 bis 15:15 Uhr an _______
  int zeit20 = hour * 100 + minute;
  if (1415 <= zeit20 && zeit20 < 1515 || 215 <= zeit20 && zeit20 < 315)
  {
    pixels.setPixelColor(3, pixels.Color(red, green, blue));
    pixels.setPixelColor(19, pixels.Color(red, green, blue));
    pixels.setPixelColor(24, pixels.Color(red, green, blue));
    pixels.setPixelColor(39, pixels.Color(red, green, blue));
    pixels.setPixelColor(44, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(3, pixels.Color(0, 0, 0));
    pixels.setPixelColor(19, pixels.Color(0, 0, 0));
    pixels.setPixelColor(24, pixels.Color(0, 0, 0));
    pixels.setPixelColor(39, pixels.Color(0, 0, 0));
    pixels.setPixelColor(44, pixels.Color(0, 0, 0));
    pixels.show();
  }
  //"VIERE" von 03:15 bis 04:15 Uhr und 15:15 bis 16:15 Uhr an _______
  int zeit21 = hour * 100 + minute;
  if (1515 <= zeit21 && zeit21 < 1615 || 315 <= zeit21 && zeit21 < 415)
  {
    pixels.setPixelColor(62, pixels.Color(red, green, blue));
    pixels.setPixelColor(81, pixels.Color(red, green, blue));
    pixels.setPixelColor(82, pixels.Color(red, green, blue));
    pixels.setPixelColor(101, pixels.Color(red, green, blue));
    pixels.setPixelColor(103, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(62, pixels.Color(0, 0, 0));
    pixels.setPixelColor(81, pixels.Color(0, 0, 0));
    pixels.setPixelColor(82, pixels.Color(0, 0, 0));
    pixels.setPixelColor(101, pixels.Color(0, 0, 0));
    pixels.setPixelColor(103, pixels.Color(0, 0, 0));
    pixels.show();
  }
//usw.



Über das Drücken eines Pushbuttons sollen die Farben wechseln, oder durch das Signal (1, 2 oder g) der App.

Dieser Teil sieht so aus:

Code: [Select]
tasterStatus = digitalRead(tasterPin);

  //Wenn Taster gedrückt ist...
  if (tasterStatus == HIGH)
  {
    lichtmodus++;
    delay(300);
  }
  if (lichtmodus == 0) {
    // play();
    delay(2000);
    lichtmodus++;
    digitalWrite(15, LOW);
    goto zeitmodus;
  }
  else if (lichtmodus == 1) {
zeitmodus:
    setColorAll(255, 255, 255);
    uhrzeit();
    digitalWrite(15, LOW);
  }
  else if (lichtmodus == 2) {
    setColorAll(0, 255, 0);
    uhrzeit();
    digitalWrite(15, LOW);
  }
  else if (lichtmodus == 3) {
    setColorAll(0, 0, 255);
    uhrzeit();
    digitalWrite(15, LOW);
  }
  else if (lichtmodus == 4) {
    digitalWrite(15, HIGH);
    //play2();
    delay(1500);
    lichtmodus++;
    goto appmode;
  }
  else if (lichtmodus == 5) {
appmode:
    digitalWrite(15, HIGH);
    delay(500);
    digitalWrite(15, LOW);
    delay(500);
  }

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


  //Modus 0 = Licht weiss _________________________________________________________________
  if (data == "1" && lichtmodus == 5 ) {
    setColorAll(255, 255, 255);
    uhrzeit();
    // play3();
  }

  //Modus 1 = blau
  else if (data == "2" && lichtmodus == 5 )
  {
    setColorAll(0, 0, 255);
    uhrzeit();
    // play4();
  }

  //Modus 1 = Grün_________________
  else if (data == "g" && lichtmodus == 5 )
  {
    setColorAll(0, 255, 0);
    uhrzeit();
    //play5();
  }

  delay(800);                                    // Wait 800ms

}





Leider funktioniert so der Farbwechsel nicht. Ich versuch später mal den kompletten Code zu schicken.

Gruß,
Merzo

noiasca

naja dann nimmst halt globale byte variablen red green blue die du über 1,2,g mit entsprechenden Werten  befüllst. Verstehe momentan nicht, was da für dich die Schwierigkeit ist.
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

Merzomann

Momentan sieht der Code so aus. Habe ihn auf das wesentliche gekürzt.  Funktioniert aber nicht! Wie mache ich das mit den globalen Variablen?

Code: [Select]
byte red;
byte green;
byte blue;


//hab hier zur Uebersicht gekuerzt





void loop()
{
  /* If the server available, run the "checkClient" function */
  client = server.available();
  //if (!client) return;
  //data = checkClient ();
  if (client) data = checkClient ();
  {




   //hier auch gekuerzt


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

  //Wenn Taster gedrückt ist...
  if (tasterStatus == HIGH)
  {
    lichtmodus++;
    delay(300);
  }
  if (lichtmodus == 0) {
    play();
    delay(2000);
    lichtmodus++;
    digitalWrite(15, LOW);
    goto zeitmodus;
  }
  else if (lichtmodus == 1) {
zeitmodus:
    byte red = 255;
    byte green = 255;
    byte blue = 255;
    uhrzeit();
    digitalWrite(15, LOW);
  }
  else if (lichtmodus == 2) {
    byte red = 0;
    byte green = 255;
    byte blue = 0;
    uhrzeit();
    digitalWrite(15, LOW);
  }
  else if (lichtmodus == 3) {
    byte red = 0;
    byte green = 0;
    byte blue = 255;
    uhrzeit();
    digitalWrite(15, LOW);
  }
  else if (lichtmodus == 4) {
    digitalWrite(15, HIGH);
    play2();
    delay(1500);
    lichtmodus++;
    goto appmode;
  }
  else if (lichtmodus == 5) {
appmode:
    digitalWrite(15, HIGH);
    delay(500);
    digitalWrite(15, LOW);
    delay(500);
  }

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


  //Modus 0 = Licht weiss _________________________________________________________________
  if (data == "1" && lichtmodus == 5 ) {
    byte red = 255;
    byte green = 255;
    byte blue = 255;
    uhrzeit();
    // play3();
  }


  //Modus 1 = blau_________________________________________________Grün_________________
  else if (data == "2" && lichtmodus == 5 )
  {
    byte red = 0;
    byte green = 255;
    byte blue = 0;
    uhrzeit();
    // play4();
  }

  //Modus 1 = Grün_________________
  else if (data == "g" && lichtmodus == 5 )
  {
  byte red = 0;
  byte green = 0;
  byte blue = 255;
    uhrzeit();
    //play5();
  }

  delay(800);                                    // Wait 800ms

}

bool debounce(int button, bool s)
{
  int count = 0;
  for (int i = 0; i < 5; i++) {
    if (digitalRead(button) == s)
      count++;
    delay(10);
  }
  if (count > 2)  return 1;
  else           return 0;
}



//Abschnitt fuer die UHR gekuerzt
void uhrzeit () {
  int zeit = minute;
  if (0 <= zeit && zeit <= 59)
  {
    pixels.setPixelColor(10, pixels.Color(red, green, blue));
    pixels.setPixelColor(12, pixels.Color(red, green, blue));
    pixels.setPixelColor(32, pixels.Color(red, green, blue));
    pixels.setPixelColor(51, pixels.Color(red, green, blue));
    pixels.setPixelColor(52, pixels.Color(red, green, blue));
    pixels.setPixelColor(71, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(10, pixels.Color(0, 0, 0));
    pixels.setPixelColor(12, pixels.Color(0, 0, 0));
    pixels.setPixelColor(32, pixels.Color(0, 0, 0));
    pixels.setPixelColor(51, pixels.Color(0, 0, 0));
    pixels.setPixelColor(52, pixels.Color(0, 0, 0));
    pixels.setPixelColor(71, pixels.Color(0, 0, 0));
    pixels.show();
  }
  //STUNDEN___STUNDEN____STUNDEN____STUNDEN___STUNDEN___STUNDEN______________________
  // SONDERZEICHEN bei Stunden____________________________
  //"S" bei SECHSE und OIS ___________
  int zeit50 = hour * 100 + minute;
  if (1215 <= zeit50 && zeit50 < 1315 || 15 <= zeit50 && zeit50 < 115 || 1715 <= zeit50 && zeit50 < 1815 || 515 <= zeit50 && zeit50 < 615)
  {
    pixels.setPixelColor(26, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(26, pixels.Color(0, 0, 0));
    pixels.show();
  }
  // Erstes "E" bei SECHSE und ELFE __________
  int zeit51 = hour * 100 + minute;
  if (1015 <= zeit51 && zeit51 < 1115 || 2215 <= zeit51 && zeit51 < 2315 || 1715 <= zeit51 && zeit51 < 1815 || 515 <= zeit51 && zeit51 < 615)
  {
    pixels.setPixelColor(77, pixels.Color(red, green, blue));
    pixels.show();
  }
  else
  {
    pixels.setPixelColor(77, pixels.Color(0, 0, 0));
    pixels.show();
 
  }
}



String checkClient (void)
{
  while (!client.available()) delay(1);
  String request = client.readStringUntil('\r');
  request.remove(0, 5);
  request.remove(request.length() - 9, 9);
  return request;
}

noiasca

#5
Aug 19, 2019, 05:15 pm Last Edit: Aug 19, 2019, 05:16 pm by noiasca
wenn du den Wert von globalen Variablen ändern willst, dann darfst die Variablen nicht noch mal lokal anlegen.

also statt

 if (data == "1" && lichtmodus == 5 ) {
      byte red = 255;
      byte green = 255;
      byte blue = 255;

nur

Code: [Select]

 if (data == "1" && lichtmodus == 5 ) {
      red = 255;
      green = 255;
      blue = 255;


usw
DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

gregorss

Wie noiasca schreibt: Du darfst globale Variablen nicht noch einmal lokal deklarieren. Du kannst innerhalb eines Blocks zwar Variablen mit gleichen Namen deklarieren, diese „überdecken" dann aber die gleich heißenden globalen Variablen.

Ein Block ist das, was in geschweiften Klammern steht.

Gruß

Gregor
„Ich glaube, ich leg' mich noch mal hin", sagte das Bit.

Merzomann

Super, vielen Dank!

Go Up