Skocz do zawartości

Belferek

Użytkownicy
  • Zawartość

    382
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    6

Belferek wygrał w ostatnim dniu 17 marca

Belferek ma najbardziej lubianą zawartość!

Reputacja

60 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. A tak z ciekawości - pokazana przeze mnie wcześniej kilka postów wyżej działająca propozycja Ci nie odpowiada? Nie korzysta ona z delay(). Już na 3 stronach ponawiasz swe pytanie, na które dostajesz przecież różne propozycje rozwiązań od różnych osób. Oczekujesz gotowca? Może wystarczy dostosować proponowane rozwiązania do własnych potrzeb i już.
  2. A takie rozwiązanie Ci odpowiada (brak delay() #include <Timers.h> #define button 2 #define CZAS_MIGNIECIA 500 #define ILE_MIGNIEC 3 boolean miganie=false; //jeśli miga to true uint8_t licznik=0; //licznik mignięć boolean przycisk=false; //true - został wciśnięty Timer czas; //będzie sterował prędkością pracy kierunkowskazu void setup() { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN,0); pinMode(button, INPUT_PULLUP); czas.begin(CZAS_MIGNIECIA); Serial.begin(115200); } void loop() { //sprawdzamy naciśnięcie przycisku if(!miganie && !digitalRead(button)) miganie=true; //sprawdzamy gdy nie ma akcji //jeśli migamy i upłynął czas mignięcia if(miganie && czas.available() && licznik<ILE_MIGNIEC*2) { digitalWrite(LED_BUILTIN,licznik%2); Serial.println(licznik%2); licznik++; if(licznik==ILE_MIGNIEC*2) //jeśli mignięto założoną ilość razy { miganie=false; licznik=0; digitalWrite(LED_BUILTIN,0); while(!digitalRead(button)) ; //ew. czekamy na zwolnienie przycisku } } if(czas.available()) czas.restart(); }
  3. Niczego Ci nie napisałem pokazałem Ci jedynie, że możesz pisać własne funkcje co uczyniłeś i o to chodziło. Jeśli nie delay() to potrzebujesz innego sposobu odmierzania czasu. Jeśli masz kłopoty z millis() to może skorzystaj z podesłanej Ci wcześniej informacji o Timers.h, która też wykorzystuje millis() ale może być prostsza w użyciu.
  4. Belferek

    Komunikacja z arduino przez internet

    Jak z ciekawości to proponuję zacząć od lektury pozycji dot. tematyki sieci komputerowych. Minimalna wiedza na ten temat jest niezbędna. Warto także zainteresować się takimi zagadnieniami jak HTML, JAVASCRIPT, NODEJS, PHP ..... - temat morze.
  5. Nie poddawaj się - walcz np. : void sekwencjaCzynnosci() { // czynnosc 1 // czynnosc 2 // ..... // czynnosc N while(digitalRead(6) == LOW) ; //czekamy na zwolnienie przycisku click1=false; }
  6. Może taka funkcja wykonująca nakazane czynności: 1. Wykonaj sekwencję czynności 2. Poczekaj na zwolnienie przyciku 3. Zapamiętaj, że przycisk zwolniony 4. Wróć do programu
  7. czyli: 1 Jeśli przycisk wciśnięty to zapamiętaj. 2. Poczekaj 0,5 s 3. Jeśli przycisk był wciśnięty i jest nadal wciśnięty to CZYNNOŚC A 4. Skocz do 1 Teraz to zakoduj i powinno zadziałać.
  8. w Arduino reference(tutaj) można przeczytać: "The use of goto is discouraged in C programming...." Więc można przyjąć, że nie korzystamy z goto.
  9. Funkcji, czy to polecenia goto oczywiście w Arduino IDE nie znajdziemy, ale z powodzeniem można to zastąpić sprawdzaniem warunków if{} else {}, switch - case czy też korzystając z wywołania własnych funkcji.
  10. rzeczywiście - prawidłowy link Może taki sposób działania programu byłby właściwy? 1. Sprawdź przycisk. 2. Jeśli NIE wciśnięto to skok do 7 3. Zamigaj 3 razy 4. Sprawdź przycisk. 5. Jeśli ZWOLNIONY to skocz do 7 6. Skocz do 4 7 Opóźnienie 8. Skok do 1
  11. To wklej kod programu w którym wykorzystujesz zapamietanyCzas01. Ja nie znajduję tego wykorzystania. Popracuj nad algorytmem, narysuj go sobie - to pomaga zaoszczędzić duuużo czasu.
  12. A do czego potrzebny jest w programie zapamietanyCzas01? Czy aby dobrze przemyślałeś wykorzystanie tych zmiennych? Narysuj sobie algorytm tego programu i przełóż na kod. Przemyślany algorytm bardzo pomaga, a przy problemach z ogarnięciem millis() może pomóc ten artykuł.
  13. Czy to aby dobra konstrukcja? Raczej używamy np: if(aktualnyCzas - zapamietanyCzas02 <= 1000UL && click1 == true)....... Co będzie gdy przycisk będzie na stale wciśnięty? Twoja zmienna licznikA nie zlicza wykonanych czynności lecz się zwiększa pod wpływem stanu LOW na porcie czujnika, a to chyba nie to samo. Zobacz ten artykuł - może się przyda i coś podpowie - zobacz
  14. To może zapamiętaj, że już została wykonana?
  15. Belferek

    UART i kontrola błędów transmisji

    W trudnych warunkach nawet lepiej gdy będziesz łączył różne metody zabezpieczające przez błędami transmisji.
×