beavis84881
Użytkownicy-
Zawartość
12 -
Rejestracja
-
Ostatnio
Informacje
-
Płeć
Mężczyzna
-
Lokalizacja
Warszawa
Osiągnięcia użytkownika beavis84881
-
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
Bardzo dziękuję za wskazówki. Z przyjemnością zapoznam się z tym materiałem. -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
DZIAŁA !!! Tak, właśnie o to mi chodziło. @farmaceuta chylę przed tobą czoło, twoją wiedzą i wytrwałością. Bardzo dziękuję za pomoc i Twój cenny, poświęcony czas. Dziękuję również pozostałym uczestnikom za ich wkład i cenne rady. Na koniec zapytam jeszcze ws. tej wstępnej wiedzy. Czy jest jakiś uniwersalny zakres wiedzy podstawowej, żeby zacząć z tym "poważną" zabawę? -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
Poniekąd ta dioda to takie awaryjne ostrzeganie (pomimo, że może się spalić) a tu zostaje jeszcze sygnalizacja dźwiękowa, którą nawet zza niewielkie przeszkody słychać i można w czas zareagować. Dioda to dodatek, brzęczyk ważniejszy. -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
@farmaceuta ratuj dalej! Jest drobna nieprawidłowość. Po uruchomieniu alarmu i w czasie jego trwania, przyciskiem wyłączam i włączam brzęczyk - SUPER. Co prawda czas reakcji trochę długi ale.. OK. Natomiast jest problem, kiedy podczas trwania alarmu wyłączę brzęczyk a w tym czasie spadnie temperatura (w tym przykładzie poniżej 27). Po ponownym uruchomieniu alarmu brzęczyk już się sam nie włącza. KATASTROFA. -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
Przypisałem 1, działa lepiej. -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
@jand kod dalej, jak dla mnie, działa połowicznie. Po uruchomieniu alarmu, jeden raz uruchomiony przycisk owszem wyłącza dźwięk ale kolejne uruchomienie przycisku (w trakcie trwania alarmu) już go nie uruchamia. -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
rozumiem. A tak na marginesie, czy to już jest "gotowy" kod?..bo brzęczyk nie działa. Czy znów coś popsułem? -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
wybacz @farmaceuta za dużo na raz #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 4 #define BUZZER 7 #define LED 8 #define BUTTON 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { pinMode(LED, OUTPUT); pinMode(BUZZER, OUTPUT); pinMode(BUTTON, INPUT); Serial.begin(9600); Serial.println("Dallas DS18B20. Pomiar Temperatury."); sensors.begin(); } void loop(void) { sensors.requestTemperatures(); // Polecenie, aby uruchomić pomiar temperatury delay (500); // float wynik = sensors.getTempCByIndex(0); // Polecenie, aby pobrać wartość temperatury Serial.print("Temperatura: "); Serial.println(wynik); if (sensors.getTempCByIndex(0) >= 27) // Jeśli czujnik wskaże temp >27 stopni Celcjusza { digitalWrite(LED, HIGH); // Włącz diodę tone(BUZZER, 1000); // Uruchom brzęczyk } else // W przeciwnym razie { digitalWrite(LED, LOW); // Wyłącz diodę noTone(BUZZER); // Wyłącz brzęczyk } } -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
@farmaceuta gdzieś już wcześniej czytałem o tych porządkach w kodzie i sam miałem sie do tego stosować i popatrz wyszedł zonk. Dzięki za cenne uwagi. Poniżej, w miarę poprawiony kod. Proszę o dalsze instrukcje. #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 4 #define BUZZER 7 #define LED 8 //#define BUTTON 2 #define SWITCH 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { pinMode(LED, OUTPUT); pinMode(BUZZER, OUTPUT); pinMode(BUTTON, INPUT); Serial.begin(9600); Serial.println("Dallas DS18B20. Pomiar Temperatury."); sensors.begin(); } void loop(void) { sensors.requestTemperatures(); // Polecenie, aby uruchomić pomiar temperatury delay (500); // float wynik = sensors.getTempCByIndex(0); // Polecenie, aby pobrać wartość temperatury Serial.print("Temperatura: "); Serial.println(wynik); if (sensors.getTempCByIndex(0) >= 27) // Jeśli czujnik wskaże temp >27 stopni Celcjusza { digitalWrite(LED, HIGH); // Włącz diodę tone(BUZZER, 1000); // Uruchom brzęczyk } else // W przeciwnym razie { digitalWrite(LED, LOW); // Wyłącz diodę noTone(BUZZER); // Wyłącz brzęczyk } if (digitalRead(SWITCH) == 0) noTone(BUZZER); } @jand wykorzystałem twoją podpowiedź z funkcją SWITCH. Nie do końca o to mi chodziło - działa połowicznie, tzn. wyłącza BUZZER tylko w momencie trzymania wciśniętego przycisku. To dla mnie za mało...ale dzięki. Dodatkowo, jeśli dobrze rozumiem, SWITCH mogę użyć zamiast BUTTON?..tak? Poniżej kod. #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 4 #define BUZZER 7 #define LED 8 //#define BUTTON 2 #define SWITCH 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { pinMode(LED, OUTPUT); pinMode(BUZZER, OUTPUT); // pinMode(BUTTON, INPUT); pinMode(SWITCH, INPUT_PULLUP); Serial.begin(9600); Serial.println("Dallas DS18B20. Pomiar Temperatury."); sensors.begin(); } void loop(void) { sensors.requestTemperatures(); // Polecenie, aby uruchomić pomiar temperatury delay (500); // float wynik = sensors.getTempCByIndex(0); // Polecenie, aby pobrać wartość temperatury Serial.print("Temperatura: "); Serial.println(wynik); if (sensors.getTempCByIndex(0) >= 27) // Jeśli czujnik wskaże temp >27 stopni Celcjusza { digitalWrite(LED, HIGH); // Włącz diodę tone(BUZZER, 1000); // Uruchom brzęczyk } else // W przeciwnym razie { digitalWrite(LED, LOW); // Wyłącz diodę noTone(BUZZER); // Wyłącz brzęczyk } if (digitalRead(SWITCH) == 0) noTone(BUZZER); } Napotkałem raz zastosowanie rozwiązania z SWITCH i CASE. Czy to tędy droga? https://arduinoplusplus.wordpress.com/2019/07/06/finite-state-machine-programming-basics-part-1/ -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
Witaj @farmaceuta, jak już wcześniej wspominałem, nie jestem biegły w programowaniu i nie rozumiem wielu rzeczy. W przypadku Twojego rozwiązania, rozwiń proszę szczegółowo "flaga_alarm" - gdzie, dlaczego, kiedy, jak i co to. -
Pomoc w kodzie Arduino - DS18B20+buzzer. Odczyt temperatury z alarmem(powiadomieniem).
beavis84881 odpisał w temacie użytkownika beavis84881 • Zupełnie zieloni
..i tu zgadzam sie w 99% bo podobnie jest w moim przypadku przyznaję się, że skopiowałem i wgrałem prosty przykład mrygania diody (blink) z późniejszymi próbami modyfikacji ale.. właśnie od tego się zaczęło, praktyki, wizualnego potwierdzenie, że jest w tym ogromny potencjał i dużo zabawy. Właściwie to jedno i drugie. Jeśli chodzi o naukę i pomimo, że niewiele z tego rozumiem, będę się starał ogarnąć i odpowiadać w miarę moich możliwości. A co do gotowca, to tak, to też jest jedno z rozwiązań ale też nie do końca dla mnie. Przede wszystkim, potrzebuję to zrozumieć, jak działa, co do czego, gdzie można sobie pozwolić na ewentualne zmiany w celu dalszej rozbudowy, itd. itp. Więc jak ktoś ma gotowca ze szczegółowym opisem, to tak, poproszę. Nie mniej jednak, skoro jest propozycja nauki - chętnie spróbuję. Po wstępnej modyfikacji (mam nadzieję, zgodnie z zaleceniami) kod wygląda tak: #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 4 #define BUZZER 7 #define LED 8 #define BUTTON 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { pinMode(8, OUTPUT); pinMode(7, OUTPUT); pinMode(2, INTPUT); Serial.begin(9600); Serial.println("Dallas DS18B20. Pomiar Temperatury."); sensors.begin(); } void loop(void) { Serial.print("Temperatura: "); Serial.print(sensors.getTempCByIndex(0)); sensors.requestTemperatures(); // Polecenie, aby uzyskać odczyty temperatury Serial.println(); delay (500); if (sensors.getTempCByIndex(0) >= 27) //Jeśli czujnik wskaże temp >27 stopni Celcjusza { digitalWrite(8, HIGH); //Włącz diodę tone(7, 1000); // Uruchom brzęczyk } if (sensors.getTempCByIndex(0) < 27) //Jeśli czujnik wskaże temp <27 stopni Celcjusza { digitalWrite(8, LOW); //Wyłącz diodę noTone (7); // Wyłącz brzęczyk } } Nie wiem czy to dobrze, że zostawiłem linijkę delay (500); ale przydał by się finalnie "regulowany odstęp czasowy" odczytu temp. a nie wiem jak inaczej to wykonać. Dodatkowo dodałem noTone (7); do wyłączenia brzęczyka (piezo) bo daje po uszach. Apropo tego przełącznika - owszem, ta opcja też wyłącza dźwięk ale jak zapomnę go włączyć, to nie dowiem się o alarmie a dla mojego projektu wiąże się to poważnymi konsekwencjami (usterkami). Pozdrawiam -
Witam, zwracam się do wszystkich praktykujących o pomoc, jak w temacie, ws. kodu w Arduino. Jak większość początkujących miłośników programowania w Arduino i ja zacząłem od czujnika temperatury. Z uwagi na bardzo znikomą ilość mojej wiedzy, po wielu tygodniach poszukiwań rozwiązania do mojego projektu, już wiem że programowanie nie jest takie proste jak się wydawało. A szukanie gotowego rozwiązania to jak szukanie przysłowiowej igły w stogu siana. Pewnie wszyscy powiecie, że nie tędy droga. Tak, trochę się z tym zgadzam i choć drogi są różne to ważne żeby dotrzeć do celu. A cel jest taki, żeby dodać przycisk, który "wyłącza/włącza" buzzer po przekroczeniu konkretnej temperatury - tylko po to, żeby nie "hałasował". I tu dodatkowo rozwinę o co chodzi z tym "włącza/wyłącza" buzzer. Po przekroczeniu danej temp. włącza się alarm (buzzer) a wciśniecie przycisku (coś typu mikrostyk) wyłącza dźwięk, kolejne wciśnięcie włącza dźwięk i tak w kółko pod warunkiem że nadal jest przekroczona temp. - trochę takie sprawdzenie czy dalej alarm jest włączony. Oczywiście, kiedy alarm nie jest włączony, wciśnięcie przycisku nie daje żadnej reakcji. Poniżej dotychczasowy kod jaki udało się wykonać (bez przycisku). #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 4 #define BUZZER 7 #define LED 8 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); void setup() { pinMode(8,OUTPUT); pinMode(7,OUTPUT); Serial.begin(9600); Serial.println("Dallas DS18B20. Pomiar Temperatury."); sensors.begin(); } void loop(void) { Serial.print("Temperatura: "); Serial.print(sensors.getTempCByIndex(0)); sensors.requestTemperatures(); // Polecenie, aby uzyskać odczyty temperatury Serial.println(); delay(500); if (sensors.getTempCByIndex(0) >= 27) //Jeśli czujnik wskaże temp >27 stopni Celcjusza { digitalWrite(8, HIGH); //Włącz diodę tone(7, 1000, 100); // Uruchom brzęczyk delay(150); tone(7, 1000, 100); delay(150); tone(7, 1000, 100); delay(150); } if (sensors.getTempCByIndex(0) < 27) //Jeśli czujnik wskaże temp <27 stopni Celcjusza { digitalWrite(8, LOW); //Wyłącz diodę } } Z góry dziękuję wszystkim udzielającym rad, rozwiązań i innych propozycji do powyższego projektu. Pozdrawiam.
