управление модулем si5351

Vlad_58
Offline
Зарегистрирован: 14.03.2020

Всем привет.Поскольку с некоторых пор немного ограничен тяжёлым трудом, и являясь радиолюбителем,решил я отремонтировать свой приёмник с двойным преобразованием,обрадовавшись тому что нашёл в инете скетч "синтезатора частоты на si5351".Заказал на АЛИ необходимые платы и сижу тут кулибничаю но пока не очень.Залил скетч,но у меня работает только CLK0,но мне нужны и другие выходы.Попробовал по своему как я вычитал и как понял ,но пока никак.Может кто подскажет как заставить работать CLK1 и CLK2?Вот данный скетч:

Тут конечно есть и мои "грехи",т.е. где то что то комментировал







/*
Вся эта программа изначально написана NT7S и SQ9NJE.
Оригинальный код, немного подправленный мною, под мои нужды.
Ознакомится с оригиналом можно здесь
http://nt7s.com/
http://sq9nje.pl/
http://ak2b.blogspot.com/
*/

#include <rotary.h>
#//include <si5351.h>
#include <RWE_si5351.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

  #define F_MIN        1000000L               // Нижний предел частоты
  #define F_MAX        30000000L              // Верхний предел частоты
  #define OLED_RESET   4
  #define ENCODER_A    3                      // Encoder pin A
  #define ENCODER_B    2                      // Encoder pin B
  #define ENCODER_BTN  5  
  
  //#define LCD_RS    5.
  //#define LCD_E     6
  //#define LCD_D4    7
  //#define LCD_D5    8
  //#define LCD_D6    9
  //#define LCD_D7    10

// переменные нужные для кнопок PRE/ATT
 int regim=1; // для кнопки
 int flag=0;  // для кнопки
  LiquidCrystal_I2C lcd(0x27,16,2);//Создается экземпляр класса из библиотеки 
  Si5351 si5351;
  Rotary r = Rotary(ENCODER_A, ENCODER_B);


// Для кварцевых резонаторов со значением 8867 МГц.  
//volatile uint32_t LSB = 900000000ULL;//886300000ULL; //частота ОГ(гетеродина) для "нижней" боковой. Настр. на ниж. скат КФ.
//volatile uint32_t USB = 900000000ULL;//886700000ULL; //частота ОГ(гетеродина) для "верхней" боковой. Настр. на вверхн. скат КФ.
volatile uint32_t bfo = 900000000ULL;//886700000ULL; //стартовать с "верхней" ...
//Эти USB/LSB частоты добавляется или вычитается из частоты VFO в "void loop()"
//В этом примере если начальная частота будет 14.20000 плюс 9.001500 то на выходе clk0 = 23.2015Mhz
volatile uint32_t vfo = 700000000ULL / SI5351_FREQ_MULT; //стартовая частота при запуске синтезатора.
volatile uint32_t radix = 100;  // Шаг перестройки по умолчанию при старте = 100 кГц
boolean changed_f = 0;
String tbfo = "";


//------------------ Установка дополнительных функций здесь  ---------------------------
//Удалить коммент (//) для применения нужного варианта. Задействовать только одно.
//#define IF_Offset // Показание на ЖКИ плюс(минус) на значение ПЧ
#define Direct_conversion // чатота на выходе как на ЖКИ. Прямой выход. Генератор.
//#define FreqX4  // частота на выходе, умноженная на четыре ...
//#define FreqX2  // частота на выходе, умноженная на два ...
//---------------------------------------------------------------------------------------

/**************************************/
/* Interrupt service routine for      */
/* encoder frequency change           */
/**************************************/
ISR(PCINT2_vect) {
  unsigned char result = r.process();
  if (result == DIR_CW)
    set_frequency(1);
  else if (result == DIR_CCW)
    set_frequency(-1);
}

/**************************************/
/* Change the frequency               */
/* dir = 1    Increment               */
/* dir = -1   Decrement               */
/**************************************/
void set_frequency(short dir)
{
  if (dir == 1)
   vfo += radix;
  if (dir == -1)
    vfo -= radix;

      if(vfo > F_MAX)
       vfo = F_MAX;
       if(vfo < F_MIN)
        vfo = F_MIN;

  changed_f = 1;
}

