Sieben Segment Uhr

Hallo ich habe folgendes Problem ich wollte einen Siebensegment Uhr von [Leon van den Beukel] (https://www.youtube.com/channel/UCyPCnBkZ7FD7Z8Njj_4U7Fw) nachbauen, aber wenn ich das Programm auf meine Arduino Nano spiele leuchten die Leds alle bis auf das letzte Segment (siehe Foto)

Beim erneuten Aus und An machen der Arduino ist gerade sogar noch die Led Nummer 23 angegangen. Wenn ich die Anzahl der Leds im Programm ändere bleiben trotzdem alle Leds an die bereits schon leuchten. Laut Programm sind die Leds 14&15 meine Punkte die Blinken bei mir blinkt aber nicht eine Led.
Habe jetzt noch mal ein anderes Programm aufgespielt um zuzeigen das die Led funktionieren (Programm ist das Beispiel von Adafruit Neopixel und dann Strandtest). Wenn ich in dem Programm die Led Anzahl auf 40 erhöhe dann funktionieren alle Leds.

Es ist verdammt viel was nicht funktioniert, aber ich hoffe jemand kann mir helfen.

Grüß Leon

Ich glaube das es ein Deutch sprechendes Forum Section gibt.
Hier sprechen wir English...

Ja.
Aber dazu müsste erstmal der Code - DEIN code - zu sehen sein.
Dann bitte eine Angabe der verwendeten Module.
Herstellerlink / Verkäuferlink / Datenblatt - irgendwas, auf das man sich stützen kann.
Dann noch ein wenig mitmachen und es wird...
Herzlich Willkommen.

#include <FastLED.h>
#include <Wire.h>
#include "RTClib.h"

#define NUM_LEDS 30     
#define DATA_PIN 6
CRGB LEDs[NUM_LEDS];

// Change this color if you want another color, for example CRGB::Red
CRGB color = CRGB::White;   

RTC_DS3231 rtc;

void setup () {

  // Initialize LED strip
  FastLED.delay(3000);

  // Check if you're LED strip is a RGB or GRB version (third parameter)
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(LEDs, NUM_LEDS);

  Serial.begin(9600);
  while (!Serial) { /* Wait until serial is ready */ }

  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    // following line sets the RTC to the date & time this sketch was compiled
    // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
}

void loop () {
  
  DateTime now = rtc.now();

  int hl = now.hour() / 10;
  int hr = now.hour() % 10;
  int ml = now.minute() / 10;
  int mr = now.minute() % 10;

  displayTime(0, mr);    
  displayTime(7, ml);
  displayTime(16, hr);    
  displayTime(23, hl);    

  FastLED.show();
  
  delay(1000 * 29);
}

void displayTime(int startindex, int number) {

  byte numbers[] = {
    0b00111111, // 0    
    0b00000110, // 1
    0b01011011, // 2
    0b01001111, // 3
    0b01100110, // 4
    0b01101101, // 5
    0b01111101, // 6
    0b00000111, // 7
    0b01111111, // 8
    0b01101111, // 9   
  };

  for (int i = 0; i < 7; i++) {
    LEDs[i + startindex] = ((numbers[number] & 1 << i) == 1 << i) ? color : CRGB::White;
  }

  // Dots
  LEDs[14] = color;
  LEDs[15] = color;
}

1M 5M WS2812B 5 Pins RGBW RGBWW 4 IN 1 LED Strip Light Non-Waterproof DC5V

Geekcreit® ATmega328P Nano V3 Module Improved Version No Cable Development Board Geekcreit for Arduino - products that work with official Arduino boards

DS3231 AT24C32 IIC Precision RTC Real Time Clock Memory Module

tippe oder füge den Code hier ein

tippe oder füge den Code hier ein

Danke.
Kannst Du mal bitte in den Post nochmal gehen (kleiner Bleistift unten) und dann den Code markieren und auf das </> Symbol klicken?
Das ist sonst nicht verwertbar.
Danke!

Du wartest hier (fast) 30 Sekunden auf was?

Das ist nicht mein Programm da ich c++ noch nicht wirklich gelernt habe.
Ich kann dir also nicht sagen auf was ich da warte

Dann kann ich Dir aber schon sagen, das da 30 (29) Sekunden lang nie und nimmer irgendwas was passieren kann, was dir Deinen : zum blinken bringt.
Ich hätte jetzt einfach mal ein delay(500) draus gemacht - vielleicht passiert was...
Es löst Dein Problem nicht, aber das blinken könnte damit ausgelöst werden..-

Bleibt alles unverändert.
Wie sag ich den meinem ds3231 welche Uhrzeit gerade ist also welche Zeile muss ich in den Seriellen Monitor einfügen ?

Gar keine.
Du fragst die Uhrzeit nicht über die Serielle ab.

Ersetze folgende Zeile:

rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

durch:

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

Lade den Sketch hoch.
Dann kommentiere die Zeile aus und lade den Sketch erneut hoch.

Dann geht beim drücken der Reset-Taste die Zeit nicht verloren (vorausgesetzt die Battery ist am laufen... )

ok habe ich gemacht sieht jetzt so aus.

 if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    // following line sets the RTC to the date & time this sketch was compiled
     rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
}

Kann ich mir die Uhrzeit über den Seriellen jetzt einmal abfragen würde gerne sehen ob er funktioniert

Ersetzen / einfügen:

void setup ()
{
  Serial.begin(115200);   // drauf achten! Der Serielle Monitor ist auf 115200 zu stellen
  Serial.println(F("Start..."));
  // Check if you're LED strip is a RGB or GRB version (third parameter)
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(LEDs, NUM_LEDS);
  if (!rtc.begin())
  {
    Serial.println("Couldn't find RTC");
    while (1);
  }
  if (rtc.lostPower())
  {
    Serial.println("RTC lost power, lets set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
  getTime();
}

void getTime()
{
  DateTime now = rtc.now();
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print(' ');
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
}

Ja Perfekt der funktioniert schonmal.
Wie bekomme ich jetzt das Problem weg das nur 23 Leds leuchten ?

Hast Du schon mal probiert einen kleinen Kurzsketch zu schreiben, der wenigstens einmal alle LED's durchläuft? (Gibt es IMHO sicher auch in den Beispielen).

ich selber habe noch keinen geschrieben aber ich habe ein Beispiel genommen (Adafruit Neopixel Strandtest) und da haben alle funtioniert wenn ich halt die Anzahl der Leds im Programm auf 40 erhöht habe.

wie kommst eigentlich drauf dass mehr leuchten sollen?
Wenn der Ersteller 3 x 7 + 2 für die erste stelle (10er Stunde) geplant hat, dann kommst genau auf 23.

andererseis habs mal hochgeladen, bei mir leuchten jetzt 30 LEDs.

Hast Du mich zitiert? Warum?

Wir haben Gemeinsamkeiten... :wink:

Ich habe mir auch gerade mal die Frage gestellt warum die Leds Gelb leuchten. Weil laut Programm sollten diese ja weiß leuchten. Also habe ich oben in Programm einfach mal Red geschrieben

// Change this color if you want another color, for example CRGB::Red
CRGB color = CRGB::White;

Und siehe da jetzt habe ich einen Regenbogen (jede Led eine andere Farbe).
Wenn ich jetzt die Farbe der Leds ändere die meine zwei Punkte sein sollen, habe ich dieses Bild

 for (int i = 0; i < 7; i++) {
    LEDs[i + startindex] = ((numbers[number] & 1 << i) == 1 << i) ? color : CRGB::Red;

es ist ja eine 4x7 Segment anzeige deshalb 4x7+2= 30