Skocz do zawartości

Philip

Użytkownicy
  • Zawartość

    71
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    3

Philip wygrał w ostatnim dniu 4 marca 2018

Philip ma najbardziej lubianą zawartość!

Reputacja

18 Dobra

O Philip

  • Ranga
    4/10

Informacje

  • Płeć
    Mężczyzna
  • Zainteresowania
    elektryka,elektronika
  • Zawód
    elektryk

Ostatnio na profilu byli

227 wyświetleń profilu
  1. Sprawdź na pewno podłączenie wyprowadzeń czujnika. Ja tak też kiedyś miałem i dziwiłem się czemu Arduino wyświetla taką wysoką temperaturę, a błąd był w połączeniu.
  2. Gratuluję ciekawego projektu. Stałeś się chyba inspiracją dla mnie, żeby samemu coś podobnego zrobić do swojego teleskopu.
  3. Mam pytanie. Dlaczego w niektórych układach podczas tego kursu wejścia nieużywanych bramek scalaków podłączało się raz do masy, a raz do zasilania? Na początku w trzeciej części było napisane, że należy je podłączać do masy...
  4. W Arduino podczas wgrywania programu poprzednio wgrany program jest automatycznie usuwany.
  5. Policz klamry. W jednym miejscu jej brakuje, a w drugim jest ich aż nadto.
  6. Do przypisania numerów pinów diod i innych elementów używaj dyrektywy #define zamiast zmiennej int
  7. Ale poźniej doszedłem do tego samego miejsca Spróbuj zrobić, to co ci wyżej napisałem i napisz czy udało się wgrać program do Arduina.
  8. 20012game ostatnio miałem podobny problem. Też z Arduino Pro Mini. Akurat konwerter miałem inny, ale to nie w nim był problem, bo połączenie i wszystko było OK. Taka moja rada: sprawdź dostęp do folderu Arduino w Plikach programów. Nie wiem sam, ale u mnie dostęp do tego folderu zablokował się tak jakby z dnia na dzień. Później program wgrywałem już bez problemu, tak jak uprzednio. Sprawdź też gdzie zapisane masz biblioteki używane w kodzie, bo to też ma często związek z niedziałającym kodem programu. Mam nadzieję, że odpowiedź jest pomocna, daj znać czy problem został rozwiązany
  9. Jednak był problem z uprawnieniami folderu Arduino, ktore jakimś cudem zmieniły się "z dnia na dzień". Dzięki. Temat raczej zamknięty.
  10. Witam, Kupiłem niedawno konwerter USB-UART. Tydzień temu bez problemu wgrywałem za jego pomocą jakiekolwiek programy do Arduina Pro Mini (oryginalne). Dziś przy wgrywaniu programu do Arduina za pomocą tego kowertera napotkałem błąd. Dlatego stąd ten temat. Link do tego konwertera https://botland.com.pl/konwertery-usb-uart-rs232-rs485/2040-konwerter-usb-uart-ftdi-335v-na-przewod-usb.html java.io.IOException: Odmowa dostępu at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createTempFile(File.java:2024) at processing.app.BaseNoGui.saveFile(BaseNoGui.java:908) at processing.app.SketchFile.save(SketchFile.java:287) at processing.app.Sketch.save(Sketch.java:138) at processing.app.SketchController.save(SketchController.java:344) at processing.app.Editor.handleSave2(Editor.java:2020) at processing.app.Editor.handleSave(Editor.java:2000) at processing.app.Editor.handleExport(Editor.java:2140) at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:378) at java.awt.Component.processMouseEvent(Component.java:6530) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6298) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Odmowa dostępu Podejrzewałem, że błąd ten może mieć związek z zabezpieczonymi folderami przez Windowsa, ale patrząc we właściwościach dostęp do plików Arduino nie był nigdzie zablokowany. Niedość, że sama kompilacja trwała chyba z 5 min, to przez ten błąd nie da się zapisać sketcha. Może ktoś się spotkał z podobnym problemem i mógłby podzielić się swoim rozwiązaniem.
  11. W tytule artykułu jest błąd. Data wydarzenia jest błędna. Zamiast września jest sierpień. Pozdrawiam
  12. Głupie pytanie. Mapowanie klawiatury Z tą biblioteką zmieniłem tyle: #include "Bounce2.h" Bounce debouncer = Bounce(); [...] void setup() { Serial.begin(9600); lcd.begin(16,2); //Deklaracja typu lcd.clear(); //Wyczyszczenie sensors.begin(); //Inicjalizacja czujników dht.setup(CzDHT); //Inicjalizacja DHT11 pinMode(KONTAKTRON,INPUT_PULLUP); //Deklaracja dla kontaktronu jako wyjście pinMode(BUZZER,OUTPUT); //Deklaracja buzzera wyjście pinMode(PIR,INPUT); //Deklaracja czujnika ruchu jako wejście debouncer.attach(KONTAKTRON); debouncer.interval(5); } void loop() { char klawisz = 0; //zmienna do przechowywania znaków klawiszy klawisz = klawiatura.getKey(); sensors.requestTemperatures(); //Pobranie temperatury czujnika int wilgotnosc = dht.getHumidity(); //Pobranie informacji o wilgotności int temperatura = dht.getTemperature(); //Pobranie informacji o temperaturze aktualnyCzas = millis(); debouncer.update(); int wartosc = debouncer.read(); [...] switch(stan){ case czyOtworzonoDrzwi: if(wartosc == HIGH){ //Jeśli drzwi otwarte if(aktualnyCzas - zapamietanyCzas >=500UL){ //Ile upłynęło zapamietanyCzas = aktualnyCzas; tone(BUZZER,glosnosc1); //Odtwarzam dźwięk1 stan = odegranoDzwiek1; //Przełączam na stan2 } } break; case odegranoDzwiek1: if(aktualnyCzas - zapamietanyCzas >=500UL){ //Jeśli upłynął czas zapamietanyCzas = aktualnyCzas; tone(BUZZER,glosnosc2); //Odtwarzam dźwięk2 stan = odegranoDzwiek2; //Przełączam na stan3 } break; case odegranoDzwiek2: if(aktualnyCzas - zapamietanyCzas >=500UL){ //Jeśli upłynął czas zapamietanyCzas = aktualnyCzas; noTone(BUZZER); //Nie odtwarzam dźwięków stan = czyZamknietoDrzwi; } break; case czyZamknietoDrzwi: if(wartosc == HIGH){ //Jeśli drzwi otwarte } else { //Nic nie robię if(aktualnyCzas - zapamietanyCzas >=500UL){ stan = czyOtworzonoDrzwi; //Jeśli nie przełączam na stan1 zapamietanyCzas = aktualnyCzas; } } break; } } Podłączyłem wszystko do zasilacza, czyli tak jakby miało już oficjalnie działać i po jakimś czasie dosłownie kilku sekund buzzer siedzi cicho i nie ma tych cichutkich pyknięć. Chyba biblioteka swoje zrobiła. Dzięki ethanak za pomoc i poświęcony czas.
  13. Działa Mam jedno pytanie do kodu: char znak z funkcji przelacz jest równoznaczny z char klawisz z loop? Obydwa char'y działają na klawisze klawiatury? Do zegara wrócę chyba po wakacjach, bo za niedługo wyjeżdżam i nie będzie czasu na Arduino. Teraz można wrócić do biblioteki Bounce2.
  14. Brakuje dodatkowych symboli, które zawsze były po lewej stronie np. ∞,Ω, µ ... Było to bardzo pomocne. Moim zdaniem można by wrócić do tego, że przy wyświetlanym kodzie można go przewijać scrollem. Teraz niekiedy zajmuje on całą stronę.
  15. /* ... */ void loop (void){ Rtc(); } void Rtc (void){ DateTime now = rtc.now(); sprintf(bufor,"%4d/%02d/%02d", now.year(), now.month(), now.day()); lcd.setCursor(0,0); lcd.print(bufor); sprintf(bufor,"%02d:%02d:%02d", now.hour(), now.minute(), now.second()); lcd.setCursor(0,1); lcd.print(bufor); delay(1000); } Napisałem taki kod, ale nie mogę sprawdzić, bo mi ten mój scalak przestał działać, wcale nie liczy czasu. snprintf'a też nie sprawdziłem. Będę musiał kupić coś nowego i chyba kupię gotowy moduł zamiast bawić się z tym scalakiem. W między czasie napisałem automat do moich czujników. ethanak, jeśli robię coś źle, to sprostuj moje myślenie. Generalnie ma to działać tak: Stan dataGodzina wyświetla się cały czas, na razie jest to sam napis "Data Godzina", bo nie mam zegara. Z tego stanu można przejść do jakiegokolwiek innego stanu wciskając odpowiedni przycisk na klawiaturze. Tak samo z tych stanów można przejść do innych stanów oprócz dataGodzina, bo do niego przechodzi się automatycznie po 10 sekundach bezczynności w danym stanie. Zrozumiałe? Napotkałem jeden problem, np. jestem w stanie temperaturaPokoj i przechodzę do stanu wilgotnoscDht i odlicza się już podczas tej czynności 10s i nawet jeśli będę sobie te temp. przełączał to po jednokrotnym odliczeniu się 10s wracam do stanu dataGodzina zamiast przechodzić sobie między stanami w nieskończoność. Chodzi mi oto, aby po wejściu w jakikolwiek stan 10s odliczało się od nowa. void loop() { char klawisz = 0; //zmienna do przechowywania znaków klawiszy klawisz = klawiatura.getKey(); sensors.requestTemperatures(); //Pobranie temperatury czujnika int wilgotnosc = dht.getHumidity(); //Pobranie informacji o wilgotności int temperatura = dht.getTemperature(); //Pobranie informacji o temperaturze aktualnyCzas = millis(); switch (przelaczenie){ case dataGodzina: lcd.setCursor(0,0); lcd.print("Data Godzina"); if(klawisz == '1'){ //Jeśli wciśnięty przycisk '1', to wyświetla się temperatura pokoju przelaczenie = temperaturaPokoj; lcd.clear(); } if(klawisz == '2'){ //Jeśli wciśnięty przycisk '2', to wyświetla się temperatura na dworze przelaczenie = temperaturaDwor; lcd.clear(); } if(klawisz == '3'){ //Jeśli wciśnięty przycisk '3', to wyświetla się wilgotność pokoju przelaczenie = wilgotnoscDht; lcd.clear(); } if(klawisz == '4'){ //Jeśli wciśnięty przycisk '4', to wyświetla się temperatura pokoju przelaczenie = temperaturaDht; lcd.clear(); } if(aktualnyCzas - zapamietanyCzas >= 10000UL){ zapamietanyCzas = aktualnyCzas; przelaczenie = dataGodzina; } break; case temperaturaPokoj: lcd.setCursor(0,0); lcd.print("Temp Pokoj:"); lcd.setCursor(0,1); lcd.print(sensors.getTempC(termometrPokoj)); lcd.setCursor(6,1); lcd.print("*C"); if(klawisz == '2'){ //Jeśli wciśnięty przycisk '2', to wyświetla się temperatura na dworze przelaczenie = temperaturaDwor; lcd.clear(); } if(klawisz == '3'){ //Jeśli wciśnięty przycisk '3', to wyświetla się wilgotność pokoju przelaczenie = wilgotnoscDht; lcd.clear(); } if(klawisz == '4'){ //Jeśli wciśnięty przycisk '4', to wyświetla się temperatura pokoju przelaczenie = temperaturaDht; lcd.clear(); } if(aktualnyCzas - zapamietanyCzas >= 10000UL){ zapamietanyCzas = aktualnyCzas; przelaczenie = dataGodzina; lcd.clear(); } break; case temperaturaDwor: lcd.setCursor(0,0); lcd.print("Temp. Dwor:"); lcd.setCursor(0,1); lcd.print(sensors.getTempC(termometrDwor)); lcd.setCursor(6,1); lcd.print("*C"); if(klawisz == '1'){ //Jeśli wciśnięty przycisk '1', to wyświetla się temperatura pokoju przelaczenie = temperaturaPokoj; lcd.clear(); } if(klawisz == '3'){ //Jeśli wciśnięty przycisk '3', to wyświetla się wilgotność pokoju przelaczenie = wilgotnoscDht; lcd.clear(); } if(klawisz == '4'){ //Jeśli wciśnięty przycisk '4', to wyświetla się temperatura pokoju przelaczenie = temperaturaDht; lcd.clear(); } if(aktualnyCzas - zapamietanyCzas >= 10000UL){ zapamietanyCzas = aktualnyCzas; przelaczenie = dataGodzina; lcd.clear(); } break; case wilgotnoscDht: lcd.setCursor(0,0); lcd.print("Wilgotnosc:"); lcd.setCursor(0,1); lcd.print(wilgotnosc); lcd.setCursor(3,1); lcd.print("%RH"); if(klawisz == '1'){ //Jeśli wciśnięty przycisk '1', to wyświetla się temperatura pokoju przelaczenie = temperaturaPokoj; lcd.clear(); } if(klawisz == '2'){ //Jeśli wciśnięty przycisk '2', to wyświetla się temperatura na dworze przelaczenie = temperaturaDwor; lcd.clear(); } if(klawisz == '4'){ //Jeśli wciśnięty przycisk '4', to wyświetla się temperatura pokoju przelaczenie = temperaturaDht; lcd.clear(); } if(aktualnyCzas - zapamietanyCzas >= 10000UL){ zapamietanyCzas = aktualnyCzas; przelaczenie = dataGodzina; lcd.clear(); } break; case temperaturaDht: lcd.setCursor(0,0); lcd.print("Temp. DHT11:"); lcd.setCursor(0,1); lcd.print(temperatura); lcd.setCursor(3,1); lcd.print("*C"); if(klawisz == '1'){ //Jeśli wciśnięty przycisk '1', to wyświetla się temperatura pokoju przelaczenie = temperaturaPokoj; lcd.clear(); } if(klawisz == '2'){ //Jeśli wciśnięty przycisk '2', to wyświetla się temperatura na dworze przelaczenie = temperaturaDwor; lcd.clear(); } if(klawisz == '3'){ //Jeśli wciśnięty przycisk '3', to wyświetla się wilgotność pokoju przelaczenie = wilgotnoscDht; lcd.clear(); } if(aktualnyCzas - zapamietanyCzas >= 10000UL){ zapamietanyCzas = aktualnyCzas; przelaczenie = dataGodzina; lcd.clear(); } break; }
×
×
  • Utwórz nowe...