Skocz do zawartości

Belferek

Użytkownicy
  • Zawartość

    545
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    6

Belferek wygrał w ostatnim dniu 17 marca 2019

Belferek ma najbardziej lubianą zawartość!

Reputacja

99 Bardzo dobra

O Belferek

  • Ranga
    6/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Ten wątek powinni przeczytać wszyscy początkujący, którzy zastanawiają się nad wyborem Arduino IDE czy też może inne środowisko pracy.
  2. Powinieneś pokazać dokładnie informacje o błędzie a nie tylko ostatnie 3 wiersze. Wielkość tych "okienek" można zmieniać.
  3. Tytuł artykułu trochę na wyrost. Powinien on raczej brzmieć "Wysyłanie prostego tekstu z PC do Arduino". Szkoda, że praktycznie autor nie wspomniał o odbiorze danych z Arduino, a najlepiej o jednoczesnym NADAWANIU i ODBIORZE z Pythona za pomocą nieblokujących wątków.
  4. To może zrób tak i pochwal się poza swoim tajnym kodem wynikiem takiej modyfikacji: if ((aktualnyCzas - zapamietanyCzas2 >= 110UL) && (aktualnyCzas - zapamietanyCzas2 <= 200UL)) { //tutaj twoje instrukcje } else { Serial.print("Roznica = "); Serial.print(aktualnyCzas - zapamietanyCzas2); }
  5. Jest jeszcze funkcja micros() więc może tak zmierzysz ile trwa pomiar z Twojego czujnika: unsigned long start=micros(); //lub millis() pomiar_z_czujnika(); //tu Twój pomiar unsigned long czas_trwania=micros()-start; //lub millis()-start
  6. Kilka postów wyżej zaproponowałem rozwiązanie, ale pewnie go nie zauważyłeś: #define ZAMKNIETE 1 #define OTWARTE 0 boolean ostatni_stan=digitalRead(2); void loop() { if (digitalRead(2) == LOW && ostatni_stan==ZAMKNIETE ) //jesli okno otwarte a bylo zamkniete { digitalWrite(8, LOW); digitalWrite(9, HIGH); ostatni_stan=OTWARTE; Serial.println("Uwaga! Okno otwarte!"); } else if (digitalRead(2) == HIGH && ostatni_stan==OTWARTE ) //jesli okno zamkniete a bylo otwarte { digitalWrite(8, HIGH); digitalWrite(9, LOW); ostatni_stan=ZAMKNIETE; Serial.println("Uwaga! Okno zamkniete!"); } delay(1000); } A jesteś pewien, że Twoje Arduino się nie resetuje? Dodaj sobie na końcu funkcji setup() coś takiego Serial.println("Reset..."); Czy ten kod także nie działa właściwie? Już pisałem, że cudów raczej nie ma. Posprawdzaj wszystkie połączenia, kabelki itp. no i spróbuj tego programiku. No i poczytaj o debouncing i bilbiotece Bounce2.
  7. void setup() { Serial.begin(9600); //uruchomienie transmisji pinMode(8, OUTPUT); //dioda czerwona pinMode(9, OUTPUT); //dioda zielona pinMode(10, INPUT_PULLUP); //przycisk digitalWrite(8, LOW); //wyłączenie obu diod digitalWrite(9, LOW); } void loop() { if (digitalRead(10) == LOW) { //jeśli przycisk jest wciśnięty digitalWrite(9, HIGH); //włączenie diody zielonej digitalWrite(8, LOW); //wyłączenie diody czerwonej } else {//jeśli przyciskisk nie jest wcisniety digitalWrite(9, LOW); //wyłączenie diody zielonej digitalWrite(8, HIGH); //włączenie diody czerwonej Serial.println("okno otwarte"); } delay(200); } A taki program jak u ciebie działa?
  8. No to jaki problem troszeczkę to zmienić - np. tak: #define ZAMKNIETE 1 #define OTWARTE 0 boolean ostatni_stan=digitalRead(2); void loop() { if (digitalRead(2) == LOW && ostatni_stan==ZAMKNIETE ) //jesli okno otwarte a bylo zamkniete { digitalWrite(8, LOW); digitalWrite(9, HIGH); ostatni_stan=OTWARTE; Serial.println("Uwaga! Okno otwarte!"); } else if (digitalRead(2) == HIGH && ostatni_stan==OTWARTE ) //jesli okno zamkniete a bylo otwarte { digitalWrite(8, HIGH); digitalWrite(9, LOW); ostatni_stan=ZAMKNIETE; Serial.println("Uwaga! Okno zamkniete!"); } } Przyciski mają to do siebie, że drżą. Poczytaj o tzw. debouncing i np. bibliotece Bounce2.
  9. a tak nie byłoby lepiej? #define ZAMKNIETE 1 #define OTWARTE 0 boolean ostatni_stan=digitalRead(2); void loop() { if (digitalRead(2) == LOW && ostatni_stan==ZAMKNIETE ) //jesli okno otwarte a bylo zamkniete { digitalWrite(8, LOW); digitalWrite(9, HIGH); ostatni_stan=OTWARTE; } else if (digitalRead(2) == HIGH && ostatni_stan==OTWARTE ) //jesli okno zamkniete a bylo otwarte { digitalWrite(8, HIGH); digitalWrite(9, LOW); ostatni_stan=ZAMKNIETE; } if(ostatni_stan==OTWARTE) Serial.println("Uwaga! Okno otwarte!"); else Serial.println("Uwaga! Okno zamkniete!"); }
  10. To wiem - ale po co sprawdzać czy LED świeci czy nie?
  11. while ((digitalRead(2) == LOW) && (digitalRead(9) == LOW)) { digitalWrite(8, LOW); digitalWrite(9, HIGH); Serial.println("Uwaga! Okno otwarte!"); } Jakie jest przeznaczenie tej pętli? Wcześniej ustawiasz pin 9 sterujący LED-em jako OUTPUT, a tu go odczytujesz - czemu to ma służyć?
  12. char bufor[100]; No to jeszcze powiedz po co aż 100 bajtów pamięci rezerwujesz na rzecz bufora? Masz jej w nadmiarze?
  13. A tego to nikt nie wie jaki to układ elektroniczny budujesz. Generalnie elementy łączymy szeregowo bądź równolegle.
  14. Czy na pewno funkcja temp=ds18b20_gettemp(); zwraca uint8_t (tak deklarujesz temp)?
  15. Czyli tak jak pisałem - cudów nie ma. Piszesz o zmianie oprogramowania. Czasami dobrze jest sprawdzić czy po deinstalacji nie pozostały jednak na dysku jakieś pozostałości.
×
×
  • Utwórz nowe...