22-01-2019, 21:58
Cześć wszystkim!
Mam problem z prostym kodem. Jest to ulepszona wersja stacji pogodowej a raczej wyczesanego budzika. Projekt ma wyświetlać temperaturę z 2 czujników DS18B20, wyświetlac godzinę oraz datę i sterować przekaźnikiem przy pomocy pilota IR. Mam odbiornik TSOP2236. Tu cały kod:
Tu daje kod do obsługi TSOP2236:
A tu do obsługi ds18b20:
PS. Jeśli ktoś ma chwilkę i zna się to może odpowiedzieć na mojego posta dotyczącego dziwnych znaczków na LCD
Pozdrawiam!
Mam problem z prostym kodem. Jest to ulepszona wersja stacji pogodowej a raczej wyczesanego budzika. Projekt ma wyświetlać temperaturę z 2 czujników DS18B20, wyświetlac godzinę oraz datę i sterować przekaźnikiem przy pomocy pilota IR. Mam odbiornik TSOP2236. Tu cały kod:
Kod:
#include <RTClib.h>//Dodawanie bibliotek
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
#define diodaPin 10
int diodaStatus = LOW;
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
int IRpin=7;
int prz = 10;
boolean stan=0;
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
pinMode (IRpin, INPUT);
pinMode (prz, OUTPUT);
irrecv.enableIRIn();
pinMode(diodaPin, OUTPUT);
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 (irrecv.decode(&results)) {
switch (results.value) {
case 0xFF21DE:
diodaStatus = ~diodaStatus;
digitalWrite(diodaPin, diodaStatus);
delay(250);
break;
}
irrecv.resume();
}
if (digitalRead(IRpin) == LOW) {
delay (20);
stan=!stan;
digitalWrite(prz, stan) ;
while (digitalRead(IRpin)==LOW) ;
delay(20);
}
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(" ");
}
Tu daje kod do obsługi TSOP2236:
Kod:
#include <IRremote.h>
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
#define diodaPin 10
int diodaStatus = LOW;
void setup() {
irrecv.enableIRIn();
pinMode(diodaPin, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
switch (results.value) {
case 0xFF21DE:
diodaStatus = ~diodaStatus;
digitalWrite(diodaPin, diodaStatus);
delay(250);
break;
}
irrecv.resume();
}
}
Kod:
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(A3); //Podłączenie do A5
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki
void setup(void) {
Serial.begin(9600);
sensors.begin(); //Inicjalizacja czujnikow
}
void loop(void) {
sensors.requestTemperatures(); //Pobranie temperatury czujnika
Serial.print("Pierwszy: ");
Serial.println(sensors.getTempCByIndex(0)); //Wyswietlenie informacji
Serial.print("Drugi: ");
Serial.println(sensors.getTempCByIndex(1)); //Wyswietlenie informacji
delay(500);
}
Pozdrawiam!