19-11-2014, 1:51
OK Panowie kończę na dzisiaj bo rano do pracy....
A więc tak:
Zmiany dotyczyły wprowadzenia obsługi VFO A i B.
Dodałem dwie zmienne dla przechowywania częstotliwości VFO A i VFO B do tych komórek chowam częstotliwość podczas zmiany bieżącego VFO.
Rozszerzyłem funkcję obsługującą drabinkę rezystorową i już mamy obsługę dwóch VFO.
Kod po kilku testach bo już mi się dzisiaj nie chce siedzieć. Póki co wydaje się że wszystko jest ok. Jutro popołudniu wykonam resztę testów.
Poniżej oczywiście cały kod.
A więc tak:
Zmiany dotyczyły wprowadzenia obsługi VFO A i B.
Dodałem dwie zmienne dla przechowywania częstotliwości VFO A i VFO B do tych komórek chowam częstotliwość podczas zmiany bieżącego VFO.
Kod:
//funkcja do obsługi zmiany VFO
void change_vfo(){
myGLCD.setFont(TinyFont); //mała czcionka
switch(vfo_state){ //sprawdzam jakie VFO zostało wybrane
case 0: //jeśli A to:
myGLCD.print("V/A", 56,2); //sygnalizuję które VFO pracuje
frequency_vfo_b = frequency; //zawartość częstotliwość odkładam do pamięci VFO B
frequency = frequency_vfo_a; //wczytuję zawartość częstotliwości z pamięci VFO A
break;
case 1:
myGLCD.print("V/B", 56,2); //sygnalizuję które VFO pracuje
frequency_vfo_a = frequency; //zawartość częstotliwość odkładam do pamięci VFO A
frequency = frequency_vfo_b; //wczytuję zawartość częstotliwości z pamięci VFO B
break;
}
set_frequency(0); //ustawiam częstotliwość dla syntezera
show_frequency(); //pokazuję częstotliwość na LCD
delay(200); //male opóźnienie
}Rozszerzyłem funkcję obsługującą drabinkę rezystorową i już mamy obsługę dwóch VFO.
Kod:
//obsługa przycisków
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 < 120){ //drugi przycisk
rit_button_pressed = true;
}
if(adc_value > 120 && adc_value < 220){ //trzeci przycisk
dim_button_pressed = true;
}
if(adc_value > 220 && adc_value < 320){ //trzeci przycisk
vfo_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
dim_button_pressed = false; //przycisk przyciemniania LCD
vfo_button_pressed = false; //przycisk zmiany VFO
}Kod po kilku testach bo już mi się dzisiaj nie chce siedzieć. Póki co wydaje się że wszystko jest ok. Jutro popołudniu wykonam resztę testów.
Poniżej oczywiście cały kod.
...przede wszystkim nie zakłócać...