/**************************************/
/* Read the button with debouncing    */
/**************************************/
boolean get_button()
{
  if (!digitalRead(ENCODER_BTN))
  {
    delay(20);
    if (!digitalRead(ENCODER_BTN))
    {
      while (!digitalRead(ENCODER_BTN));
      return 1;
    }
  }
  return 0;
}

/**************************************/
/* Displays the frequency             */
/**************************************/
void display_frequency()
{
  uint16_t f, g;

  lcd.setCursor(3, 0);
  f = vfo / 1000000; 	//variable is now vfo instead of 'frequency'
  if (f < 10)
    lcd.print(' ');
  lcd.print(f);
  lcd.print('.');
  f = (vfo % 1000000) / 1000;
  if (f < 100)
    lcd.print('0');
  if (f < 10)
    lcd.print('0');
  lcd.print(f);
  lcd.print('.');
  f = vfo % 1000;
  if (f < 100)
    lcd.print('0');
  if (f < 10)
    lcd.print('0');
  lcd.print(f);
  lcd.print("Hz ");
  lcd.setCursor(0, 1);
  lcd.print(tbfo);
  //Serial.println(vfo + bfo);
  //Serial.println(tbfo);
}

/**************************************/
/* Отображаем шаг изменения частоты */
/**************************************/
void display_radix()
{
  lcd.setCursor(9, 1);
  switch (radix)
  {
    case 1:
      lcd.print("    1");
      break;
    case 10:
      lcd.print("   10");
      break;
    case 100:
      lcd.print("  100");
      break;
    case 1000:
      lcd.print("   1k");
      break;
    case 10000:
      lcd.print("  10k");
      break;
    case 100000:
      //lcd.setCursor(10, 1);
      lcd.print(" 100k");
      break;
      case 1000000:
      //lcd.setCursor(9, 1);
      lcd.print("   1MHz"); //1MHz increments
      break;
  }
  lcd.print("Hz");
}

void setup()
{


 // начальное сообщение
   
   lcd.init();
   lcd.backlight();
   lcd.setCursor(2, 0);
   lcd.print("HELLO RA4ART");
   delay (1000);
   lcd.clear(); 
   lcd.setCursor(0, 0);
   lcd.print("SINTEZ on Si5351"); // текст на экране - "  HELLO !!! "
   lcd.setCursor(2, 1);
   lcd.print("Gotov k rabote");
   delay(1000); // Время на прочтение начального сообщения 1 сек   
  lcd.clear();
  Serial.begin(19200);
  Wire.begin();
  
  si5351.set_correction(57500); //**mine. There is a calibration sketch in File/Examples/si5351Arduino
  //where you can determine the correction by using the serial monitor.
  //ввести калибровочное знечение в строчке si5351.set_correction(хххххххх).
  //Нужно вычислить запустив "si5351calibration" в папке с примерами библиотеки si5351.
  
  //initialize the Si5351
 
  //si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0); //If you're using a 27Mhz crystal, put in 27000000 instead of 0
  // 0 is the default crystal frequency of 25Mhz.

  si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
  // Set CLK0 to output the starting "vfo" frequency as set above by vfo = ?

#ifdef IF_Offset
  si5351.set_freq((vfo * SI5351_FREQ_MULT) + bfo, SI5351_PLL_FIXED, SI5351_CLK0);
  volatile uint32_t vfoT = (vfo * SI5351_FREQ_MULT) + bfo;
  tbfo = "USB";
  //Set CLK2 to output bfo frequency

                                                          //si5351.set_clock_source(SI5351_CLK2, SI5351_CLK_SRC_MS0);
                                                         //si5351.output_enable(SI5351_CLK2, 1);
  
  //si5351.set_freq( bfo, 0, SI5351_CLK2);
  //si5351.set_freq( bfo, 0, SI5351_CLK1);
  //si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_2MA); //you can set this to 2MA, 4MA, 6MA or 8MA
  si5351.drive_strength(SI5351_CLK1,SI5351_DRIVE_2MA); //be careful though - measure into 50ohms
  si5351.drive_strength(SI5351_CLK2,SI5351_DRIVE_2MA); //
                
#endif
                                                 // si5351.set_freq((bfo * SI5351_FREQ_MULT),SI5351_PLL_FIXED , SI5351_CLK1);//
#ifdef Direct_conversion
  si5351.set_freq((vfo * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0);
#endif
                                                                                                                                           
#ifdef FreqX4
  si5351.set_freq((vfo * SI5351_FREQ_MULT) * 4, SI5351_PLL_FIXED, SI5351_CLK0);
#endif

#ifdef FreqX2
  si5351.set_freq((vfo * SI5351_FREQ_MULT) * 2, SI5351_PLL_FIXED, SI5351_CLK0);
#endif

  pinMode(ENCODER_BTN, INPUT_PULLUP);
  PCICR |= (1 << PCIE2);           // Enable pin change interrupt for the encoder
  PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
  sei();
  display_frequency();  // Update the display
  display_radix();

// Порты, пины для управл. напр. УВЧ и АТТ 
 pinMode(6,OUTPUT);  // для кнопки УВЧ = A2
 pinMode(7,OUTPUT);  //  для кнопки АТТ = A1
 
 // Порты, пины управл. напр. для дешифр. CD4028 
 pinMode(8,OUTPUT);  // b0 для A
 pinMode(9,OUTPUT);  // b1 для B
 pinMode(10,OUTPUT);  // b2 для D
 pinMode(11,OUTPUT);  // b3 для C

}


void loop() 

{
  // Update the display if the frequency has been changed
  if (changed_f)
  {
    display_frequency();

#ifdef IF_Offset
    si5351.set_freq((vfo * SI5351_FREQ_MULT) + bfo, SI5351_PLL_FIXED, SI5351_CLK0);
    // Вы также можете вычесть BFO, чтобы удовлетворить ваши потребности
    //si5351.set_freq((vfo * SI5351_FREQ_MULT) - bfo  , SI5351_PLL_FIXED, SI5351_CLK0);

    if (vfo >= 10000000ULL & tbfo != "USB")
    {
      bfo = USB;
      tbfo = "USB";
      si5351.set_freq( bfo, 1, SI5351_CLK2);//( bfo, 0, SI5351_CLK2)
      Serial.println("We've switched from LSB to USB");
    }
    else if (vfo < 10000000ULL & tbfo != "LSB")
    {
      bfo = LSB;
      tbfo = "LSB";
      si5351.set_freq( bfo, 0, SI5351_CLK2);//( bfo, 0, SI5351_CLK2)
      Serial.println("We've switched from USB to LSB");
    }

#endif
                       
#ifdef Direct_conversion
    si5351.set_freq((vfo * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0);
    tbfo = "";
#endif

#ifdef FreqX4
    si5351.set_freq((vfo * SI5351_FREQ_MULT) * 4, SI5351_PLL_FIXED, SI5351_CLK0);
    tbfo = "";
#endif

#ifdef FreqX2
    si5351.set_freq((vfo * SI5351_FREQ_MULT) * 2, SI5351_PLL_FIXED, SI5351_CLK0);
    tbfo = "";
#endif

    changed_f = 0;
  }
  
// Кнопки УВЧ и АТТ ---------------------------------
{ 
     if(digitalRead(4)==HIGH&&flag==0)//если кнопка нажата   
     // и перемення flag равна 0 , то ... 
     { 
       regim++;   
       flag=1; 
         
        //это нужно для того что бы с каждым нажатием кнопки 
        //происходило только одно действие 
        // плюс защита от "дребезга"  100% 
          
        if(regim>4)//ограничим количество режимов 
        { 
          regim=1;//так как мы используем только одну кнопку, 
                    // то переключать режимы будем циклично 
        } 
       
     }   
      if(digitalRead(4)==LOW && flag==1)//если кнопка НЕ нажата 
     //и переменная flag равна - 1 ,то ... 
     {     
        flag=0;//обнуляем переменную "knopka" 
     } 
             
    if(regim==1)//первый режим - очистка экрана
    { 
      digitalWrite(6,LOW);// на пине нулевой уровень
      digitalWrite(7,LOW); 
      lcd.setCursor(5, 1); 
      lcd.print("   "); //  "пустое место"        
        
      //здесь может быть любое ваше действие 
    } 
    if(regim==2)//второй режим  - вкл. УВЧ
    { 
      digitalWrite(6,LOW);//включает PRE
      digitalWrite(7,HIGH); 
      lcd.setCursor(5, 1); // место на экране для PRE 
      lcd.print("PRE"); 
          
      //здесь может быть любое ваше действие 
    } 

    if(regim==3)//третий режим - очистка экрана
    
    { 
      digitalWrite(6,LOW);//
      digitalWrite(7,LOW); 
      lcd.setCursor(5, 1); // место текста на экране 
      lcd.print("   ");    //  "пустое место"       
        
      //здесь может быть любое ваше действие 
    } 

      
    if(regim==4)//третий режим - вкл. АТТ
    {  
      digitalWrite(6,HIGH);//включает АТТ
      digitalWrite(7,LOW); 
      lcd.setCursor(5, 1); // место на экране для АТТ  
      lcd.print("ATT");    
    } 
//  --------------------------------
//  для кнопки РТТ -----------------



//  ---------------------------------

// Для управления CD4028
//---A0-A1-A2-A3 ---pin, porn Arduino Pro Mini
//---b0-b1-b2-b3----band
//---00-00-00-00----160m 
//---11-00-00-00-----80m 
//---00-11-00-00-----40m 
//---11-11-00-00-----30m 
//---00-00-11-00-----20m 
//---11-00-11-00-----17m 
//---00-11-11-00-----15m 
//---11-11-11-00-----12m 
//---00-00-00-11-----10m 

// Band 160
         if (vfo >= 1000000ULL && vfo <= 3000000ULL)
       {  
     digitalWrite(8,LOW); // на пине нулевой уровень
     digitalWrite(9,LOW); // на пине нулевой уровень
     digitalWrite(10,LOW); // на пине нулевой уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
        }
       
// Band 80
        if (vfo >= 3000001ULL && vfo <= 5000000ULL)
       {
     digitalWrite(8,HIGH); // на пине высокий уровень
     digitalWrite(9,LOW); // на пине нулевой уровень
     digitalWrite(10,LOW); // на пине нулевой уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
       }
// Band 40
        if (vfo >= 5000001ULL && vfo <= 8000000ULL)
        {
     digitalWrite(8,LOW); // на пине нулевой уровень
     digitalWrite(9,HIGH); // на пине высокий уровень
     digitalWrite(10,LOW); // на пине нулевой уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
        }
// Band 30
        if (vfo >= 8000001ULL && vfo <= 120000000ULL)
        {
     digitalWrite(8,HIGH); // на пине высокий уровень
     digitalWrite(9,HIGH); // на пине высокий уровень
     digitalWrite(10,LOW); // на пине нулевой уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
        }
// Band 20
        if (vfo >= 12000001ULL && vfo <= 15000000ULL)
        {
     digitalWrite(8,LOW); // на пине нулевой уровень
     digitalWrite(9,LOW); // на пине нулевой уровень
     digitalWrite(10,HIGH); // на пине высокий уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
        }
// Band 17
        if (vfo >= 15000001ULL && vfo <= 19000000ULL)
        {
     digitalWrite(8,HIGH); // на пине высокий уровень
     digitalWrite(9,LOW); // на пине нулевой уровень
     digitalWrite(10,HIGH); // на пине высокий уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
        }
// Band 15
        if (vfo >= 19000001ULL && vfo <= 23000000ULL)
       { 
     digitalWrite(8,LOW); // на пине нулевой уровень
     digitalWrite(9,HIGH); // на пине высокий уровень
     digitalWrite(10,HIGH); // на пине высокий уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
       }
// Band 12
        if (vfo >= 23000001ULL && vfo <= 26000000ULL)
       {
     digitalWrite(8,HIGH); // на пине высокий уровень
     digitalWrite(9,HIGH); // на пине высокий уровень
     digitalWrite(10,HIGH); // на пине высокий уровень
     digitalWrite(11,LOW); // на пине нулевой уровень
       }
// Band 10
        if (vfo >= 26000001ULL && vfo <= 30000000ULL)
        {
     digitalWrite(8,LOW); // на пине нулевой уровень
     digitalWrite(9,LOW); // на пине нулевой уровень
     digitalWrite(10,LOW); // на пине нулевой уровень
     digitalWrite(11,HIGH); // на пине высокий уровень
        }

// HAM BAND ----- Границы диапазонов ---------
// 160-метровый (1,81 - 2 МГц)
         if (vfo >= 1000000ULL && vfo <= 3000000ULL)//if (vfo >= 1810000ULL && vfo <= 2000000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("160m"); 
         }

          else
// 80-метровый (3,5 - 3,8 МГц)
         if (vfo >= 3000001ULL && vfo <= 5000000ULL)//if (vfo >= 3500000ULL && vfo <= 3800000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("80m "); 
         }
else
// 40-метровый (7 - 7,2 МГц)
         if (vfo >= 5000001ULL && vfo <= 8000000ULL)//if (vfo >= 7000000ULL && vfo <= 7200000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("40m "); 
         }
else
// 30-метровый (только телеграф 10,1 - 10,15 МГц)
         if (vfo >= 8000001ULL && vfo <= 12000000ULL)//if (vfo >= 10100000ULL && vfo <= 10150000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("30m "); 
         }
else
// 20-метровый (14 - 14,35 МГц)
         if (vfo >= 12000001ULL && vfo <= 15000000ULL)//if (vfo >= 14000000ULL && vfo <= 14350000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("20m "); 
         }
else
// 17-метровый (18,068 - 18,168 МГц)
         if (vfo >= 15000001ULL && vfo <= 19000000ULL)//if (vfo >= 18068000ULL && vfo <= 18168000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("17m "); 
         }
else
// 15-метровый (21 - 21,45 МГц)
         if (vfo >= 19000001ULL && vfo <= 23000000ULL)//if (vfo >= 21000000ULL && vfo <= 21450000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("15m "); 
         }
else
// 12-метровый (24,89 - 25,14 МГц)
         if (vfo >= 23000001ULL && vfo <= 26000000ULL)//if (vfo >= 24890000ULL && vfo <= 25140000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("12m "); 
         }
else
// 10-метровый (28 - 29,7 МГц)
         if (vfo >= 26000001ULL && vfo <= 30000000ULL)//if (vfo >= 28000000ULL && vfo <= 29700000ULL)
         {
         lcd.setCursor(0, 1);
         lcd.print("10m "); 
         }
/*else
// Если за границей любительских - очистка экрана
         {
         lcd.setCursor(0, 1);
         lcd.print("    "); 
         }*/

  //-----------------------------------       
  // Button press changes the frequency change step for 1 Hz steps
  if (get_button())
  {
    switch (radix)
    {
      case 1:
        radix = 10;
        break;
      case 10:
        radix = 100;
        break;
      case 100:
        radix = 1000;
        break;
      case 1000:
        radix = 10000;
        break;
      case 10000:
        radix = 100000;
        break;
      case 100000:
        radix = 1000000;
        break;
       case 1000000:
        radix = 1;
        break;
    }
    display_radix();
  }
     

}

  
}

 

