Weekend, weekend i po weekendzie... fajnie że tyle osób testuje złomka. To budujące że ktoś to buduje i testuje. A zatem do dzieła jedziemy dalej.
Dzisiaj zanim pójdę spać bo rano w trasę
Postanowiłem przepisać obsługę klawiszy STEP i RIT, a konkretnie wzorem z Heńka przewalić je na jedno wejście, bo przyda nam się parę fajnych klawiszy a wejść jest jak na lekarstwo. Dodatkowo przeniosłem sygnał PTT z pinu 12 na 2, a dlaczego o tym na końcu.
Zacząłem od tego że przygotowałem dwie zmienne typu boolean by przechowywać status tych przycisków.
Kod:
boolean step_button_pressed = false;
boolean rit_button_pressed = false;
Do sprawdzania stanu wciśnięcia przycisków użyjemy jednego z wejść, dokładnie tego którego używaliśmy do obsługi przycisku krok syntezy, w tym miejscu by mocno w kodzie nie mieszać poprostu zapalamy flagi wciśniętych klawiszy:
Kod:
const int buttons_input = A2;
A robimy to tak:
Kod:
if(analogRead(buttons_input) < 1000){ //jeśli cokolwiek jest wciśnięte to sprawdźmy co to
delay(10); //male opoźnienie by się ustabilizował stan
int adc_value = analogRead(buttons_input);
Serial.println(adc_value); //w tym miejscu sprawdzisz jaka wartość ma wcisnięty klawisz patrz port RS232 debugowanie
if(adc_value < 10){ //pierwszy przycisk
step_button_pressed = true;
}
if(adc_value > 10 && adc_value < 100){ //drugi przycisk
rit_button_pressed = true;
}
}else{ //w każdym innym przypadku resetujemy flagi przycisków
step_button_pressed = false; //reset przycisku step
rit_button_pressed = false; //przycisk rita
}
Uwagę proszę zwrócić na pierwszą linię tej funkcji, by nie opóźniać procesora podczas normalnej pracy gdy żaden z przycisków nie jest naciśnięty, funkcja ta nie sprawdza już nic więcej tylko resetuje flagi przycisków.
Poszczególne funkcje które dotychczas sprawdzały stan wejść teraz sprawdzają tylko stan flag przycisków.
Było tak:
Kod:
//obsługa klawisza zmiany kroku
if(digitalRead(step_input) == LOW){ //sprawdzanie czy przycisk jest wcisnięty
delay(50); //zwłoka by wyeliminować drgania styków
if(digitalRead(step_input) == LOW){
......
a teraz jest tak:
Kod:
//obsługa klawisza zmiany kroku
if(step_button_pressed == true){ //sprawdzanie czy przycisk jest wcisnięty
delay(50); //zwłoka by wyeliminować drgania styków
if(step_button_pressed == true){
....
Podobnie zrobiłem w części kodu obsługującego klawisz RIT.
Jesli chodzi zaś o przeniesienie sygnału PTT na pin 2 to intencją było zwolnienie pinu 12-tego który może pracować jako PWM. A na nim zrobimy sobie w następnym odcinku ściemnianie podświetlenia wyświetlacza. Taki wypas
Mały schemat podłączenia przycisków.
W załączeniu kod po ostatnich zmianach.