Skocz do zawartości

beavis84881

Użytkownicy
  • Zawartość

    12
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Warszawa

Osiągnięcia użytkownika beavis84881

Odkrywca

Odkrywca (4/19)

  • Za 5 postów

Odznaki

1

Reputacja

  1. Bardzo dziękuję za wskazówki. Z przyjemnością zapoznam się z tym materiałem.
  2. 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ę?
  3. 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.
  4. @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.
  5. @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.
  6. rozumiem. A tak na marginesie, czy to już jest "gotowy" kod?..bo brzęczyk nie działa. Czy znów coś popsułem?
  7. 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 } }
  8. @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/
  9. 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.
  10. ..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
  11. 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.
×
×
  • Utwórz nowe...