Vlad_58
Offline
Зарегистрирован: 14.03.2020

В данном виде на LCD выведена частота без учёта bfo,а хотелось бы иметь ещё и bfo1

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ну так надо пытать, я думаю, аффтора сего скетча

Vlad_58
Offline
Зарегистрирован: 14.03.2020

дело в том,что пока автор писал,я наверное спал(шучу),тема давняя,он наверное про это и забыл.Авторы в начале указаны,но редактор -радиолюбитель из Нижнего Новгорода.Если никто не сможет подсказать,то придётся поискать его данные и написать.

http://rfanat.ru/s25/dds_sio5351_pro-min.html

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

На Вашем месте я бы почитал описание библиотеки  si5351.h и примеры ее использования.

Vlad_58
Offline
Зарегистрирован: 14.03.2020

Всем спасибо кто ответил и кто не пожелал ответить.Всё ОК!!!!.Как говорится в одном фильме,"...эта сковородка заработала".Много было ошибок,и многое меня не устраивало.Теперь не только разобрался,но и внёс своё,т.е. работает от 1000кГц до 126 мГц с разделением диапазонов на АМ, КВ-любительские и ФМ приём,переключать можно на 2-ое преобразование и с одним преобразованием.Теперь осталось печатку сворганить и посадить на плату приёмника.

 

Тема закрыта!!!!!!!!!!!!!!!!!!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а скетч?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Скетч был в первом сообщении, ТС не обещал результат выкладывать. Хотя я бы тоже взглянул. Но это уже скорее просьба, чем помощь...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

BOOM пишет:

Скетч был в первом сообщении, ТС не обещал результат выкладывать. Хотя я бы тоже взглянул. Но это уже скорее просьба, чем помощь...

это правило хорошего тона, сказал А, скажи и Б

Vlad_58
Offline
Зарегистрирован: 14.03.2020

Всем доброе время суток! Дело в том ,что все молчали, выложить скетч мне не жалко,но боюсь что получу много пощёчин типа это не так это не то.Я его делал под себя.Да ещё в плане несколько кнопок управления подключить,но по мере возможностей я это постараюсь сделать.Планы были таковые:сделать приёмник на большой диапазон.Он т.е. синтезатор уже работает от 1 до 129мГц с 1-ым ПЧ-6мГц 2-ым ПЧ-500кГц(за основу пока взял структуру UW3DI больше ничего в голову не пришло)Просто я их уже делал,а так же дала и с одним преобразованием,но не понравилось то что зеркалка проникает какие бы я на входе не делал контура,и поэтому решил с двойным преобразование.В любой момент можно их отключить.На CLK0 у меня ГПД, на CLK1 диапазонный и на CLK2 -опорник.А так же внесены диапазоны FM и выше на сколько смог.Прошу сильно не пинать.Выкладываю скетч сюда в тексте,но кого заинтересует могу прислать и сам скетч на мыло.ra4art@mail.ru

Все редактирования(ремирования) делал для себя.

Обнаружил кое что и решил вернуть обратно и попробую исправить








 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

По зеркалке - надо правильно выбрать частоту ФОС, к примеру как у K2 или ДЛ-76 тот же, по всем диапазонам не скажу но 7ка у ДЛ-76 была изумительна...
Правда, если хотим сплошным диапазоном от 1 до 30, то тогда преобразование вверх решает проблему, но увеличивает шумы )))

Vlad_58
Offline
Зарегистрирован: 14.03.2020

Да тут речь не о преобразовании вверх или вниз,речь о двойном преобразовании.Может  не прав,но мне кажется этот вариант лучше (исходя из практики того что я делал).Хотя здесь вообщем то тема не про приём.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Vlad_58 пишет:

Да тут речь не о преобразовании вверх или вниз,речь о двойном преобразовании.Может  не прав,но мне кажется этот вариант лучше (исходя из практики того что я делал).Хотя здесь вообщем то тема не про приём.

двойное будет всегда проигрывать! шумы преобразования однако )))

Igorminskiy
Igorminskiy аватар
Offline
Зарегистрирован: 26.03.2020

Всем доброго дня! Помогите пожалуйста советом как сделать VFO  для трансивера ПП на Arduino mega и TFT LCD 3.5"ILI9486/9488 ?  Не гнобите пож коллеги. Вы же тоже вначале испытывали трудности. С уважением EU1KI. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

ты сначала вообще запусти свой дисплей на Меге, штоп он хоть чота показывал.  А потом будешь прикручивать куда угодно. 

Igorminskiy
Igorminskiy аватар
Offline
Зарегистрирован: 26.03.2020

Tak вот я не пойму, как это сделать. Механически я подключил, экран светится. B Ардуино мега залил софт с родного сайта. А вот дальше не понятно

Vlad_58
Offline
Зарегистрирован: 14.03.2020

Igorminskiy пишет:

Всем доброго дня! Помогите пожалуйста советом как сделать VFO  для трансивера ПП на Arduino mega и TFT LCD 3.5"ILI9486/9488 ?  Не гнобите пож коллеги. Вы же тоже вначале испытывали трудности. С уважением EU1KI. 

Я про мега не знаю,но думаю нужно просто сравнить УНО с МЕГА по портам и т.д.,а вообще напишите мне на мыло,попробую чем смогу.Я же тоже начинающий....

 

Vlad_58
Offline
Зарегистрирован: 14.03.2020

А почему для начала не использовать простой 2-х строчник а потом уже дальше.

Igorminskiy
Igorminskiy аватар
Offline
Зарегистрирован: 26.03.2020

Так пока в наличии только такой дисплей

Vlad_58
Offline
Зарегистрирован: 14.03.2020

Я ТФТ не занимался,но нужно посмотреть в примерах ардуино,там что такое есть.

Vlad_58
Offline
Зарегистрирован: 14.03.2020

2-х строчники по моему продаются чуть ли не в хозтоварах.Я например переделал с графического на 2-х строчник,т.к. нет пока в наличии (ещё в пути)графического.Здесь на многие мои планы не хватает места на экране,но главное что синтез уже работает.Сейчас занимаюсь сервисом