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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.