Witam serdecznie,
zamarzył mi się termometr na płytce nano.
Chciałbym to wszystko upakować w małą obudowę, wyświetlić na OLED 0,96 SD1306 (mono) i zasilić baterią 9V.
..niestety mam problem z kodem... i chyba z zasileniem, a raczej wytrzymałością baterii - ale o tym na końcu.
Zależy mi na fajnej czcionce i ramce wokół wyświetlacza lecz poniższy kod mi nie działa - nie umiem zmusić programu do współpracy biblioteki u8glib z ds18b20. Jeśli to możliwe, swoją drogą, chciałbym aby była rozdzielczość 12 bit ale wyświetlenie w formacie np: 33.3).
Znajdzie się jakaś pomocna dłoń i poprawi poniższy kod ? (nie zdziwię się jak trzeba by od nowa napisać :/ )
Co do zasilania testowałem już prosty program i niestety świeża bateria Duracel 9V padła po 22 godzinach Czy to normalne ?
edit:
Próbowałem jeszcze takich wypocin (jakimś cudem się kompiluje ale nie działa):
Z góry dziękuję za pomoc !
Pzdr.
zamarzył mi się termometr na płytce nano.
Chciałbym to wszystko upakować w małą obudowę, wyświetlić na OLED 0,96 SD1306 (mono) i zasilić baterią 9V.
..niestety mam problem z kodem... i chyba z zasileniem, a raczej wytrzymałością baterii - ale o tym na końcu.
Zależy mi na fajnej czcionce i ramce wokół wyświetlacza lecz poniższy kod mi nie działa - nie umiem zmusić programu do współpracy biblioteki u8glib z ds18b20. Jeśli to możliwe, swoją drogą, chciałbym aby była rozdzielczość 12 bit ale wyświetlenie w formacie np: 33.3).
Znajdzie się jakaś pomocna dłoń i poprawi poniższy kod ? (nie zdziwię się jak trzeba by od nowa napisać :/ )
Kod:
#include <SPI.h>
#include <Wire.h>
#include <OneWire.h>
#include <DS18B20.h>
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
const byte ONEWIRE_PIN = 2;
byte sensorAddress[8] = {0x28, 0x1E, 0x17, 0xEA, 0x5, 0x0, 0x0, 0x1C};
OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void draw(void) {
u8g.setFont(u8g_font_fur35n);
u8g.drawStr( 4, 40, "36.6");
u8g.setFont(u8g_font_fur11);
u8g.drawStr( 10, 59, "Stopni Celsjusa");
u8g.drawFrame(0,0,128,64);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0X3C);
sensors.begin();
}
void loop() {
delay(50);
sensors.request(sensorAddress);
while(!sensors.available());
float temperature = sensors.readTemperature(sensorAddress);
}
Co do zasilania testowałem już prosty program i niestety świeża bateria Duracel 9V padła po 22 godzinach Czy to normalne ?
edit:
Próbowałem jeszcze takich wypocin (jakimś cudem się kompiluje ale nie działa):
Kod:
#include <SPI.h>
#include <Wire.h>
#include <OneWire.h>
#include <Adafruit_SSD1306.h>
#include <DS18B20.h>
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
const byte ONEWIRE_PIN = 2;
byte sensorAddress[8] = {0x28, 0x1E, 0x17, 0xEA, 0x5, 0x0, 0x0, 0x1C};
OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
void draw(void) {
u8g.setFont(u8g_font_fur11);
u8g.drawStr( 10, 59, "Stopni Celsjusa");
u8g.drawFrame(0, 0, 128, 64);
}
void setup(void) {
display.begin(SSD1306_SWITCHCAPVCC, 0X3C);
sensors.begin();
u8g.begin();
}
void loop(void) {
delay(50);
sensors.request(sensorAddress);
while (!sensors.available());
float temperature = sensors.readTemperature(sensorAddress);
u8g.setFont(u8g_font_fur35n);
display.setCursor(4, 40);
u8g.print(temperature);
}
Z góry dziękuję za pomoc !
Pzdr.