Skocz do zawartości

Miganie linii przy odświeżaniu ekranu zegar


Celeron

Pomocna odpowiedź

robię sobie taki zegarek do motocykla mam już zegar i temperaturę i chciałbym żeby gdy podnóżka się rozkłada była wyświetlona litera "p" a kiedy będzie włączony luz był "N" wszystko na jednym wyświetlaczu ssd1306 OLED 0,96 cala jak mówiłem godzina i temperatura działa lecz gdy włączę switcha z podnóżkom wyświetla się P lecz co chwile miga bo wyświetlacz musi się odświerzyć do zegarka i tu moje pytanie jak zrobić to na jednym wyświetlaczu żeby godzina była ok i żeby litera P nie migała dodam też że tan sam program zastosuje też do luzu czyli N

jak już tu piszę to mam też pytanie bo jako że mamy przestawiany czas to 2 razy w roku trzeba zmienić godzinę i chciałem też zrobić 1 albo 2 switche do przesuwania godziny i minuty lecz o ile mogę zczytać myRTC to nie mogę do niego dodać liczby i tu moje pytanie czy da się to jakoś prosto zrobić 

i też następne pytanko jak zastąpić na tej wyświetlanej godzinie żeby zamiast 0 było O bo na wyświetlaczu zero jest przekreślone i słabo to wygląda 

poniżej kod

#include <SPI.h>
#include <OneWire.h> 
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <virtuabotixRTC.h> //Libraries needed
#include <DallasTemperature.h>
Adafruit_SSD1306 display(4);
OneWire oneWire(2);
virtuabotixRTC myRTC(5, 6, 7);
DallasTemperature sensors(&oneWire);


//--------------------------------------------
void setup() {
 Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC,0x3C);
 sensors.begin();

 //myRTC.setDS1302Time(00, 30,9, 00, 18, 5, 2021);
display.clearDisplay();
pinMode(3,INPUT_PULLUP);  
}
//--------------------------------------------
void loop() {

 int temperatura = (sensors.getTempCByIndex(0));
 sensors.requestTemperatures();
  myRTC.updateTime();
display.setTextSize(2.7);
display.setTextColor(WHITE); 
display.setCursor(10,4);
  if (myRTC.hours <10)
  {
display.print ("0");
  }
 display.print(myRTC.hours);
 display.print(":");
  if (myRTC.minutes <10)
  {
    display.print ("0");
  }
display.print(myRTC.minutes);
display.setTextSize(1.7);
display.setCursor(20,23);
display.print(temperatura);
 display.drawRect (33, 23, 4, 3,WHITE);
display.setCursor(32,23);
display.print(" C");
display.display(); 

 
 if (digitalRead(3) == LOW){
    display.setTextSize(2);
display.setCursor(75,18);
display.print("P");  
display.display(); }

delay(500);
display.clearDisplay();
}

 

Edytowano przez Celeron
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.