Komentator Napisano Luty 22, 2017 Udostępnij Napisano Luty 22, 2017 Termometry (analogowe i cyfrowe), które zostały opisane podczas poprzedniego odcinka kursu, to zdecydowanie najczęściej używane sensory do pomiaru warunków atmosferycznych.Drugim równie popularnym tematem jest pomiar wilgotności, który będzie możliwy dzięki DHT-11! UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.Przeczytaj całość »Poniżej znajdują się komentarze powiązane z tym wpisem. Cytuj Link do komentarza Share on other sites More sharing options...
leepa79 Luty 28, 2017 Udostępnij Luty 28, 2017 No to ja zacznę: Lampa i pasek LED sterowany pilotem z odczytem temp i wilgotności. Kierując się tylko informacjami z kursów (tak jak już to wcześniej wspominałem) poskładałem coś takiego. Podpatrzyłem jedynie jak podłączyć moduł przekaźnika RM0. A więc mamy tu odbiornik podczerwieni z kursu elektroniki II #7, stabilizator napięcia z kursu elektroniki #8, wyświetlacz z kursu arduino #7, tranzystor BC547 (sterowanie paskiem LED) zastosowany w lekcjach elektroniki i arduino, tak samo jak LED i przyciski, czujnik DS18B20 oraz czujnik DHT11 z ostatnich lekcji arduinoII. Część z czujnikiem DS18B20 robiłem chwilę przed lekcją w ramach przygotowania i jest trochę inaczej niż w kursie (to będę dziś poprawiał). Kod w wersji wczesnej alfa 🙂 cały czas modyfikowany - wczoraj przypisałem do przycisków włączanie i wyłączanie led i lampy tzn. włączanie i wyłączanie na jednym przycisku. Potem chcę coś zrobić z czasowym podświetleniem wyświetlacza (void ekranLed() ). Ten delay strasznie mrozi kod 🙂 Zabawa jest super. Chciałem wykorzystać pilot z kursu budowy robotów, ale tam do jednego przycisku przypisane są dwa kody, a to trochę mi skomplikowało myśl - więc poczekam jeszcze na stosowną lekcję. No i kod - proszę nie krzyczeć - w wolnych chwilach poprawiam go 😉 //ODCZYT KODOW Z PILOTA //#include <IRremote.h> //#define irPin 11 //IRrecv irrecv(irPin); //decode_results results; // //void setup() { // Serial.begin(9600); // irrecv.enableIRIn(); //} // //void loop() { // if (irrecv.decode(&results)) { // Serial.print("0x"); // Serial.println(results.value, HEX); // delay(250); // irrecv.resume(); // } //} // Czytnik numerów seryjnych czujników DS18B20 // //#include <OneWire.h> // //// Numer pinu cyfrowego do którego podłaczyłęś czujniki //const byte ONEWIRE_PIN = 2; // //OneWire onewire(ONEWIRE_PIN); // //void setup() //{ // while(!Serial); // Serial.begin(9600); //} // //void loop() //{ // byte address[8]; // // onewire.reset_search(); // while(onewire.search(address)) // { // if (address[0] != 0x28) // continue; // // if (OneWire::crc8(address, 7) != address[7]) // { // Serial.println(F("Błędny adres, sprawdz polaczenia")); // break; // } // // for (byte i=0; i<8; i++) // { // Serial.print(F("0x")); // Serial.print(address[i], HEX); // // if (i < 7) // Serial.print(F(", ")); // } // Serial.println(); // } // // while(1); //} #include <IRremote.h> //Dolaczenie bibloteki dla scalonego odbiornika IR //https://github.com/shirriff/Arduino-IRremote/zipball/master #include <LiquidCrystal.h> //Dołączenie bilbioteki wyswietlacza #include <OneWire.h> //Bibloteki dla termometru #include <DS18B20.h> #include "DHT.h"//Biblioteka dla czujnika wilg / temp #define irPin 2 //pin odbiornika IR #define diodaPin 9 //pin listwy LED #define diodaPin1 8 //pin kontrolki odbioru z pilota #define lampa 7 //pin sterowania lampa (przekaźnik RM0) #define PodLed 12 //podswietlenie wyswietlacza #define ONEWIRE_PIN 13 //pin termometru #define przON A0 #define przOFF A1 #define DHT11_PIN A3 //Pin czujnika wilg / temp IRrecv irrecv(irPin); decode_results results; DHT dht; byte address[8] = {0x28, 0x5, 0xD2, 0x4B, 0x8, 0x0, 0x0, 0x79}; //adres termometru OneWire onewire(ONEWIRE_PIN); //nie mam pojecia co - dla termometru DS18B20 sensors(&onewire); LiquidCrystal lcd(3, 4, 5, 6, 10, 11); //Informacja o podłączeniu nowego wyświetlacza int jasnosc = 0; // zmienna dla jasnosi listwy LED int lampaStatus = LOW; int diodaStatus = LOW; int lampaStatus1 = LOW; void setup() { Serial.begin(9600); irrecv.enableIRIn(); pinMode(diodaPin, OUTPUT); //deklaracja pinow wyjsciowych pinMode(diodaPin1, OUTPUT); pinMode(lampa, OUTPUT); pinMode (PodLed, OUTPUT); pinMode (przON, INPUT_PULLUP); pinMode (przOFF, INPUT_PULLUP); sensors.begin(); //znow cos dla termometru sensors.request(address); dht.setup(DHT11_PIN);//Czujnik wilgotnosci } void loop() { if (digitalRead(przON) == LOW) { //Jeśli przycisk wciśnięty lampaStatus = ~lampaStatus; digitalWrite(lampa, lampaStatus); //Włącz /wyłącz lampe delay(250); } if (digitalRead(przOFF) == LOW) { //Jeśli przycisk wciśnięty diodaStatus = ~diodaStatus; digitalWrite(diodaPin, diodaStatus); //Wyłącz /wyłącz ledy delay(250); } if (sensors.available()) { float temperature = sensors.readTemperature(address); Serial.print(temperature); Serial.println(F(" 'C")); sensors.request(address); } if (irrecv.decode(&results)) { switch (results.value) { case 0x6170807F: //instrukcja dla listwy LED zwiekszanie if(jasnosc < 255) {jasnosc = jasnosc+51;} Serial.println(jasnosc); analogWrite(diodaPin, jasnosc); zamigajLED(); //funkcja kontrolki odbioru ekranDane(); ekranLed(); break; case 0x617040BF: //instrukcja dla listwy LED zmniejszanie if(jasnosc > 0) {jasnosc = jasnosc-51;} Serial.println(jasnosc); analogWrite(diodaPin, jasnosc); zamigajLED(); ekranDane(); ekranLed(); break; case 0x617020DF: //instrukcja dla listwy LED pelny analogWrite(diodaPin, 255); zamigajLED(); break; case 0x6170A05F: //instrukcja dla listwy LED wylaczony analogWrite(diodaPin, 0); zamigajLED(); break; case 0x617048B7: //instrukcja dla lampy lampaStatus1 = ~lampaStatus1; digitalWrite(lampa, lampaStatus1); //Włącz lampe zamigajLED(); break; } irrecv.resume(); } } void zamigajLED() { //kontrolka odbioru pilota digitalWrite(diodaPin1, HIGH); //Włączenie diody delay(200); //Odczekanie 0,2 sekundy digitalWrite(diodaPin1, LOW); //Wyłączenie diody delay(200); //Odczekanie 0,2 sekundy } void ekranDane(){//Wyswietlenie 'danych' na ekranie delay (50); lcd.display(); lcd.begin(16, 2); //Deklaracja typu wyswietlacza lcd.clear(); //Wyczyszczenie wyswietlacza lcd.setCursor(0, 0); //Ustawienie kursora lcd.print("LED: "); //Wyświetlenie tekstu lcd.print(jasnosc); //Wyświetlenie tekstu if (sensors.available() || (dht.getStatusString() == "OK")) { //Pobranie informacji o wilgotnosci int wilgotnosc = dht.getHumidity(); //Pobranie informacji o temperaturze int temperatura = dht.getTemperature(); float temperature = sensors.readTemperature(address); Serial.print(temperature); Serial.println(F(" 'C")); lcd.setCursor(0, 1); //Ustawienie kursora lcd.print("T1:"); //Wyświetlenie tekstu lcd.setCursor(3, 1); //Ustawienie kursora lcd.print(temperature); //Wyświetlenie tekstu lcd.setCursor(10, 0); //Ustawienie kursora lcd.print("W: "); lcd.setCursor(12, 0); lcd.print(wilgotnosc); lcd.setCursor(9, 1); //Ustawienie kursora lcd.print("T2:"); lcd.setCursor(12, 1); lcd.print(temperatura); sensors.request(address); } //Odczekanie wymaganego czasugo delay(dht.getMinimumSamplingPeriod()); } void ekranLed(){ //Podswietlenie ekranu (czasowe) digitalWrite (PodLed, HIGH); delay (3000); digitalWrite (PodLed, LOW); } Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Marzec 1, 2017 Udostępnij Marzec 1, 2017 leepa79, super, widzę, że potencjał płytki stykowej wykorzystujesz w 100% 🙂 Informacje o wykorzystaniu pilota znajdziesz w najnowszej części kursu budowy robotów: Kurs budowy robotów – #8 – zdalne sterowanie IR (RC5) Cytuj Link do komentarza Share on other sites More sharing options...
dejmieno Maj 30, 2017 Udostępnij Maj 30, 2017 Czy ten kurs będzie jeszcze kontynuowany? Z tego co widzę w sklepie botland na opisie zestawu to w planach jest jeszcze chyba jeden artykuł "Inteligentne oświetlenie domowe". Ciekawe, czy jest jeszcze potencjał na "Kurs Arduino poziom III" 😉. Te dwa kursy chyba mocno wyczerpują temat 🙂. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Treker (Damian Szymański) Maj 30, 2017 Udostępnij Maj 30, 2017 dejmieno, oczywiście będzie kolejna część, ale niestety ostatnio nie mogłem zajmować się tym tematem (stąd nawet moja ogólnie mniejsza aktywność przy publikacji artykułów). Mam jednak nadzieję, że jeszcze kilka dni i wszystko wróci na właściwe tory, wtedy nadrabiam zaległości i działamy dalej! Cytuj Link do komentarza Share on other sites More sharing options...
m_rat Lipiec 6, 2017 Udostępnij Lipiec 6, 2017 Świetny kurs. Mam nadzieję, że jak najszybciej ukaże się następny rozdział 🙂! Cytuj Link do komentarza Share on other sites More sharing options...
marekmarecki Lipiec 17, 2017 Udostępnij Lipiec 17, 2017 mam mały problem z tak funkcją define DHTTYPE DHT11 po napisaniu programu wyskakuje błąd przy wgrywaniu nie wiem jak to naprawić Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 17, 2017 Udostępnij Lipiec 17, 2017 marekmarecki, witam na forum 🙂 Pokaż proszę kod, który kompilujesz (wklej dokładnie, to co próbujesz wgrać u siebie). Cytuj Link do komentarza Share on other sites More sharing options...
marekmarecki Lipiec 18, 2017 Udostępnij Lipiec 18, 2017 taki wyświetla błąd po wgraniu programu z funkcją define DHTTYPE DHT11 a tak wygląda napisany program Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Lipiec 18, 2017 Udostępnij Lipiec 18, 2017 marekmarecki, ciężko powiedzieć, ponieważ nic takiego w kursie nie występuje. Nie wiem jakiej biblioteki używasz i skąd ten program i błąd. Zwróć uwagę, że w kursie korzystamy z biblioteki przyjmującej tylko 1 argument, a Ty do swojej podajesz dwa. Jeśli masz pytania nie związane z kursem, czyli np. z inną biblioteką to załóż osobny temat, w którym opiszesz dokładnie swój problem i podlinkujesz używane biblioteki. Dzięki temu nie będziemy mieszać w głowach osobom, które korzystają z tego kursu - z góry dziękuję za pomoc w utrzymaniu porządku na forum 🙂 Drugie rozwiązanie: skorzystaj z bibliotek i programów opisanych w kursie, nie powinieneś mieć wtedy żadnych problemów 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
yacca Wrzesień 27, 2017 Udostępnij Wrzesień 27, 2017 A czy można by uzupełnić ten kod o obsługę prostego LCD - tak, aby dane na temat temperatury i wilgotności wyświetlać bezpośrednio na wyświetlaczu? Pozdrawiam, y. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Wrzesień 27, 2017 Udostępnij Wrzesień 27, 2017 yacca, witam na forum - oczywiście, że tak 🙂 Informacje o korzystaniu z LCD znajdziesz w pierwszym poziomie kursu Arduino: Kurs Arduino – #7 – Wyświetlacz tekstowy, LCD 2×16 Cytuj Link do komentarza Share on other sites More sharing options...
marekmarecki Wrzesień 28, 2017 Udostępnij Wrzesień 28, 2017 program był zrobiony z normalnym LCD 16x2 i działał u mnie bez problemu teraz jest przerobiony pod konwerter lcd i też nie ma problemów Cytuj Link do komentarza Share on other sites More sharing options...
olmekowie Październik 11, 2017 Udostępnij Październik 11, 2017 Witam kiedy się spodziewać Kurs Arduino II – #9 – inteligentne oświetlenie domowe ?? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Październik 11, 2017 Udostępnij Październik 11, 2017 olmekowie, witam na forum 🙂 Niestety w przypadku tej części coś ewidentnie mi nie idzie i za każdym razem, pojawia się przeszkoda. Przez co artykuł jest odkładany w nieskończoność. Mam teraz plan, aby napisać go raz jeszcze, zupełnie inaczej niż planowałem - postaram się, aby pojawił się w tym miesiącu 🙂 Edit: Sporo się tego ostatnio nazbierało (kurs FPGA, kurs Raspberry Pi)... Nie miałem kiedy opublikować tego odcinka. Niedługo nadrobię jednak zaległość - obiecuję! Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!