• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Temperatura + enkoder + oled
#6
Nie trzeba rezygnować z rozdzielczości by zejść z blokowaniem loop do 20ms, po prostu trzeba wyłączyć czekanie na zakończenie pomiaru, a odczyt pomiaru wykonać nie wcześniej niż po 750ms od zlecenia. W zaokrągleniu można to zrobić co 1 w odwrotnej kolejności, odczyt i zlecenie następnego pomiaru, powtórzyć za 1s, lub odczytać w parzystych a pytać w nieparzystych:
Kod:
// Include the libraries we need
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);


uint32_t czasTeraz,czasPoprzedni,tik=10, czas1,czas2,czas3,czas4,roznica,maximum,srednia;
uint8_t n10,fn10,sekundy,minuty,godziny,dni,nic;

bool fsekundy,fminuty,fgodziny,fdni;
void setup() {
//  sysClock(INT_OSC32);
  // put your setup code here, to run once:
Serial.begin(115200);
  sensors.begin();
sensors.setWaitForConversion(0);
}

void loop() {
  czas();
  // put your main code here, to run repeatedly:
if(fsekundy)
{
  if(sekundy%2==0)
  {
     sensors.requestTemperatures(); // Send the command to get temperatures
     delay(10);
     float odczyt=sensors.getTempCByIndex(0);
     Serial.print("Odczyt temperatury zaraz po zleceniu konwersji: ");
     Serial.println(odczyt);
  }
  else
  {
     float odczyt=sensors.getTempCByIndex(0);
     Serial.print("Odczyt temperatury w innej sekundzie: ");
     Serial.println(odczyt);
  }
}


}


void czas()
{
  czasTeraz=millis();
fn10=fsekundy=fminuty=fgodziny=fdni=0;
if((uint32_t)(czasTeraz-czasPoprzedni)>=tik)
{
  czasPoprzedni=czasTeraz;
  fn10=1;
  n10++;
  if(n10>=100)
  {
    n10=0;
    sekundy++;
    fsekundy=1;
     if (sekundy>=60)
    {
      sekundy=0;
      minuty++;
      fminuty=1;
      if (minuty>=60)
      {
        minuty=0;
        godziny++;
        fgodziny=1;
        if (godziny>=24)
        {
          godziny=0;
          fdni=1;
          dni++;
   
        }
      }
    }
  }
}
}
No ale trzeba jakoś liczyć upływający czas.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
Temperatura + enkoder + oled - przez mateuszfcg - 21-05-2020, 20:22
RE: Temperatura + enkoder + oled - przez Jarewa0606 - 21-05-2020, 20:56
RE: Temperatura + enkoder + oled - przez mateuszfcg - 21-05-2020, 21:32
RE: Temperatura + enkoder + oled - przez Jarewa0606 - 21-05-2020, 22:08
RE: Temperatura + enkoder + oled - przez mateuszfcg - 22-05-2020, 23:07
RE: Temperatura + enkoder + oled - przez kaczakat - 23-05-2020, 00:41

Skocz do:


Przeglądający: 1 gości