• 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
Dziwne znaczki na lcd I2C
#1
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:
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("    ");
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości