Die dort verlinkte Lib kennt
String getFormattedTime(unsigned long secs = 0);
Zeile 83
Hast Du die Lib richtig installiert? Hast Du noch eine andere NTPClient-Lib installiert?
Gruß Tommy
Die dort verlinkte Lib kennt
String getFormattedTime(unsigned long secs = 0);
Zeile 83
Hast Du die Lib richtig installiert? Hast Du noch eine andere NTPClient-Lib installiert?
Gruß Tommy
HI
Dieses Problem konnte ich regeln.
Jetzt habe ich jedoch ein Problem einen String zu einem Intenger zu machen.
Bei der Zeile: minuten = toInt(m);
kommt die Fehlermeldung: 'toInt' was not declared in this scope.
aber ist toInt nicht eine Funktion vom Arduino?
gäbe es eine andere Möglichkeit den String zu int zu verwandeln?
hier der ganze Code:
#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>
const char *ssid = "*****";
const char *password = "*******";
WiFiUDP ntpUDP;
// You can specify the time server pool and the offset (in seconds, can be
// changed later with setTimeOffset() ). Additionaly you can specify the
// update interval (in milliseconds, can be changed using setUpdateInterval() ).
NTPClient timeClient(ntpUDP, "ch.pool.ntp.org", 3600, 60000);
String formattedDate;
String h;
String m;
String split(String s, char parser, int index) {
String rs="";
int parserIndex = index;
int parserCnt=0;
int rFromIndex=0, rToIndex=-1;
while (index >= parserCnt) {
rFromIndex = rToIndex+1;
rToIndex = s.indexOf(parser,rFromIndex);
if (index == parserCnt) {
if (rToIndex == 0 || rToIndex == -1) return "";
return s.substring(rFromIndex,rToIndex);
} else parserCnt++;
}
return rs;
}
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 14
#define NUMPIXELS 16
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int stunde;
int minuten;
int minuten_neu;
int stunde_neu;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin(); //
}
void loop() {
minuten = toInt(m);
stunden = toInt(h);
pixels.clear();
zeit();
pixels.show();
}
void zeit() {
timeClient.update();
formattedDate = timeClient.getFormattedTime();
h = split(formattedDate,':', 0);
m = split(formattedDate,':', 1);
Serial.println(formattedDate);
Serial.print(":::::::::");
Serial.print(h);
Serial.print(".");
Serial.print(m);
Serial.println();
delay(1000);
}
void hourshift() {
if (minuten >= 0 && minuten <= 24){
stunde_neu = s;
}
if (minuten >= 25 && minuten <= 59){
stunde_neu = s + 1;
}
}
void show_hour() {
if (stunde_neu = 1 || stunde_neu = 13) {
eins();
}
if (stunde_neu = 2 || stunde_neu = 14) {
zwei();
}
if (stunde_neu = 3 || stunde_neu = 15) {
drei();
}
if (stunde_neu = 4 || stunde_neu = 16) {
vier();
}
if (stunde_neu = 5 || stunde_neu = 17) {
fuenf();
}
if (stunde_neu = 6 || stunde_neu = 18) {
sechs();
}
if (stunde_neu = 7 || stunde_neu = 19) {
sieben();
}
if (stunde_neu = 8 || stunde_neu = 20) {
acht();
}
if (stunde_neu = 9 || stunde_neu = 21) {
neun();
}
if (stunde_neu = 10 || stunde_neu = 22) {
zehn();
}
if (stunde_neu = 11 || stunde_neu = 23) {
elf();
}
if (stunde_neu = 12 || stunde_neu = 24) {
zwoelf();
}
}
void fuenf () {
strip.setPixelColor(102, 255, 255, 255);
strip.setPixelColor(101, 255, 255, 255);
strip.setPixelColor(100, 255, 255, 255);
strip.setPixelColor(99, 255, 255, 255);
}
void zehn () {
strip.setPixelColor(98, 255, 255, 255);
strip.setPixelColor(97, 255, 255, 255);
strip.setPixelColor(96, 255, 255, 255);
strip.setPixelColor(95, 255, 255, 255);
}
void zwanzig () {
strip.setPixelColor(94, 255, 255, 255);
strip.setPixelColor(93, 255, 255, 255);
strip.setPixelColor(92, 255, 255, 255);
strip.setPixelColor(91, 255, 255, 255);
strip.setPixelColor(90, 255, 255, 255);
strip.setPixelColor(89, 255, 255, 255);
strip.setPixelColor(88, 255, 255, 255);
}
/*void drei () {
strip.setPixelColor(, 255, 255, 255);
strip.setPixelColor(, 255, 255, 255);
strip.setPixelColor(, 255, 255, 255);
strip.setPixelColor(, 255, 255, 255);
}*/
void viertel () {
strip.setPixelColor(83, 255, 255, 255);
strip.setPixelColor(82, 255, 255, 255);
strip.setPixelColor(81, 255, 255, 255);
strip.setPixelColor(80, 255, 255, 255);
strip.setPixelColor(79, 255, 255, 255);
strip.setPixelColor(78, 255, 255, 255);
strip.setPixelColor(77, 255, 255, 255);
}
void vor () {
strip.setPixelColor(76, 255, 255, 255);
strip.setPixelColor(75, 255, 255, 255);
strip.setPixelColor(74, 255, 255, 255);
}
void nach () {
strip.setPixelColor(69, 255, 255, 255);
strip.setPixelColor(68, 255, 255, 255);
strip.setPixelColor(67, 255, 255, 255);
strip.setPixelColor(66, 255, 255, 255);
}
void halb () {
strip.setPixelColor(65, 255, 255, 255);
strip.setPixelColor(64, 255, 255, 255);
strip.setPixelColor(63, 255, 255, 255);
strip.setPixelColor(62, 255, 255, 255);
}
void elf () {
strip.setPixelColor(60, 255, 255, 255);
strip.setPixelColor(59, 255, 255, 255);
strip.setPixelColor(58, 255, 255, 255);
}
void fuenfh () {
strip.setPixelColor(58, 255, 255, 255);
strip.setPixelColor(57, 255, 255, 255);
strip.setPixelColor(56, 255, 255, 255);
strip.setPixelColor(55, 255, 255, 255);
}
void eins () {
strip.setPixelColor(54, 255, 255, 255);
strip.setPixelColor(53, 255, 255, 255);
strip.setPixelColor(52, 255, 255, 255);
strip.setPixelColor(51, 255, 255, 255);
}
void ein () {
strip.setPixelColor(54, 255, 255, 255);
strip.setPixelColor(53, 255, 255, 255);
strip.setPixelColor(52, 255, 255, 255);
}
void zwei () {
strip.setPixelColor(47, 255, 255, 255);
strip.setPixelColor(46, 255, 255, 255);
strip.setPixelColor(45, 255, 255, 255);
strip.setPixelColor(44, 255, 255, 255);
}
void drei () {
strip.setPixelColor(43, 255, 255, 255);
strip.setPixelColor(42, 255, 255, 255);
strip.setPixelColor(41, 255, 255, 255);
strip.setPixelColor(40, 255, 255, 255);
}
void vier () {
strip.setPixelColor(36, 255, 255, 255);
strip.setPixelColor(35, 255, 255, 255);
strip.setPixelColor(34, 255, 255, 255);
strip.setPixelColor(33, 255, 255, 255);
}
void sechs () {
strip.setPixelColor(32, 255, 255, 255);
strip.setPixelColor(31, 255, 255, 255);
strip.setPixelColor(30, 255, 255, 255);
strip.setPixelColor(29, 255, 255, 255);
strip.setPixelColor(28, 255, 255, 255);
}
void acht () {
strip.setPixelColor(25, 255, 255, 255);
strip.setPixelColor(24, 255, 255, 255);
strip.setPixelColor(23, 255, 255, 255);
strip.setPixelColor(22, 255, 255, 255);
}
void sieben () {
strip.setPixelColor(21, 255, 255, 255);
strip.setPixelColor(20, 255, 255, 255);
strip.setPixelColor(19, 255, 255, 255);
strip.setPixelColor(18, 255, 255, 255);
strip.setPixelColor(17, 255, 255, 255);
strip.setPixelColor(16, 255, 255, 255);
}
void zwoelf () {
strip.setPixelColor(15, 255, 255, 255);
strip.setPixelColor(14, 255, 255, 255);
strip.setPixelColor(13, 255, 255, 255);
strip.setPixelColor(12, 255, 255, 255);
strip.setPixelColor(11, 255, 255, 255);
}
void zehnh () {
strip.setPixelColor(10, 255, 255, 255);
strip.setPixelColor(9, 255, 255, 255);
strip.setPixelColor(8, 255, 255, 255);
strip.setPixelColor(7, 255, 255, 255);
}
void neun () {
strip.setPixelColor(7, 255, 255, 255);
strip.setPixelColor(6, 255, 255, 255);
strip.setPixelColor(5, 255, 255, 255);
strip.setPixelColor(4, 255, 255, 255);
}
void uhr () {
strip.setPixelColor(2, 255, 255, 255);
strip.setPixelColor(1, 255, 255, 255);
strip.setPixelColor(0, 255, 255, 255);
}
Wie wäre es damit, einfach mal nach "Arduino String Object" zu suchen? Da findest Du m.toInt().
Gruß Tommy
HI
Jetzt habe ich keine Fehlermeldung mehr, aber wenn ich den Code auf meine Wörteruhr lade leuchten einfach die ersten vier Reihen.
Was habe ich falsch gemacht?
Das ist der Code:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 14
Adafruit_NeoPixel strip(64, PIN, NEO_GRB + NEO_KHZ800);
#define LED_COUNT 114
int color = strip.Color(255, 255, 255);
int fuenf () {
strip.setPixelColor(102, 255, 255, 255);
strip.setPixelColor(101, 255, 255, 255);
strip.setPixelColor(100, 255, 255, 255);
strip.setPixelColor(99, 255, 255, 255);
}
int zehn () {
strip.setPixelColor(98, 255, 255, 255);
strip.setPixelColor(97, 255, 255, 255);
strip.setPixelColor(96, 255, 255, 255);
strip.setPixelColor(95, 255, 255, 255);
}
int zwanzig () {
strip.setPixelColor(94, 255, 255, 255);
strip.setPixelColor(93, 255, 255, 255);
strip.setPixelColor(92, 255, 255, 255);
strip.setPixelColor(91, 255, 255, 255);
strip.setPixelColor(90, 255, 255, 255);
strip.setPixelColor(89, 255, 255, 255);
strip.setPixelColor(88, 255, 255, 255);
}
/*int drei () {
strip.setPixelColor(, 255, 255, 255);
strip.setPixelColor(, 255, 255, 255);
strip.setPixelColor(, 255, 255, 255);
strip.setPixelColor(, 255, 255, 255);
}*/
int viertel () {
strip.setPixelColor(83, 255, 255, 255);
strip.setPixelColor(82, 255, 255, 255);
strip.setPixelColor(81, 255, 255, 255);
strip.setPixelColor(80, 255, 255, 255);
strip.setPixelColor(79, 255, 255, 255);
strip.setPixelColor(78, 255, 255, 255);
strip.setPixelColor(77, 255, 255, 255);
}
int vor () {
strip.setPixelColor(76, 255, 255, 255);
strip.setPixelColor(75, 255, 255, 255);
strip.setPixelColor(74, 255, 255, 255);
}
int nach () {
strip.setPixelColor(69, 255, 255, 255);
strip.setPixelColor(68, 255, 255, 255);
strip.setPixelColor(67, 255, 255, 255);
strip.setPixelColor(66, 255, 255, 255);
}
int halb () {
strip.setPixelColor(65, 255, 255, 255);
strip.setPixelColor(64, 255, 255, 255);
strip.setPixelColor(63, 255, 255, 255);
strip.setPixelColor(62, 255, 255, 255);
}
int elf () {
strip.setPixelColor(60, 255, 255, 255);
strip.setPixelColor(59, 255, 255, 255);
strip.setPixelColor(58, 255, 255, 255);
}
int fuenfh () {
strip.setPixelColor(58, 255, 255, 255);
strip.setPixelColor(57, 255, 255, 255);
strip.setPixelColor(56, 255, 255, 255);
strip.setPixelColor(55, 255, 255, 255);
}
int eins () {
strip.setPixelColor(54, 255, 255, 255);
strip.setPixelColor(53, 255, 255, 255);
strip.setPixelColor(52, 255, 255, 255);
strip.setPixelColor(51, 255, 255, 255);
}
int ein () {
strip.setPixelColor(54, 255, 255, 255);
strip.setPixelColor(53, 255, 255, 255);
strip.setPixelColor(52, 255, 255, 255);
}
int zwei () {
strip.setPixelColor(47, 255, 255, 255);
strip.setPixelColor(46, 255, 255, 255);
strip.setPixelColor(45, 255, 255, 255);
strip.setPixelColor(44, 255, 255, 255);
}
int drei () {
strip.setPixelColor(43, 255, 255, 255);
strip.setPixelColor(42, 255, 255, 255);
strip.setPixelColor(41, 255, 255, 255);
strip.setPixelColor(40, 255, 255, 255);
}
int vier () {
strip.setPixelColor(36, 255, 255, 255);
strip.setPixelColor(35, 255, 255, 255);
strip.setPixelColor(34, 255, 255, 255);
strip.setPixelColor(33, 255, 255, 255);
}
int sechs () {
strip.setPixelColor(32, 255, 255, 255);
strip.setPixelColor(31, 255, 255, 255);
strip.setPixelColor(30, 255, 255, 255);
strip.setPixelColor(29, 255, 255, 255);
strip.setPixelColor(28, 255, 255, 255);
}
int acht () {
strip.setPixelColor(25, 255, 255, 255);
strip.setPixelColor(24, 255, 255, 255);
strip.setPixelColor(23, 255, 255, 255);
strip.setPixelColor(22, 255, 255, 255);
}
int sieben () {
strip.setPixelColor(21, 255, 255, 255);
strip.setPixelColor(20, 255, 255, 255);
strip.setPixelColor(19, 255, 255, 255);
strip.setPixelColor(18, 255, 255, 255);
strip.setPixelColor(17, 255, 255, 255);
strip.setPixelColor(16, 255, 255, 255);
}
int zwoelf () {
strip.setPixelColor(15, 255, 255, 255);
strip.setPixelColor(14, 255, 255, 255);
strip.setPixelColor(13, 255, 255, 255);
strip.setPixelColor(12, 255, 255, 255);
strip.setPixelColor(11, 255, 255, 255);
}
int zehnh () {
strip.setPixelColor(10, 255, 255, 255);
strip.setPixelColor(9, 255, 255, 255);
strip.setPixelColor(8, 255, 255, 255);
strip.setPixelColor(7, 255, 255, 255);
}
int neun () {
strip.setPixelColor(7, 255, 255, 255);
strip.setPixelColor(6, 255, 255, 255);
strip.setPixelColor(5, 255, 255, 255);
strip.setPixelColor(4, 255, 255, 255);
}
int uhr () {
strip.setPixelColor(2, 255, 255, 255);
strip.setPixelColor(1, 255, 255, 255);
strip.setPixelColor(0, 255, 255, 255);
}
#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>
const char *ssid = "******";
const char *password = "*******";
WiFiUDP ntpUDP;
// You can specify the time server pool and the offset (in seconds, can be
// changed later with setTimeOffset() ). Additionaly you can specify the
// update interval (in milliseconds, can be changed using setUpdateInterval() ).
NTPClient timeClient(ntpUDP, "ch.pool.ntp.org", 3600, 60000); // für Zeitverschiebung vileicht offset verändern (hier 7200) (3600 im Februar/winter)
int m = timeClient.getMinutes();
int h = timeClient.getHours();
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();
strip.begin();
}
void loop() {
strip.show();
timeClient.update();
Serial.print(timeClient.getHours());
Serial.print(":");
Serial.print(timeClient.getMinutes());
Serial.println();
void zeitauswerten();
delay(100);
}
void zeitauswerten() {
if(m > 4 && m < 10){ //Fünf nach
fuenf();
nach();
}
if(m > 9 && m < 15){ //Zehn nach
zehn();
nach();
}
if(m > 14 && m < 20){ //Viertel nach
viertel();
nach();
}
if(m > 19 && m < 25){ //Zwanzig nach
zwanzig();
nach();
}
if(m > 24 && m < 30){ //Fünf vor halb
fuenf();
halb();
vor();
}
if(m > 29 && m < 35){ //halb
halb();
}
if(m > 34 && m < 40){ //Fünf nach halb
fuenf();
halb();
nach();
}
if(m > 39 && m < 45){ //Zwanzig vor
zwanzig();
vor();
}
if(m > 44 && m < 50){ //Viertel vor
viertel();
vor();
}
if(m > 49 && m < 55){ //Zehn vor
zehn();
vor();
}
if(m > 54 && m < 0){ //Fünf vor
fuenf();
vor();
}
if(h == 12 || h == 0) { // Zwoelf
}
if(h == 13) { // Eins
}
if(h == 13 && m == 0) { // Ein
}
if(h == 1 && m == 0) { // Ein
}
if(h == 14 || h == 2) { // Zwei
}
if(h == 15 || h == 3) { // Drei
}
if(h == 16 || h == 4) { // Vier
}
if(h == 17 || h == 5) { // Fuenf
}
if(h == 18 || h == 6) { // Sechs
}
if(h == 19 || h == 7) { // Sieben
}
if(h == 20 || h == 8) { // Acht
}
if(h == 21 || h == 9) { // Neun
}
if(h == 22 || h == 10) { // Zehn
}
if(h == 23 || h == 11) { // Elf
}
if(m >= 0 && m < 5) { // Uhr
}
}
wie viele Warnings bekommst denn beim kompilieren? Hast sie aufgedreht?
Hi
Und ändere Dein WLan-Passwort ... jeder Script-Kiddy wird Deine SSID nun wohl mit dem hier verfügbarem Passwort bombadieren ...
MfG
Guten Abend elektrocrafter10,
ich hab mir deinen Sketch gerade angeschaut.
Deine Funktionen, die die entsprechenden LEDs einschalten sind alle vom Typ int, schau dir mal an was du für Warnungen zurück bekommt beim kompilieren.
Ich benutze selten die Neopixel Lib aber was stellst du dir vor soll "int color = strip.Color(255, 255, 255);" machen - konnte hier auch nichts dazu finden? Für das anzeigen und vorallem "löschen" der LEDs solltest du dir das simple Beispiel in der IDE nochmal anschauen.
Deine Funktion zum Zeitauswerten wird nie aufgerufen. Nimm im loop das void vor zeitauswerten(); weg.
Dann ist mir noch aufgefallen, dass du die Variablen m und h schon vor dem NTP Abruf versuchst mit timeClient.getMinutes(); und timeClient.getHours(); zu füllen. Das klappt nicht, die Variablen haben 0 bzw. 1 als Inhalt. Auch wird sich deine Uhrzeit nicht aktualisieren. Du musst im loop dafür sorgen, dass die Variablen der Uhrzeit aktuell gehalten werden.
Ich hoffe ich konnte dir weiterhelfen :).
Schönen Abend wünsche ich Euch allen noch.
Liebe Grüße,
Björn
Hi
Da die Farbe eines jeden Pixel 3 oder 4 Byte beinhaltet - außerdem die Farbe als 32-Bit-Wert gespeichert wird - sollte man wohl ein uint32_t als Datentyp für die Farbe vorsehen.
In der Library, das Adafruit_NeoPixel.h File, Zeile ab 145:
static uint32_t
Color(uint8_t r, uint8_t g, uint8_t b),
Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w);
Die Funktion .Color kann mit 3 oder 4 Parametern aufgerufen werden und gibt einen 32bit Wert zurück.
In der .cpp, ab Zeile 2072
// Convert separate R,G,B into packed 32-bit RGB color.
// Packed format is always RGB, regardless of LED strand color order.
uint32_t Adafruit_NeoPixel::Color(uint8_t r, uint8_t g, uint8_t b) {
return ((uint32_t)r << 16) | ((uint32_t)g << 8) | b;
}
Bei dem benutztem int verbleiben Blau und die unteren 7 Bit von Grün.
Sobald Grün größer als 127 ist, ist das Ergebnis negativ (da als Datentyp signed gewählt wurde).
MfG
Hi postmaster-ino,
danke fürs raussuchen und erklären - hab ich auch wieder was gelernt :).
Allerdings wird in dem Sketch wohl ein ESP8266 genutzt, dort ist ein int 4 Byte groß, deshalb klappt das in diesem Fall auch ohne das eindeutige deklarieren von uint32_t. Vielleicht sollte man sich diese Schreibweise bei den ganzen verschiedenen Boards echt angewöhnen :).
So es ist Zeit fürs Bett... bis später.
LG
Hi
Vielen Dank fürs Helfen, an diese Dinge habe ich gar nicht gedacht.
Was hast du damit | gemeint?Aso eine normale Fehlermeldung bekomme ich nicht. Gibt es was anderes?
/
MajorW:
Deine Funktionen, die die entsprechenden LEDs einschalten sind alle vom Typ int, schau dir mal an was du für Warnungen zurück bekommt beim kompilieren.
Hi,
gerne - freue mich, wenn ich der Community auch mal etwas zurück geben kann :).
Wenn du unter Datei->Voreinstellungen die ausführliche Ausgabe während des Kompilieren aktivierst solltest du solche Warnungen sehen:
In function 'int uhr()':
warning: no return statement in function returning non-void [-Wreturn-type]
Das liegt daran, dass du bei den Funktionen für das Setzen der LEDs den Typ int vergeben hast. Und normal gibt diese Funktion am Ende einen intenger-Wert zurück. Da du keine Wertrückgabe hast ändere das int einfach auf void.
Bist du weitergekommen mit der Anzeige der Uhrzeit?
LG,
Björn
Hi
MajorW:
Das liegt daran, dass du bei den Funktionen für das Setzen der LEDs den Typ int vergeben hast. Und normal gibt diese Funktion am Ende einen intenger-Wert zurück. Da du keine Wertrückgabe hast ändere das int einfach auf void.LG,
Björn
Meinst du die vielen intenger am anfang?
MajorW:
Bist du weitergekommen mit der Anzeige der Uhrzeit?
nein es ist noch nichts anders.
Hi
Nein
int zehn () {
strip.setPixelColor(98, 255, 255, 255);
strip.setPixelColor(97, 255, 255, 255);
strip.setPixelColor(96, 255, 255, 255);
strip.setPixelColor(95, 255, 255, 255);
}
DAS ist Deine Funktion 'zehn()'.
Diese hat, laut Definition, einen Rückgabewert des Datentyp INT.
Leider fehlt in der Funktion die eigentliche Rückgabe - return x; (wobei x der Rückgabewert ist - in diesem Fall im Wertebereich von INT ... wäre sinnvoll).
Wenn die Funktion KEINE Rückgabe hat, sollte man die Funktion auch so anlegen:
void zehn (void) {
strip.setPixelColor(98, 255, 255, 255);
strip.setPixelColor(97, 255, 255, 255);
strip.setPixelColor(96, 255, 255, 255);
strip.setPixelColor(95, 255, 255, 255);
}
Das erste 'void' sagt: Der Rückgabewert ist vom Typ void (Was bedeutet: gibbet nicht)
Das 'void' in der Klammer bedeutet, daß der übergebene Parameter vom Datentyp void ist - und auch hier heißt Das 'gibbet nicht'.
Somit wird hier eine Funktion erstellt, Die keine Parameter übergeben bekommt und auch Nichts zurück gibt.
Bei Dir wird eine Funktion erstellt, Die keine Parameter übergeben bekommt (Klammer leer ... schöner ist's mit void) ABER ein INT zurück gibt - dafür fehlt aber das 'return' in der Funktion, Dem der Wert der Rückgabe angehangen wird.
return 1; --> Rückgabewert wäre Eins
return retvar; --> Die Funktion gibt als Rückgabe den Wert der Variable retvar zurück, Die innerhalb der Funktion gesetzt wurde.
Bei Dir fehlt das return ... und Das sollte eine WARNUNG auslösen.
MfG
HI
Trotz dem Fehler mit void leuchten immer noch nur die ersten vier Reihen. Woran kann das liegen?
Die LEDs leuchten genau so wie sie beim vorherigen Programm geleuchtet haben. Warum schaltet es nicht alle LEDs aus?
Danke fürs Helfen
Elektrocrafter10
Hallo elektrocrafter10,
kannst du bitte nochmal deinen Sketch einstellen wie du ihn jetzt hast?
Was für ein Board verwendest du (z.B. Nodemcu, Wemos D1 Mini) und wie hast du alles verkabelt?
Ich würde das Programm, dann auf meine Matrix testweise laden und mir das mal genauer anschauen.
Liebe Grüße,
Björn
Hi
Ich verwende das Board: Overview | Adafruit Feather HUZZAH ESP8266 | Adafruit Learning System
Ich habe es so verkabelt: 
Die LED 0 ist unter dem R rechts unten der Matrix (uh[R]).
Mein Code ist:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
#define PIN 14
Adafruit_NeoPixel pixels(64, PIN, NEO_GRB + NEO_KHZ800);
void fuenf (void) {
pixels.setPixelColor(102, 255, 255, 255);
pixels.setPixelColor(101, 255, 255, 255);
pixels.setPixelColor(100, 255, 255, 255);
pixels.setPixelColor(99, 255, 255, 255);
}
void zehn (void) {
pixels.setPixelColor(98, 255, 255, 255);
pixels.setPixelColor(97, 255, 255, 255);
pixels.setPixelColor(96, 255, 255, 255);
pixels.setPixelColor(95, 255, 255, 255);
}
void zwanzig (void) {
pixels.setPixelColor(94, 255, 255, 255);
pixels.setPixelColor(93, 255, 255, 255);
pixels.setPixelColor(92, 255, 255, 255);
pixels.setPixelColor(91, 255, 255, 255);
pixels.setPixelColor(90, 255, 255, 255);
pixels.setPixelColor(89, 255, 255, 255);
pixels.setPixelColor(88, 255, 255, 255);
}
/*void drei (void) {
pixels.setPixelColor(, 255, 255, 255);
pixels.setPixelColor(, 255, 255, 255);
pixels.setPixelColor(, 255, 255, 255);
pixels.setPixelColor(, 255, 255, 255);
}*/
void viertel (void) {
pixels.setPixelColor(83, 255, 255, 255);
pixels.setPixelColor(82, 255, 255, 255);
pixels.setPixelColor(81, 255, 255, 255);
pixels.setPixelColor(80, 255, 255, 255);
pixels.setPixelColor(79, 255, 255, 255);
pixels.setPixelColor(78, 255, 255, 255);
pixels.setPixelColor(77, 255, 255, 255);
}
void vor (void) {
pixels.setPixelColor(76, 255, 255, 255);
pixels.setPixelColor(75, 255, 255, 255);
pixels.setPixelColor(74, 255, 255, 255);
}
void nach (void) {
pixels.setPixelColor(69, 255, 255, 255);
pixels.setPixelColor(68, 255, 255, 255);
pixels.setPixelColor(67, 255, 255, 255);
pixels.setPixelColor(66, 255, 255, 255);
}
void halb (void) {
pixels.setPixelColor(65, 255, 255, 255);
pixels.setPixelColor(64, 255, 255, 255);
pixels.setPixelColor(63, 255, 255, 255);
pixels.setPixelColor(62, 255, 255, 255);
}
void elf (void) {
pixels.setPixelColor(60, 255, 255, 255);
pixels.setPixelColor(59, 255, 255, 255);
pixels.setPixelColor(58, 255, 255, 255);
}
void fuenfh (void) {
pixels.setPixelColor(58, 255, 255, 255);
pixels.setPixelColor(57, 255, 255, 255);
pixels.setPixelColor(56, 255, 255, 255);
pixels.setPixelColor(55, 255, 255, 255);
}
void eins (void) {
pixels.setPixelColor(54, 255, 255, 255);
pixels.setPixelColor(53, 255, 255, 255);
pixels.setPixelColor(52, 255, 255, 255);
pixels.setPixelColor(51, 255, 255, 255);
}
void ein (void) {
pixels.setPixelColor(54, 255, 255, 255);
pixels.setPixelColor(53, 255, 255, 255);
pixels.setPixelColor(52, 255, 255, 255);
}
void zwei (void) {
pixels.setPixelColor(47, 255, 255, 255);
pixels.setPixelColor(46, 255, 255, 255);
pixels.setPixelColor(45, 255, 255, 255);
pixels.setPixelColor(44, 255, 255, 255);
}
void drei (void) {
pixels.setPixelColor(43, 255, 255, 255);
pixels.setPixelColor(42, 255, 255, 255);
pixels.setPixelColor(41, 255, 255, 255);
pixels.setPixelColor(40, 255, 255, 255);
}
void vier (void) {
pixels.setPixelColor(36, 255, 255, 255);
pixels.setPixelColor(35, 255, 255, 255);
pixels.setPixelColor(34, 255, 255, 255);
pixels.setPixelColor(33, 255, 255, 255);
}
void sechs (void) {
pixels.setPixelColor(32, 255, 255, 255);
pixels.setPixelColor(31, 255, 255, 255);
pixels.setPixelColor(30, 255, 255, 255);
pixels.setPixelColor(29, 255, 255, 255);
pixels.setPixelColor(28, 255, 255, 255);
}
void acht (void) {
pixels.setPixelColor(25, 255, 255, 255);
pixels.setPixelColor(24, 255, 255, 255);
pixels.setPixelColor(23, 255, 255, 255);
pixels.setPixelColor(22, 255, 255, 255);
}
void sieben (void) {
pixels.setPixelColor(21, 255, 255, 255);
pixels.setPixelColor(20, 255, 255, 255);
pixels.setPixelColor(19, 255, 255, 255);
pixels.setPixelColor(18, 255, 255, 255);
pixels.setPixelColor(17, 255, 255, 255);
pixels.setPixelColor(16, 255, 255, 255);
}
void zwoelf (void) {
pixels.setPixelColor(15, 255, 255, 255);
pixels.setPixelColor(14, 255, 255, 255);
pixels.setPixelColor(13, 255, 255, 255);
pixels.setPixelColor(12, 255, 255, 255);
pixels.setPixelColor(11, 255, 255, 255);
}
void zehnh (void) {
pixels.setPixelColor(10, 255, 255, 255);
pixels.setPixelColor(9, 255, 255, 255);
pixels.setPixelColor(8, 255, 255, 255);
pixels.setPixelColor(7, 255, 255, 255);
}
void neun (void) {
pixels.setPixelColor(7, 255, 255, 255);
pixels.setPixelColor(6, 255, 255, 255);
pixels.setPixelColor(5, 255, 255, 255);
pixels.setPixelColor(4, 255, 255, 255);
}
void uhr (void) {
pixels.setPixelColor(2, 255, 255, 255);
pixels.setPixelColor(1, 255, 255, 255);
pixels.setPixelColor(0, 255, 255, 255);
}
#include <NTPClient.h>
// change next line to use with another board/shield
#include <ESP8266WiFi.h>
//#include <WiFi.h> // for WiFi shield
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
#include <WiFiUdp.h>
const char *ssid = "******";
const char *password = "******
WiFiUDP ntpUDP;
// You can specify the time server pool and the offset (in seconds, can be
// changed later with setTimeOffset() ). Additionaly you can specify the
// update interval (in milliseconds, can be changed using setUpdateInterval() ).
NTPClient timeClient(ntpUDP, "ch.pool.ntp.org", 3600, 60000); // für Zeitverschiebung vileicht offset verändern (hier 7200) (3600 im Februar/winter)
int m;
int h;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
pixels.begin();
}
void loop() {
pixels.clear();
timeClient.update();
zeitaktualisieren();
Serial.print(timeClient.getHours());
Serial.print(":");
Serial.print(timeClient.getMinutes());
Serial.println();
zeitauswerten();
pixels.show();
delay(100);
}
void zeitauswerten() {
if(m > 4 && m < 10){ //Fünf nach
fuenf();
nach();
}
if(m > 9 && m < 15){ //Zehn nach
zehn();
nach();
}
if(m > 14 && m < 20){ //Viertel nach
viertel();
nach();
}
if(m > 19 && m < 25){ //Zwanzig nach
zwanzig();
nach();
}
if(m > 24 && m < 30){ //Fünf vor halb
fuenf();
halb();
vor();
}
if(m > 29 && m < 35){ //halb
halb();
}
if(m > 34 && m < 40){ //Fünf nach halb
fuenf();
halb();
nach();
}
if(m > 39 && m < 45){ //Zwanzig vor
zwanzig();
vor();
}
if(m > 44 && m < 50){ //Viertel vor
viertel();
vor();
}
if(m > 49 && m < 55){ //Zehn vor
zehn();
vor();
}
if(m > 54 && m < 0){ //Fünf vor
fuenf();
vor();
}
if(h == 12 || h == 0) { // Zwoelf
}
if(h == 13) { // Eins
}
if(h == 13 && m == 0) { // Ein
}
if(h == 1 && m == 0) { // Ein
}
if(h == 14 || h == 2) { // Zwei
}
if(h == 15 || h == 3) { // Drei
}
if(h == 16 || h == 4) { // Vier
}
if(h == 17 || h == 5) { // Fuenf
}
if(h == 18 || h == 6) { // Sechs
}
if(h == 19 || h == 7) { // Sieben
}
if(h == 20 || h == 8) { // Acht
}
if(h == 21 || h == 9) { // Neun
}
if(h == 22 || h == 10) { // Zehn
}
if(h == 23 || h == 11) { // Elf
}
if(m >= 0 && m < 5) { // Uhr
}
}
void zeitaktualisieren(){
m = timeClient.getMinutes();
h = timeClient.getHours();
}
Danke fürs Helfen
Moinsen,
hab mich dem Script mal angenommen . Konnte es leider nur auf einer 8x8 Matrix testen, aber dort läuft es - soweit ich mit der Anzahl der LEDs komme.
Du musst bitte ganz oben im Sketch evtl. PIN und die NUM_LEDS anpassen. Ich habe im Sketch alles kommentiert, damit du weißt was du wo eintragen musst.
Auf dem seriellen Monitor kannst du jetzt nachvollziehen wie die Uhrzeit gebildet wurde sprich "Es ist Zwölf Uhr" und darunter steht die Zeit vom NTP. Ich kann dir nur empfehlen, wenn ein Programm mal klemmt mit Serial.print() zu arbeiten und zu sehen wie das Programm tickt.
Der Bereich, der die Stunden bestimmt, könnte noch gekürzt werden. Anstatt if könnte man switch verwenden, dann wird es nochmal wieder kürzer.
Da ich mecker von der Zeichen-Begrenzung bekommen habe, musste ich das Sketch in den Anhang packen.
Wenn Du noch fragen hast, immer gern :).
Liebe Grüße,
Björn
Woerteruhr_Test.ino (9.16 KB)
Hi
Vielen Dank fürs Helfen, es läuft jetzt alles(neben ein paar Wackelkontakten bei den LEDs).
LG
Elektrocrafter10
Hallo Elektrocrafter10,
danke für die Rückmeldung - freut mich das es jetzt läuft.
Liebe Grüße,
Björn