Rozmawiałem dzisiaj z Ryśkiem SP6IFN i zwrócił moją uwagę na pewien problem.
Otóż nasza synteza jest przystosowana do s-metra (pamiętajmy że to tylko wskaźnik) który pracuje z napięciem wyjściowym od 0V - 5V. Jest to oczywiście dość dużo, wiekszość konstrukcji pracuje na niższych napięciach.
Wobec tego przebudowałem program w taki sposób by można było zmienić ten zakres na 0V - 1.1V.
Zmiana ta realizowana jest za pomocą funkcji
analogReference().
Minusem tego rozwiązania jest to ze nasza drabinka do obsługi przycisków też musi być przeprogramowana, bo zmiana napięcia referencyjnego dotyczy wszystkich wejść analogowych i przestała by działać.
A zatem:
W sekcji konfiguracyjnej mamy zmienną do wyboru napięcia odniesienia:
Kod:
const int bod_lvl = 0; //konfiguracja napięcia odniesienia 0 - 5V, 1 - 1.1V
Podczas startu procesora w funkcji setup ustawiamy odpowiednie napięcie:
Kod:
if(bod_lvl == 1){ //tutaj przy starcie ustawiam właściwe napięcie odniesienia
analogReference(INTERNAL); //dla ATmega168 i ATmega328, INTERNAL = 1.1V w arduino mega wpisujemy INTERNAL1V1
}
No i na koniec fragment kodu w którym reagujemy na dane z przetwornika, czyli jak teraz wygląda nasza funkcja obsługująca przyciski, już po zmianach:
Kod:
else if(adc_value > 10 && adc_value < 120 && bod_lvl == 0){ //drugi przycisk napiecie odniesienia 5V
rit_button_pressed = true;
}
else if(adc_value > 120 && adc_value < 220 && bod_lvl == 0){ //trzeci przycisk napiecie odniesienia 5V
dim_button_pressed = true;
}
else if(adc_value > 220 && adc_value < 320 && bod_lvl == 0){ //czwarty przycisk napiecie odniesienia 5V
vfo_button_pressed = true;
}
else if(adc_value > 350 && adc_value < 500 && bod_lvl == 1){ //drugi przycisk napiecie odniesienia 1.1V
rit_button_pressed = true;
}
else if(adc_value > 500 && adc_value < 800 && bod_lvl == 1){ //trzeci przycisk napiecie odniesienia 1.1V
dim_button_pressed = true;
}
else if(adc_value > 800 && adc_value < 1000 && bod_lvl == 1){ //czwarty przycisk napiecie odniesienia 1.1V
vfo_button_pressed = true;
}
W chwili obecnej na atmedze 328 nasz program zajmuje: 17 012 bajtów z 30 720 bajtów, czyli własnie przekroczyliśmy połowę pamięci procesora.
No Panowie ciekaw jestem waszych postępów w pracach, ktoś poza Rysiem już napędza Złomkiem jakieś radio?