• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Licznik wciśnięć kilku przycisków
#1
Witam wszystkich
Dopiero  zaczynam naukę Arduino.
Chciałbym zrobić licznik wcieśnięć przycisków:
Przycisk nr 1 wartość: 0.1 punktów
Przycisk nr 2 wartość: 0.2punktów
Przycisk nr 3 wartość: 0.5punktów
Przycisk nr 4 wartość: 1punktów
Przycisk nr 5 wartość: 2punktów
Przycisk nr 6 wartość: 5punktów
Chciałbym aby arduino liczyło wciśnięcia przycików do osięgnięcia zamierzonej wartości np 10punktów (lub więcej)
Po osiągnięciu chciałbym aby dioda led się zapaliła na 3 sekundy i po tym czasie suma się wyzerowała.

Znalazłem tutoriale  ale wszystkie działają na zasadzie jednego przycisku.
Czy możecie mi pomóc?
 
Odpowiedź
#2
Z opisu wynika, że nie chcesz zrobić licznika wciśnięć ale sumator, czyli dodawać wartości do siebie w zależności, który przycisk został naciśnięty.
Zadanie jest bardzo proste. Trzeba tylko na początek poczytać o zmiennych i sterowaniu wykonywaniem kodu.
W tym przypadku nie szukaj gotowców tylko pomyśl jak byś to sam zrobił.
Poczytaj na początek np tu: https://plociennik.info/index.php/arduino-wstep
Wiedza z tej strony wystarczy Ci do wykonania projektu.
Podpowiem, utwórz zmienną Suna i dodawaj do niej liczby w zależności, który przycisk uaktywnisz, gdy suma osiągnie np 10 to zapal diodę, poczekaj na delay(3000); i wyzeruj Sumę. Delay to takie zatrzymanie wykonywania kodu, strasznie złe rozwiązanie, jak się chce, aby procesorek wykonywał wiele zadań, ale na początek w prostych programach jest do przyjęcia.
Problemem może być, aby podczas aktywności przycisku, do sumy dodawała się wartość "pod przyciskiem" tylko raz. Podpowiem tylko tyle, ja użyłbym flagi.
I jeszcze, przyciski mogą generować zjawisko "drganie styku" czyli w czasie jego załączania styczki odbijają się od siebie powodując jakby wielokrotne naciśnięcie przycisku. Zaradza się temu programowo, pewnie w przykładzie, który znalazłeś jest ten fragment kodu.
 
Odpowiedź
#3
Tak na kolanie analiza:

if przycisk1 == LOW add 0.1 do zmiennej zliczanie +na koniec opoznienie zeby trzymanie guzika nie naliczało setek razy, 350-850ms

if przycisk2 == LOW add 0.2 do zmiennej zliczanie +na koniec opoznienie zeby trzymanie guzika nie naliczało setek razy, 350-850ms

if zliczanie >= 30 zapal diodę na 3s, wyzeruj licznik.
 
Odpowiedź
#4
A nie lepiej:
dodaj 10
dodaj 20
idt.
if zliczanie >=300 zrób cośtam?

Pozbędziemy się floatów.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości