Wall Clock (WAnduhr)

Hallo noch ml ich ,
Also meine Uhr läuft nun das heißt alle Led´s Funzen nut habe ich das Problem das er alles zeigt nur keine Uhrzeit ich hoffe jemand kann helfen .

vielen dank mal gruss

tom

//RTC libraries 
#include <Wire.h> 
#include <Adafruit_NeoPixel.h>
#include "DS3231.h"
//WS2812B libraries

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

/**************RGB strip Definitions**************/

// Define pins for led strip
#define PIN            9
#define PINBLINK       6

// Define pixels in the strip
#define NUMPIXELS      56
#define NUMPIXELS3     2

//Setup led strips
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel blinks  = Adafruit_NeoPixel(NUMPIXELS3, PINBLINK, NEO_GRB + NEO_KHZ800);


/**************RTC Definitions**************/
RTClib rtc;
 


/*******Control states for the clock********/
int delayval = 1000; 

int hourDigit1=0;
int hourDigit2=0;
int miniteDigit1=0;
int miniteDigit2=0;

int blinkState=0;
/////*Globals*/////

#define SEGMENT_SIZE    14
#define TOTAL_SEGMENTS  4


/////*Number templates*/////
//This define a template for number inside a segment according to the wiring of the project, 
//1 represent the led is on and should be colored
//0 represent that is should be off
//2 leds per segment, 14 leds per number

//Mask for right to left numbers 
unsigned int rgbColourInv[11][14]={
  {1,1,1,0,1,1,1,1,1,1,0,1,1,1}, //0
  {0,1,1,0,1,1,0,0,0,0,0,0,0,0}, //1
  {1,0,0,1,1,1,1,1,0,0,1,1,1,1}, //2
  {1,1,1,1,1,1,1,1,0,0,1,0,0,1}, //3
  {0,1,1,1,1,1,0,0,1,1,1,0,0,0}, //4
  {1,1,1,1,0,0,1,1,1,1,1,0,0,1}, //5
  {1,1,1,1,0,0,1,1,1,1,1,1,1,1}, //6
  {0,1,1,0,1,1,1,1,0,0,0,0,0,0}, //7
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //8
  {0,1,1,1,1,1,1,1,1,1,0,0,0,0}, //9
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //nill
};

//Mask for left to right numbers 
unsigned int rgbColour[11][14]={
  {1,1,1,0,1,1,1,1,1,1,0,1,1,1}, //0
  {0,0,0,0,0,0,0,0,1,1,0,1,1,0}, //1
  {1,1,1,1,0,0,1,1,1,1,1,0,0,1}, //2
  {1,0,0,1,0,0,1,1,1,1,1,1,1,1}, //3
  {0,0,0,1,1,1,0,0,1,1,1,1,1,0}, //4
  {1,0,0,1,1,1,1,1,0,0,1,1,1,1}, //5
  {1,1,1,1,1,1,1,1,0,0,1,1,1,1}, //6
  {0,0,0,0,0,0,1,1,1,1,0,1,1,0}, //7
  {1,1,1,1,1,1,1,1,1,1,1,1,1,1}, //8
  {0,0,0,0,1,1,1,1,1,1,1,1,1,0}, //9
  {0,0,0,0,0,0,0,0,0,0,0,0,0,0}, //nill
};

//Creates a RGB color schedule by hourR
unsigned int colorSchedule[24][3]= {
  {40,0,0},  //00
  {40,0,0},  //01
  {40,0,0},  //02
  {40,0,0},  //03
  {40,0,0},  //04
  {40,0,0},  //05   
  {180,0,0},  //06
  {180,0,0},  //07
  {160,20,0},  //08
  {140,40,0},  //09
  {120,60,0},  //10
  {100,80,0},  //11
  {80,100,0},  //12
  {60,120,0},  //13
  {40,140,0},  //14
  {20,160,0},  //15
  {0,180,0},  //16
  {0,160,20},  //17
  {0,140,40},  //18
  {0,120,60},  //19
  {0,100,80},  //20
  {0,80,100},  //21
  {40,0,0},  //22
  {40,0,0},  //23
}; 
int currColor[3]= {0,0,160}; 

/////*-------*/////
void setup() {

  pixels.begin(); // This initializes the NeoPixel library.
  blinks.begin(); // This initializes the NeoPixel library.
  Serial.begin(9600); 
  delay(1000); 
  Wire.begin(); 
}

//Set the number's color for a given segment
void setNumber(int number, int segment,  int r,int g,int b)
{
  //Segment are offsets of 14
  int offset = SEGMENT_SIZE * segment;
  
  if(segment < TOTAL_SEGMENTS)
  {
    for (int i = 0 ; i < SEGMENT_SIZE; i++)
    {
      if( rgbColour[number][i] == 0)
      {
         pixels.setPixelColor(i + offset, pixels.Color(0,0,0));  
      }else{
         pixels.setPixelColor(i + offset, pixels.Color(r,g,b));  
      }
    }  
  }
}

//Set the blinking dots color
void setBlink(int r,int g,int b)
{
      blinks.setPixelColor(0, pixels.Color(r,g,b));  
      blinks.setPixelColor(1, pixels.Color(r,g,b));  
}
 
void loop() { 

  DateTime now = rtc.now();

  hourDigit1=now.hour()/10;
  hourDigit2=now.hour()%10;
  miniteDigit1=now.minute()/10;
  miniteDigit2=now.minute()%10;    

  //Serial.println(now.hour()+':'+now.minute()+':'+now.second());
  
  //Color calculation
  currColor[0] = colorSchedule[now.hour()][0];
  currColor[1] = colorSchedule[now.hour()][1];
  currColor[2] = colorSchedule[now.hour()][2];

  //Extra power saving by disabling the first 0 in hours like 09:30
  if (hourDigit1 == 0)
  {
    setNumber(10,0,currColor[0],currColor[1],currColor[2]);
  }else{
    setNumber(hourDigit1,0,currColor[0],currColor[1],currColor[2]);
  }
  setNumber(hourDigit2,1,currColor[0],currColor[1],currColor[2]);
  setNumber(miniteDigit1,2,currColor[0],currColor[1],currColor[2]);
  setNumber(miniteDigit2,3,currColor[0],currColor[1],currColor[2]);
  if(blinkState==0)
  {
    setBlink(currColor[0],currColor[1],currColor[2]);
    blinkState = 1;
  }else
  {
    setBlink(0,0,0);
    blinkState = 0;
  }
  
  pixels.show();
  blinks.show();

  delay(delayval); 
}

Was zeigt die Uhr denn dann?

schade hätte gerne ein bild gezeigt

sieht aus wie 68-68
aber die acht ist keine acht sondern es fehlen unten rechts und unten das Segment

Wieso zeigst Du denn kein Bild?

Und warum ein neuer Thread ?

Lies mal das hier.

Gruß Tommy

haben den alten nicht mehr gefunden und später dann doch sorry
so nun das bild

Falke1166:
haben den alten nicht mehr gefunden und später dann doch sorry
so nun das bild

Und was bitte soll da drauf sein ?
Oder hast du auch das Motiv nicht gefunden ? :wink:

Hi

Die Anzeige soll wohl 68-68 anzeigen, wo die unteren und rechts-unteren Segmente fehlen.
Warum? Ist auch im Nachbar-Thread nicht klar.

MfG

Ist auch kein wunder, wenn das nicht funktioniert.
Wenn der TO genauso baut und programmiert wie er seine Threads postet, kann das nicht gehen.

Ok wir sehen ein 6P-6P. Was sollte denn dargestellt werden.
Grüße Uwe

uwefed:
Ok wir sehen ein 6P-6P.....

Ohhh....wo siehst du das. Ich kann im Bild nix erkennen.

Bild aus #6:
4e2095c5f01e357ccec23e358cefb618729ac60e.jpg

uxomm:
Bild aus #6:

Danke uxomm, das konnte ich merkwürdigerweise bei mir nicht erkennen, war einfach zu groß.

Ok da habe ich dem TO ja unrecht getan, das Bild war da.

Es würde auch helfen, wenn klarer wäre:

  • wo oben und unten ist
  • ob die Vorder- oder die Rückseite zu sehen ist.

Falls man davon ausgeht, dass die Vorderseite zu sehen ist und dass "unten" auf der rechten Bildseite ist, dann würde ich sagen es leuchten folgende LEDs (es ist eine "14-Segment"-Anzeige):

Alle Segmente:

   1a 2a        1a 2a                 1a 2a        1a 2a
 Cf     3b    f2     3b             Cf     3b    Cf     3b
 Bf     4b    f1     4b             Bf     4b    Bf     4b
   Dg Eg        Dg Eg      1h 2h      Dg Eg        Dg Eg
 Ae     5c    Ae     5c             Ae     5c    Ae     5c
 9e     6c    9e     6c             9e     6c    9e     6c
   8d 7d        8d 7d                 8d 7d        8d 7d
 
 
Segmente die mMn am Foto leuchten: 

                   2a                                 2a
        3b           3b                    3b           3b
        4b    f1     4b                    4b    Bf     4b
   Dg Eg        Dg Eg      1h 2h      Dg Eg        Dg Eg
 Ae     5c           5c             Ae     5c           5c
 9e                  6c             9e                  6c
   8d           8d 7d                 8d           8d 7d

also ich sehe direkt auf die led´s

und nochmal sorry ist nicht so einfach sich in diesem Forum zurecht zu finden bin auch auf dem Gebiet noch neu (Arduino) finde es aber genial was damit geht .
Habe mir auch schon einen VU-Meter gebaut der funzt nur mal so nebenbei das Kernstück ist für mich halt die Programmierung und die wenn mann CNC Programme gewohnt ist doch sehr anders also nochmal sorry für meine Dumme fragen .
Dachte Halt nur da hier wohl viele Experten sind macht es mir das Learning by Doing einfacher .

Falke1166:
also ich sehe direkt auf die led´s

Das versteht wohl kaum einer.
Auf die Oberseite, Unterseite, Anschlüsse oder worauf ?

Du solltest schon etwas genauer und speziell auf die Fragen von uxomm eingehen.
Ohne genauere Antworten hat kaum einer Lust dir noch zu helfen.

also nochmal alles led´s funktionieren den sketch habe ich euch gezeigt habe einfach nur das Problem das der rtc keine Uhrzeit auf die led´s bringt das heisst ich sehe nur 6P-6P mehr nicht eigentlich sollte da eine uhrzeit stehen
die blinkende LED in der Mitte geht super hahahahaha .
Habe wie im Sketch 28 segmente mit je 2 LED verbaut .
Wenn ich den strandtest starte gehen alles LED super wie gesagt sehe nur keine Uhrzeit mit dem gezeigten sketch .

  1. Bekommst Du die richtige Uhrzeit? Einfach mal über Serial.print() an den PC schicken und dort im Terminal der IDE anschauen (Ikone oben rechts)
  2. Kannst Du Zahlen zB 1111, 2222, 3333 usw richtig anzeigen?

Grüße Uwe

also habe jetzt einfach einen sketch nur mit serielle zeit ausgabe probiert das geht auch gut
dann wieder den anderen sketch drauf nun habe ich wieder seltsam zahlen ich gebe es bals auf