21-01-2019, 23:42
Cześć!
Robię stacje pogodową która będzie mierzyć ciśnienie(jeszcze nie mam czujnika) temperaturę oraz pokazywać godzinę(zapewne jeszcze sterować przekaźnikiem przez podczerwień). Mam część programu napisaną( 2 czujniki temperatury oraz czas). I mam problem w sumie 2. Po 1: przy 2 czujniku temperatury pokazuje się(za odczytem) w 2 polach znaczki (mogę podać kod jeśli to potrzebne) i nie wiem co z tym zrobić.
A po 2 mniej ważne jeśli ktoś wie proszę o pomoc. Chodzi o zegar RTC ds3231. Mianowicie czas ustawia się z komputera i nie da się go przestawić. Pomyślałem o przyciskach 5(dzień, miesiąc, rok, godzina, minuta). Niestety nie umiem tego zrobić. Proszę o pomoc. Tu daję kod stacji:
Robię stacje pogodową która będzie mierzyć ciśnienie(jeszcze nie mam czujnika) temperaturę oraz pokazywać godzinę(zapewne jeszcze sterować przekaźnikiem przez podczerwień). Mam część programu napisaną( 2 czujniki temperatury oraz czas). I mam problem w sumie 2. Po 1: przy 2 czujniku temperatury pokazuje się(za odczytem) w 2 polach znaczki (mogę podać kod jeśli to potrzebne) i nie wiem co z tym zrobić.
A po 2 mniej ważne jeśli ktoś wie proszę o pomoc. Chodzi o zegar RTC ds3231. Mianowicie czas ustawia się z komputera i nie da się go przestawić. Pomyślałem o przyciskach 5(dzień, miesiąc, rok, godzina, minuta). Niestety nie umiem tego zrobić. Proszę o pomoc. Tu daję kod stacji:
Kod:
#include <RTClib.h>//Dodawanie bibliotek
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
OneWire oneWire(A3); //Podłączenie do A3
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki
DateTime now;//Now to jest data i czas
char daysOfTheWeek[7][12] = {"Ndz", "Pon", "Wt", "Sr", "Czw", "Pt", "Sob"};
RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x3F, 16, 2); //Ustawianie wyswietlacza lcd
void showDate(void);//Ustawianie dayt czasu i dnia
void showTime(void);
void showDay(void);
int przycisk = 6;//Przycisk do wyswietlania temperatury
void setup ()
{
Serial.begin(9600);// Ustawianie transmisji UART
pinMode(przycisk, INPUT_PULLUP);//Ustawianie przycisku jako wejscie
lcd.begin();//Wloczenie lcd
lcd.backlight();//Wloczenie podswietlenia lcd
sensors.begin();//Wloczenie czujnikow
if (! rtc.begin()) //Jesli nie moze znalesc RTC wyswietl
{
Serial.println("Nie moge znalesc RTC");
while (1);
}
if (rtc.lostPower()) //Jesli RTC nie ma zasilania to wyswietl
{
Serial.println("RTc nie ma zasilania ustaw godzine!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop ()
{
if(digitalRead(przycisk)== LOW)//Jesli przycisk jest wcisniety
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp(W)");
lcd.setCursor(9, 0);
lcd.print("Temp(Z)");
sensors.requestTemperatures();
lcd.setCursor(1, 1);
lcd.print(sensors.getTempCByIndex(0));
lcd.setCursor(10, 1);
lcd.println(sensors.getTempCByIndex(1));
delay(4500);
lcd.clear();
}
now = rtc.now();//Ustawianie pętli
showDate();
showDay();
showTime();
}
void showDate()//Kod petli showDate
{
lcd.setCursor(0,0);
lcd.print(now.day());
lcd.print('-');
lcd.print(now.month());
lcd.print('-');
lcd.print(now.year());
}
void showDay()//Kod petli showDay
{
lcd.setCursor(11,0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
}
void showTime()//Kod petli showTime
{
lcd.setCursor(4,1);
lcd.print(now.hour());
lcd.print(':');
lcd.print(now.minute());
lcd.print(':');
lcd.print(now.second());
lcd.print(" ");
}