Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundację Dzieciom „Zdążyć z Pomocą”.
Więcej informacji na dug.net.pl/pomagamy/.

#1 2017-11-23 15:32:00

qba1707
Użytkownik
Zarejestrowany: 2011-08-16

atmega328p,rtc idht11

Witam.
Stworzyłem sobie układ, który wygląda jak na zdjęciach. Problem tkwi w tym, iz atmega nie trzyma żadnych ustawień(ustawiłem rtc, po zrestartowaniu godzina i data jest całkiem inna od tej ustawionej), za nic nie mogę zmusić dht11, aby wyświetlał temp. Co robię źle?Dodam,że program wgrany na arduino uno,l lub chińską podróbę arduino nano działa prawidłowo.
Kod wygląda

Kod:

#define przycisk1 9
#define przycisk2 10
#define d 3000
#include <LiquidCrystal_I2C.h>
#include <DS3231.h>
#include <DHT.h>
#include <Wire.h>
LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
DS3231 rtc(SDA, SCL);
float wilgotnosc;
float temperatura;
#define DHTPIN 8
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE); 

void setup() {
  Serial.begin(9600);
  lcd.begin(16,2);
  dht.begin ();
  rtc.begin ();
  lcd.noBacklight ();
  pinMode (przycisk1, INPUT_PULLUP);
  pinMode (przycisk2, INPUT_PULLUP);
  //rtc.setTime(11, 35, 10);
  //rtc.setDate(23, 11, 2017);
    
}

void loop() {
temperatura = dht.readTemperature();
wilgotnosc = dht.readHumidity();
  switch ((digitalRead(przycisk1) == LOW)) 
   {
    case 1:
      //instrukcje dla var=1
      lcd.clear();
      lcd.backlight();
      lcd.setCursor(0,0);
      lcd.print("TEMP");
      lcd.setCursor(0,1);
      lcd.print("WILG");
      lcd.setCursor(8,0);
      lcd.print(temperatura);
      lcd.print("*C");
      lcd.setCursor(8,1);
      lcd.print(wilgotnosc);
      lcd.print("%");
      delay(d);
      lcd.clear();
      break;
   default: 
        lcd.noBacklight();
      lcd.setCursor(0,0);
    lcd.print("Godz:   ");
     lcd.setCursor(0,1);
    lcd.print("Data:   ");
    lcd.setCursor(6,0);
    lcd.print(rtc.getTimeStr());
    lcd.setCursor(6,1);
    lcd.print(rtc.getDateStr());
         
   }
      if ((digitalRead(przycisk2) == LOW)) 
   {
    lcd.backlight();
  delay(1000);
     
  }
else if ((digitalRead(przycisk2) == HIGH))
{
  lcd.noBacklight ();
}
}

Offline

 

#2 2017-11-23 17:14:36

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: atmega328p,rtc idht11

Pokaż schemat.
BTW za ten delay(1000) to powinieneś dostać kopa w rzyć, i to centralnie w środek.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#3 2017-11-23 17:58:17

qba1707
Użytkownik
Zarejestrowany: 2011-08-16

Re: atmega328p,rtc idht11

schematu jako takiego nie mam, tu https://postimg.org/gallery/2wgut0pbw/ wsadziłem zdjęcia,aczkolwiek raczej pomocne nie będą...coś mi się tak wydaje.

BTW za ten delay(1000) to powinieneś dostać kopa w rzyć, i to centralnie w środek.

Dlaczego za krótko?

Ostatnio edytowany przez qba1707 (2017-11-23 18:00:18)

Offline

 

#4 2017-11-23 18:22:15

arecki
Użytkownik
Zarejestrowany: 2016-03-03

Re: atmega328p,rtc idht11

qba1707 napisał(-a):

schematu jako takiego nie mam, tu https://postimg.org/gallery/2wgut0pbw/ wsadziłem zdjęcia,aczkolwiek raczej pomocne nie będą...coś mi się tak wydaje.

BTW za ten delay(1000) to powinieneś dostać kopa w rzyć, i to centralnie w środek.

Dlaczego za krótko?

:D
W ogóle nie używać do takich zadań delay.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)