10-03-2017, 22:35
Witam.
Postanowiłem zrobić sobie taki projekcik jak zegarek z termometrem.
Użyłem do tego projektu Arduino Nano, DS1307, DS18B20 oraz wyświetlacz Oled.
Problemem jest wskazanie sekund. A mianowicie czasem pokazuje sekunda po sekundzie, ale zazwyczaj pokazuje co drugą sekundę a wskazania sekund są nie metryczne. Czas wyświetlenia między zmianami nieraz trwa więcej niż sekundę a czasem ułamek sekundy.
Proszę o sprawdzenie kodu i wskazanie błędu.
Postanowiłem zrobić sobie taki projekcik jak zegarek z termometrem.
Użyłem do tego projektu Arduino Nano, DS1307, DS18B20 oraz wyświetlacz Oled.
Problemem jest wskazanie sekund. A mianowicie czasem pokazuje sekunda po sekundzie, ale zazwyczaj pokazuje co drugą sekundę a wskazania sekund są nie metryczne. Czas wyświetlenia między zmianami nieraz trwa więcej niż sekundę a czasem ułamek sekundy.
Proszę o sprawdzenie kodu i wskazanie błędu.
Kod PHP:
#include <Wire.h>
#include <DS1307.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
DS1307 clock;
RTCDateTime dt;
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup()
{
clock.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(25,0);
display.println("inicjalizacja");
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(25,15);
display.println("DS 1307");
display.display();
sensors.begin();
if (!clock.isReady())
{
clock.setDateTime(__DATE__, __TIME__);
}
delay(2000);
}
void loop()
{
dt = clock.getDateTime();
sensors.requestTemperatures();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("TEMPERATURA =");
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(84,0);
display.print(sensors.getTempCByIndex(0));
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(30,25);
display.print(dt.day);
display.print(" - ");
display.print(dt.month);
display.print(" - ");
display.print(dt.year);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(20,9);
display.print(dt.hour);
display.print(":");
display.print(dt.minute);
display.print(":");
display.print(dt.second);
display.display();
delay(1000);
}