Универсальный синтезатор Si570/Si5351

SWL
Posts: 94
Joined: 23 Feb 2021, 10:53
Позывной: SWL

Re: Универсальный синтезатор Si570/Si5351

Post by SWL »

Вместо

Code: Select all

if (BandIndex >= 0) {
      if (state.VFO[state.VFO_Index] < Bands[BandIndex].start) 
        state.VFO[state.VFO_Index] =Bands[BandIndex].end ;
      else if (state.VFO[state.VFO_Index] > Bands[BandIndex].end) 
        state.VFO[state.VFO_Index] =Bands[BandIndex].start ;
в TRX.cpp

По ошибке в личку кинул :D
Уже бегу домой с работы - смогу ответить ближе к 20:00 :oops:
Last edited by SWL on 26 Jul 2021, 17:40, edited 1 time in total.
UR5FFR
Site Admin
Posts: 2189
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Универсальный синтезатор Si570/Si5351

Post by UR5FFR »

В конце пропущена фигурная скобка

Code: Select all

else if (state.VFO[state.VFO_Index] > Bands[BandIndex].end && BandIndex < BAND_COUNT-1) {
SWL
Posts: 94
Joined: 23 Feb 2021, 10:53
Позывной: SWL

Re: Универсальный синтезатор Si570/Si5351

Post by SWL »

Работает!
Но на первом диапазоне при уменьшении частоты до начала диапазона продолжает до 0 Гц, дальше при продолжении вращения валкодера в ту же сторону начинает увеличивать частоту :D
Ну и при достижении конца последнего диапазона продолжает расти частота.
До упора вправо не крутил :D - боюсь выйти в оптический диапазон :shock:
А так работает без проблем :D
Спасибо!
UR5FFR
Site Admin
Posts: 2189
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Универсальный синтезатор Si570/Si5351

Post by UR5FFR »

Code: Select all

      if (state.VFO[state.VFO_Index] < Bands[BandIndex].start) {
        if (BandIndex > 0) {
          SwitchToBand(BandIndex-1); // переключаем бенд
          state.VFO[state.VFO_Index] =Bands[BandIndex].end ; // становимся в конец
        } else
          state.VFO[state.VFO_Index] =Bands[BandIndex].start ; // становимся в начало
      }
      else if (state.VFO[state.VFO_Index] > Bands[BandIndex].end) {
        if (BandIndex < BAND_COUNT-1) {
          SwitchToBand(BandIndex+1); // переключаем бенд
          state.VFO[state.VFO_Index] =Bands[BandIndex].start ; // становимся в начало
        } else
          state.VFO[state.VFO_Index] =Bands[BandIndex].start ; // становимся в начало
      }
SWL
Posts: 94
Joined: 23 Feb 2021, 10:53
Позывной: SWL

Re: Универсальный синтезатор Si570/Si5351

Post by SWL »

С индикацией диапазонов фигня получается, вернее нифига не получается- такой вот когнитивный диссонанс получается :D
Вкратце чего надо - надо отобразить индикацию диапазонов в зависимости от частоты. Т.е забиваем пределы
частот по достижении которых включается индикация диапазона.
Например от 1810000 до 2000000 включается индикация 160м, при
входе в 49 метровый вещательный - индицирует 49м, в СВ сетка С- индицируем СВС, и т.д.
Вручную в скетч забиваем пределы частот и соответствующую им индикацию.
Именно хочу привязать к частоте, что бы если захочу поменять количество, или разбивку на диапазоны не менять индикацию.
Для любительских можно ввести индикацию по модам или обозначить dx окна, например.
Много чего можно индицировать.
А так на подхвате держу частотные планы на бумаге.
SWL
Posts: 94
Joined: 23 Feb 2021, 10:53
Позывной: SWL

Re: Универсальный синтезатор Si570/Si5351

Post by SWL »

Код проверю только сегодня вечером- вчера всё повырубал и только потом заметил, что внесены изменения.
Спасибо!
SWL
Posts: 94
Joined: 23 Feb 2021, 10:53
Позывной: SWL

Re: Универсальный синтезатор Si570/Si5351

Post by SWL »

Андрей!
Подскажите, пожалуйста, как организовать индикацию диапазонов.
SWL
Posts: 94
Joined: 23 Feb 2021, 10:53
Позывной: SWL

Re: Универсальный синтезатор Si570/Si5351

Post by SWL »

Спасибо, Андрей!
Все прекрасно работает!
Единственное , что я заменил в последней строчке start на end , для остановки в конце последнего диапазона, а то переходил в начало последнего диапазона.
Теперь границы первого и последнего держит, и переходит с диапазона на диапазон при перестройке!
Еще раз спасибо!

UR5FFR wrote:

Code: Select all

  } else
          state.VFO[state.VFO_Index] =Bands[BandIndex].end ; // становимся в начало
      }  
SWL
Posts: 94
Joined: 23 Feb 2021, 10:53
Позывной: SWL

Re: Универсальный синтезатор Si570/Si5351

Post by SWL »

С индикацией диапазонов сделал так:

Code: Select all

 { 
int bands = 0;
  if (trx.state.VFO[trx.GetVFOIndex()] > 1810000 && trx.state.VFO[trx.GetVFOIndex()] < 2000000 )
	  bands = 160;
    else drawBtn(0, 35, 55, 33, "      ", ILI9341_BLACK, ILI9341_BLACK);	
  if (trx.state.VFO[trx.GetVFOIndex()] > 3500000 && trx.state.VFO[trx.GetVFOIndex()] < 3800000 )
bands = 80;	  
    else drawBtn(0, 35, 55, 33, "      ", ILI9341_BLACK, ILI9341_BLACK);	
   if (trx.state.VFO[trx.GetVFOIndex()] > 7000000 && trx.state.VFO[trx.GetVFOIndex()] < 7200000 )
bands = 40;   
	else drawBtn(0, 35, 55, 33, "      ", ILI9341_BLACK, ILI9341_BLACK);	  
  if (trx.state.VFO[trx.GetVFOIndex()] > 14000000 && trx.state.VFO[trx.GetVFOIndex()] < 14350000 ) 
  bands = 20;
	else drawBtn(0, 35, 55, 33, "      ", ILI9341_BLACK, ILI9341_BLACK);	  
  if (trx.state.VFO[trx.GetVFOIndex()] > 21000000 && trx.state.VFO[trx.GetVFOIndex()] < 21450000 )	
bands = 15;  
	else drawBtn(0, 35, 55, 33, "      ", ILI9341_BLACK, ILI9341_BLACK);	
	
 unsigned long time = millis ();
	if (millis () - time >500) 
		{
		time = millis();	
 if (bands !=0   )	 {
	    tft.setTextColor(ILI9341_WITE);
		tft.setFont(&Tahoma18);
		tft.setTextSize(1);
		tft.setCursor(0, 70);		
		tft.print(bands);	
		}		
	 	else   {
			drawBtn(0, 35, 55, 33, "      ", ILI9341_BLACK, ILI9341_BLACK);
		}	
	}
   }
Проверил без задержки индикации - мерцают цифры.
С задержкой проверю только вечером.
Направление хоть правильное?
Или не там копаю?
Last edited by SWL on 28 Jul 2021, 10:20, edited 1 time in total.
UR5FFR
Site Admin
Posts: 2189
Joined: 21 Apr 2012, 22:00
Позывной: UR5FFR
Location: Odessa

Re: Универсальный синтезатор Si570/Si5351

Post by UR5FFR »

Вечером гляну - щаз нет времени
Post Reply