Treker (Damian Szymański) Kwiecień 20, 2020 Udostępnij Kwiecień 20, 2020 @olekmi skompilowałem przed chwilą poniższy kod z kursu i wszystko zadziałało poprawnie: #include "DHT.h" #define DHT11_PIN 2 DHT dht; void setup() { Serial.begin(9600); dht.setup(DHT11_PIN); } void loop() { //Pobranie informacji o wilgotnosci int wilgotnosc = dht.getHumidity(); Serial.print(wilgotnosc); Serial.print("%RH | "); //Pobranie informacji o temperaturze int temperatura = dht.getTemperature(); Serial.print(temperatura); Serial.println("*C"); delay(1000); //Odczekanie wymaganego czasu } Pokaż z ciekawości zawartość swojego pliku DHT.h - znajdziesz go w katalogu z zainstalowaną biblioteką. 1
olekmi Maj 1, 2020 Udostępnij Maj 1, 2020 @Treker dzięki wielkie za pomoc, już sobie poradziłem Mam pytanie czy można ustawić zakres pracy w enkoderze tak by po osiągnięciu danej wartości wyświetlił dana wartość np tempertura na ekranie LCD. Czy muszę napisać kod menu. Jeżeli tak to w jaki sposób bym mógł to zrobić?
Treker (Damian Szymański) Maj 2, 2020 Udostępnij Maj 2, 2020 21 godzin temu, olekmi napisał: dzięki wielkie za pomoc, już sobie poradziłem @olekmi podziel się proszę rozwiązaniem problemu - na pewno przyda się jeszcze komuś w przyszłości 21 godzin temu, olekmi napisał: Mam pytanie czy można ustawić zakres pracy w enkoderze tak by po osiągnięciu danej wartości wyświetlił dana wartość np tempertura na ekranie LCD. Czy muszę napisać kod menu. Jeżeli tak to w jaki sposób bym mógł to zrobić? O jakim enkoderze mowa? W tym kursie nie używamy takiego komponentu, ciężko wiec o jakąś konkretną poradę, bo nie wiem co dokładnie masz przed sobą
michalt38 Maj 31, 2020 Udostępnij Maj 31, 2020 (edytowany) Używając jednego czujnika DHT-11 mogłem odczytywać nowe wartości co 1 sekundę a nawet krócej. Podłączając inny czujnik DHT-11 dostaję NaN co drugi pomiar, działa dopiero przy próbkowaniu co najmniej co 1,2 sekundę. Dlaczego na innym czujniku wygląda to inaczej? Edytowano Maj 31, 2020 przez michalt38
Gieneq Czerwiec 1, 2020 Udostępnij Czerwiec 1, 2020 @michalt38 mógłbyś wrzucić zdjęcie swojego układu i kod?
leh1992 Lipiec 10, 2020 Udostępnij Lipiec 10, 2020 Moja wersja stacji pogodowej z wyświetlaniem wyników na lcd: #include <OneWire.h> #include <DallasTemperature.h> //Biblioteka termometru cyfrowego OneWire oneWire(A5); //podłącznie termometru do A5 DallasTemperature sensors(&oneWire); //przekazanie informacji do biblioteki #include "DHT.h" DHT dht; //biblioteka czujnika wilgoci #include <LiquidCrystal.h> //biblioteka lcd LiquidCrystal lcd(8, 9, 10, 11, 12, 13); //inf. o wyswietlaczu void setup() { // put your setup code here, to run once: Serial.begin(9600); dht.setup(2); //czujnik wilgoci pin 2 sensors.begin(); //inicjalizacja termometru lcd.begin(16, 2); //inicjalizacja lcd lcd.clear(); } void loop() { // put your main code here, to run repeatedly: sensors.requestTemperatures(); //zapytanie o odczyt termometru float temperatura = sensors.getTempCByIndex(0); //zapisanie odczytu jako stałej int wilgotnosc = dht.getHumidity(); //zapisanie odczytu jako stałej int odczyt = analogRead(A0); int zachmurzenie = map(odczyt, 0, 1024, 1, 5); lcd.setCursor(0, 0); lcd.print("Temperatura"); lcd.setCursor(0, 1); lcd.print(temperatura); lcd.setCursor(4, 1); lcd.print((char)223); lcd.setCursor(5, 1); lcd.print("C"); //wyświetlenie temperatury powietrza delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Wilgotnosc"); lcd.setCursor(0, 1); lcd.print(wilgotnosc); lcd.setCursor(3, 1); lcd.print("%RH"); //wyswietlenie wilgotnosci powietrza delay(2000); lcd.clear(); switch(zachmurzenie) { //wyswietlenie inf. o zachmurzeniu case 1: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Calkowite"); break; case 2: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Duze"); break; case 3: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Umiarkowane"); break; case 4: lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Male"); break; lcd.setCursor(0, 0); lcd.print("Zachmurzenie"); lcd.setCursor(0, 1); lcd.print("Bezchmurnie"); break; } delay(2000); lcd.clear(); } 2
Gieneq Lipiec 13, 2020 Udostępnij Lipiec 13, 2020 (edytowany) @leh1992 super tak trzymaj! Ewentualnie mógłbyś wykorzystać pomiar temperatury czujnika DHT11 i porównać pomiary z Dallasem, ciekawe jaka będzie różnica. Edytowano Lipiec 13, 2020 przez Gieneq
emiemi8 Sierpień 29, 2021 Udostępnij Sierpień 29, 2021 Cześć Tak prezentuje się moja stacja pogody: Kod: //biblioteki #include <DHT.h> //wilgotnosc #include <OneWire.h> //temperatura #include <DallasTemperature.h> #include <LiquidCrystal.h> //wyswietlacz #define DHT11_PIN 10 #define termometr A4 #define zachmurzenie A5 #define czuwanie 11 DHT dht; //wilgotnosc OneWire oneWire(termometr); //temperatura i oneWire DallasTemperature sensors(&oneWire); LiquidCrystal lcd(4,5,6,7,8,9); //wyswietlacz volatile int tryb = 1; int wilgotnosc=0; int wilgotnosc2=0; int temperatura=0; int zachmurzenie1=0; int zachmurzenie2=0; int maxT = sensors.getTempCByIndex(0); int minT = sensors.getTempCByIndex(0); int maxH = dht.getHumidity(); int minH = 99; void setup() { Serial.begin(9600); dht.setup(DHT11_PIN); //wilgotnosc sensors.begin(); //temperatura lcd.begin(16,2); //wyswietlacz lcd.setCursor(0,0); pinMode(3, INPUT_PULLUP); pinMode(2, INPUT_PULLUP); pinMode(czuwanie, OUTPUT); digitalWrite(czuwanie, HIGH); attachInterrupt(digitalPinToInterrupt(2), maxMin, LOW); //przerwania do przyciskow attachInterrupt(digitalPinToInterrupt(3), podswietlenie, LOW); } void loop() { switch(tryb) { case 1: //czuwanie obliczenia(); lcd.clear(); lcd.print("Stacja pogody"); lcd.setCursor(0,1); lcd.print("Wcisnij przycisk"); digitalWrite(czuwanie, LOW); break; case 2: //podswietlenie digitalWrite(czuwanie, HIGH); lcd.clear(); lcd.setCursor(0,0); lcd.print("Stacja pogody"); delay(2000); lcd.clear(); lcd.print(temperatura); lcd.setCursor(2,0); lcd.print("^C"); lcd.setCursor(6,0); lcd.print(wilgotnosc); lcd.setCursor(8,0); lcd.print("%RH"); lcd.setCursor(0,1); lcd.print("zachmurzenie"); lcd.setCursor(13,1); lcd.print(zachmurzenie2); lcd.setCursor(15,1); lcd.print("%"); delay(7000); tryb=1; break; case 3: //maxMin digitalWrite(czuwanie, HIGH); lcd.clear(); lcd.setCursor(0,0); lcd.print("Stacja pogody"); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Temperatura"); lcd.setCursor(0,1); lcd.print("max "); lcd.print(maxT); lcd.setCursor(8,1); lcd.print("min "); lcd.print(minT); delay(4000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Wilgotnosc"); lcd.setCursor(0,1); lcd.print("max "); lcd.print(maxH); lcd.setCursor(8,1); lcd.print("min "); lcd.print(minH); delay(4000); tryb=1; break; } } void maxMin() //funkcja do przerwania { tryb=3; } void podswietlenie() //funkcja do przerwania { tryb=2; } void obliczenia() { sensors.requestTemperatures(); //pobieranie temperatury temperatura=sensors.getTempCByIndex(0); wilgotnosc = dht.getHumidity(); //pobieranie wilgotnosci if (dht.getStatusString()=="OK") //jesli odebrano poprawne dane { wilgotnosc2=wilgotnosc; } delay(dht.getMinimumSamplingPeriod()); zachmurzenie1=analogRead(zachmurzenie); //obliczanie zachmurzenia if(zachmurzenie1>600) { zachmurzenie1=600; } else if(zachmurzenie1<100) { zachmurzenie1=100; } zachmurzenie2=map(zachmurzenie1, 100, 600, 99, 0); if(temperatura > maxT) //obliczanie max i min temperatury i wilgotnosci { maxT=temperatura; } if(temperatura<minT) { minT=temperatura; } if(wilgotnosc2>maxH) { maxH=wilgotnosc2; } if((wilgotnosc2<minH) && (wilgotnosc2!=0)) { minH=wilgotnosc2; } } Pozdrawiam 2
emiemi8 Sierpień 29, 2021 Udostępnij Sierpień 29, 2021 @SOYER oczywiście! To mój pierwszy większy projekt, który od zera stworzyłam samodzielnie więc tym większa radość 1
Oisyr Styczeń 10, 2022 Udostępnij Styczeń 10, 2022 Gdy próbowałem wgrać kod programu ekran pokazał : Błąd kompilacji dla płytki Arduino Uno. Wiecie jak temu zaradzić?
Gieneq Styczeń 11, 2022 Udostępnij Styczeń 11, 2022 @Oisyr powodów błędów kompilacji może być całe mnóstwo. Przekopiuj tu log to zobaczymy co dalej
Oisyr Styczeń 11, 2022 Udostępnij Styczeń 11, 2022 @Gieneq skopiowałem ze strony kursu i nie działa: #include "DHT.h" #define DHT11_PIN 2 DHT dht; void setup() { Serial.begin(9600); dht.setup(DHT11_PIN); } void loop() { //Pobranie informacji o wilgotnosci int wilgotnosc = dht.getHumidity(); Serial.print(wilgotnosc); Serial.print("%RH | "); //Pobranie informacji o temperaturze int temperatura = dht.getTemperature(); Serial.print(temperatura); Serial.println("*C"); delay(1000); //Odczekanie wymaganego czasu }
Gieneq Styczeń 11, 2022 Udostępnij Styczeń 11, 2022 (edytowany) @Oisyr a masz pobraną bibliotekę do czujników DHT? Poproszę żebyś wkleił log błędu. Edytowano Styczeń 11, 2022 przez Gieneq
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »