salve a tutti sono uno studente al quinto anno e sto preparando un progetto per l’esame di maturità (faccio un istituto professionale), sto realizzando un orologio con dei neopixel ring uno da 60 dove scorrono minuti e secondi ed uno interno da 24 per le ore, la mia domanda riguarda proprio quest’ultimo perché il mio obiettivo sarebbe il led che si sposta ogni 30 minuti.
leds[((now.hour()/2)+60)] = hourColor; FastLED.show();
ho provato in questo modo ma non ottengo il risultato desiderato, chiedo il vostro aiuto ogni consiglio e ben accetto.
in fodo al post ci sarà anche il codice completo utilizzato.
grazie mille, Antonio.
Hi everyone, I’m a fifth year student and I’m preparing a project for the final exam (I’m at a professional institute), I’m making a clock with neopixel rings, one of 60 where the minutes and seconds flow and an internal one of 24 for the hours, my question concerns precisely the latter because my goal would be the LED that moves every 30 minutes.
leds[((now.hour()/2)+60)] = hourColor; FastLED.show();
I tried this way but I don’t get the desired result, I ask for your help, any advice is welcome.
at the bottom of the post there will also be the complete code used.
thank you very much, Antonio.
#include "RTClib.h"
#include <FastLED.h>
#include <Wire.h>
/********** RTC parameters ********************************/
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
char buffer[200] ="";
/********** FastLed parameters ****************************/
#define LED_PIN 2
#define NUM_LEDS 84
#define BRIGHTNESS 180
#define LED_TYPE WS2811
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];
/********** Clock Parameter *******************************/
#define hourColor CRGB::OrangeRed
#define minuteColor CRGB::DarkBlue
#define secondColor CRGB::DarkGreen
/**********************************************************/
void setup() {
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
delay( 1000 ); // power-up safety delay
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness( BRIGHTNESS );
for( int i = 0; i < NUM_LEDS; ++i) { leds[i] = hourColor; FastLED.show(); delay(20); }
for( int i = 0; i < NUM_LEDS; ++i) { leds[i] = minuteColor; FastLED.show(); delay(20); }
for( int i = 0; i < NUM_LEDS; ++i) { leds[i] = secondColor; FastLED.show(); delay(20); }
delay(500);
for( int i = 0; i < NUM_LEDS; ++i) { leds[i] = CRGB::CRGB::Black; FastLED.show(); delay(20);}
delay(1000);
leds[0] = hourColor; FastLED.show();
leds[15] = hourColor; FastLED.show();
leds[30] = hourColor; FastLED.show();
leds[45] = hourColor; FastLED.show();
leds[60] = minuteColor; FastLED.show();
leds[72] = minuteColor; FastLED.show();
delay(5000);
}
void loop() {
DateTime now = rtc.now();
Serial.print("Current time: ");
sprintf(buffer, "%02d/%02d/%04d (", now.day(), now.month(), now.year());
Serial.print(buffer);
sprintf(buffer, "%s", daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(buffer);
sprintf(buffer, ") %02d:%02d:%02d", now.hour(), now.minute(), now.second());
Serial.print(buffer);
for( int i = 0; i < NUM_LEDS; ++i) { leds[i] = CRGB::CRGB::Black; }
leds[now.second()] = secondColor; FastLED.show();
leds[now.minute()] = minuteColor; FastLED.show();
// leds[(now.hour()+60)] = hourColor; FastLED.show();
leds[((now.hour()/2)+60)] = hourColor; FastLED.show();
Serial.println();
delay(500);
}
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese … quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana … la prossima volta potrebbe venire direttamente eliminato.
Grazie.
A quanto detto da UKHeliBob aggiungo …
… cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (… e, per evitare future possibili discussioni/incomprensioni, prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL’APPOSITA DISCUSSIONE (… quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser … vi impedisce di capire la lingua della sezione dove andate a scrivere …
chiedo umilmente scusa, é la prima volta che utilizzo il forum
***** l’articolo pubblicato è ritenuto affidabile e di qualità*****
Visita il sito e gli articoli pubblicati cliccando sul seguente link