Skocz do zawartości

Błąd z wyświetlaniem cyfr na ekranie 7 seg. podłączonego do Arduino UNO


Wojtekkol9094

Pomocna odpowiedź

#include "SevSeg.h"
#include <OneWire.h>
#include <DallasTemperature.h>

#define LM35 A5
#define czerwony 11
#define niebieski 12

int temperaturapozytywnie = 0;
int temperatura = 0;

SevSeg sevseg; //Instantiate a seven segment controller object

OneWire oneWire(A5); //Podłączenie do A5
DallasTemperature sensors(&oneWire);
void setup() {
  byte numDigits = 2;   
  byte digitPins[] = {10, 9};
  byte segmentPins[] = {7, 5, 2, 4, 3, 8, 6};
  bool resistorsOnSegments = true; // Use 'true' if on digit pins
  byte hardwareConfig = N_TRANSISTORS; // See README.md for options
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sensors.begin();
  pinMode(niebieski, OUTPUT);
  pinMode(czerwony, OUTPUT);
  Serial.begin(9600);

}

void loop() {
  sensors.requestTemperatures();
  temperatura = (sensors.getTempCByIndex(0));
  if (temperatura >= 0) {
    temperaturapozytywnie = temperatura;
    digitalWrite(niebieski, LOW);
    digitalWrite(czerwony, HIGH);
    
  } else {
    temperaturapozytywnie = abs(temperatura);
    digitalWrite(niebieski, HIGH);
    digitalWrite(czerwony, LOW);
    
  }
  sevseg.setNumber(temperaturapozytywnie, 2);
  sevseg.refreshDisplay();
  Serial.println(temperaturapozytywnie);
  sevseg.refreshDisplay();
}

mam problem z takim kodem który polega na miganiu cyfr na ekranie 7 seg. 1 cyfra się świeci jakieś 500 ms gdy 2 się nie świeci i potem na odwrót. każda z cyfr jest dobra tylko to działa tak jakby ktoś dal duże opóźnienie w kod i w konsoli dane wyglądają dobrze.

Link do komentarza
Share on other sites

Poczytaj 2 wątki. W skrócie, trzeba ustawić tryb nieblokujący dla funkcji "requestTemperatures()", poczekać na dane z czujnika, odczytać je później kiedy będą gotowe odmierzając czas np. za pomocą millis().

Sprawdź też funkcję "setResolution()". Można ustawić mniejszą rozdzielczość dla wyniku, będzie mniej precyzyjny, ale szybciej.

https://forum.arduino.cc/t/how-to-read-temperature-values-while-the-stepper-motor-is-moving-non-blocking/1115846/7

https://forum.arduino.cc/t/solved-18b20-timing-problem/67817/8

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.