Odpowiedz 
 
Ocena wątku:
  • 6 Głosów - 4 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
SQ9MDD Offline
Rysiek
****

Liczba postów: 380
Dołączył: 01-02-2009
Post: #172
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO
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.

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.


Załączone pliki
.zip  zlomek_v_1_0_15-141119a.zip (Rozmiar: 8.12 KB / Pobrań: 915)

...przede wszystkim nie zakłócać...
19-11-2014 2:51
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
RE: Fork-Heńka... czyli jak sobie poradzić z DDS za pomocą ARDUINO - SQ9MDD - 19-11-2014 2:51

Skocz do:


Użytkownicy przeglądający ten wątek: 5 gości