• 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
atmega328p i dht22 odczyt wartości z czujnika
#1
Witam.
Mam problem z odczytem wartosći z czujnika dht22 na atmedze, ciągle dostaje wynik 0. Juz od kilku dni się z tym męczę i jak narazie rezultatów brak.
To mój 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 12
#define DHTTYPE DHT22
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(17, 39, 30);
  //rtc.setDate(30, 05, 2018);

}

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(d);

  }
  else if ((digitalRead(przycisk2) == HIGH))
  {
    lcd.noBacklight ();
  }
}




Będę wdzięczny za każdą pomoc. Dodam, ze na arduino program działa bez najmniejszych przeszkód.
 
Odpowiedź
#2
Tak na pierwszy rzut oka, to wszystko okej z tym warunkiem switch?
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
Napisał 2 zdania, ale 3 trzeba się domyśleć. Skoro działa na Arduino to jest to pewnie jakiś export na czystego procka. Jaki procek i jakie czynności wykonałeś (bootloader itp), jaki masz schemat, zdjęcia. Domyślam się o co chodzi, ale pisać na pałę nie będę.
 
Odpowiedź
#4
                       
Procek to atmega328p, bootloader wgrywałem przez soft arduino i usbasp, schematu jako takiego nie mam, w załączeniu zdjęcia mam nadzieję, że będą chcociaż trochę pomocne, zapomniałem dodać o dziwnym zachowaniu "delay" mam ustawione na 3s,a w rzeczywistości trwa ok 30s.


Załączone pliki Miniatury
   
 
Odpowiedź
#5
(19-07-2018, 09:12)loki1707 napisał(a): zapomniałem dodać o dziwnym zachowaniu "delay" mam ustawione na 3s,a w rzeczywistości trwa ok 30s.

DIV8 odznacz.
 
Odpowiedź
#6
Problem z "delay" rozwiązany...dzięki, ale dht nadal nie działa :/
 
Odpowiedź
#7
(19-07-2018, 10:29)loki1707 napisał(a): Problem z "delay" rozwiązany...dzięki, ale dht nadal nie działa :/

Zdecyduj się na jedno forum, nie będę odpowiadał na kilku https://www.elektroda.pl/rtvforum/viewto...5#17337705
 
Odpowiedź
#8
Jakbyś wgrał bootloader prawidłowo to on ustawia również fuses tak by był jak np. w UNO. Nowe procki przylatują z Chin z ustawieniem na 1MHz i USBASP z Arduino nie działa, trzeba wybrać programator USBASP SLOW, potem po wgraniu bootloadera znowu przestawić na normalny, bo znowu SLOW nie działa z kwarcem 16MHz. Na wszelki wypadek odpal AVRLAB i sprawdź czy reszta (trzy liczby HEX przy fuse) jest tak samo jak przy wybranej płytce zdefiniowane w pliku boards.txt w katalogu Arduino. Kwarc możesz wpiąć bezpośrednio do nóżek procka bez tych kabelków i kondensatorków, takie pierdoły się dopieszcza na koniec, a na stykówce to i tak  ma znaczenie marginalne. Już lepiej dać 3 kondensatory przy VCC, AVCC i Aref. 
   
Jak już z fuses będzie OK, to sprawdź czy w ogóle #define DHTPIN 12 jest tą nóżką o której myślisz. Jak nie masz pinooutu atmegi/Arduino to w innym szkicu odpal sobie blinka na 12 i sprawdź, czy LED (z rezystorem oczywiście) podłączony do Twojej 12 działa. Zresztą akurat 12 jest mało szczęśliwym wyborem bo pewnie masz tu podłączony programator USBASP, który może bruździć, można użyć jakiegoś pośledniego pinu, np. 4-8,14-17 z ADC, jeśli ADC nie używasz.
Przy takiej plątaninie powodów niedziałania może być  jak ilość kabelków^2.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości