exit status 1 Ошибка компиляции для платы Arduino Nano.Задолбало

DAFdriver
Offline
Зарегистрирован: 12.08.2016

  Исправил пишет : Arduino: 1.8.1 (Windows 7), Плата:"Arduino Nano, ATmega328"

 
C:\Users\User\Documents\Arduino\calculator\graphicstest\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino:18:20: fatal error: Ucglib.h: No such file or directory
 
 #include <Ucglib.h>
 
                    ^
 
compilation terminated.
 
exit status 1
Ошибка компиляции для платы Arduino Nano.
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\ad9850adafuilt: C:\Program Files (x86)\Arduino\libraries\ad9850adafuilt
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160: C:\Program Files (x86)\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\LCD_ID_Reader: C:\Program Files (x86)\Arduino\libraries\LCD_ID_Reader
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\OLED_RUS: C:\Program Files (x86)\Arduino\libraries\OLED_RUS
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\simple_dds_st7735_2: C:\Program Files (x86)\Arduino\libraries\simple_dds_st7735_2
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT-Shield-Example-Code-master: C:\Program Files (x86)\Arduino\libraries\TFT-Shield-Example-Code-master
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT_Touch_Shield: C:\Program Files (x86)\Arduino\libraries\TFT_Touch_Shield
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT_Ucglib: C:\Program Files (x86)\Arduino\libraries\TFT_Ucglib
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TSCalibration: C:\Program Files (x86)\Arduino\libraries\TSCalibration
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\ucglib-master: C:\Program Files (x86)\Arduino\libraries\ucglib-master
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\utf8rus3: C:\Program Files (x86)\Arduino\libraries\utf8rus3
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\UTFT: C:\Program Files (x86)\Arduino\libraries\UTFT
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\ad9850adafuilt: C:\Program Files (x86)\Arduino\libraries\ad9850adafuilt
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160: C:\Program Files (x86)\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\LCD_ID_Reader: C:\Program Files (x86)\Arduino\libraries\LCD_ID_Reader
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\OLED_RUS: C:\Program Files (x86)\Arduino\libraries\OLED_RUS
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\simple_dds_st7735_2: C:\Program Files (x86)\Arduino\libraries\simple_dds_st7735_2
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT-Shield-Example-Code-master: C:\Program Files (x86)\Arduino\libraries\TFT-Shield-Example-Code-master
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT_Touch_Shield: C:\Program Files (x86)\Arduino\libraries\TFT_Touch_Shield
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT_Ucglib: C:\Program Files (x86)\Arduino\libraries\TFT_Ucglib
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TSCalibration: C:\Program Files (x86)\Arduino\libraries\TSCalibration
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\ucglib-master: C:\Program Files (x86)\Arduino\libraries\ucglib-master
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\utf8rus3: C:\Program Files (x86)\Arduino\libraries\utf8rus3
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\UTFT: C:\Program Files (x86)\Arduino\libraries\UTFT
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
T.Rook
Offline
Зарегистрирован: 05.03.2016

DAFdriver пишет:

  Исправил пишет : Arduino: 1.8.1 (Windows 7), Плата:"Arduino Nano, ATmega328"

 
C:\Users\User\Documents\Arduino\calculator\graphicstest\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino:18:20: fatal error: Ucglib.h: No such file or directory
 
 #include <Ucglib.h>
 
                    ^
 
compilation terminated.
 
exit status 1

Вам четко пишет: не найдена библиотека  Ucglib.h. т.к в исходном скетче она была указана в кавычках, то ожидалось наличие этой библиотеки в каталоге с Вашим скетчем. Если ее там не находит, то, очевидно, Вы не все  стянули вместе со скетчем. 

Альтернативный путь: установить библиотеку (скачать и установить) и указать #include <Ucglib.h>

В любом случае, где-то, по доступным IDE путям, библиотека должна быть.

UPD: Хотя я надеялся, что она у Вас есть в каталоге: C:\PF(x86)\Arduino\libraries\ucglib-master

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

Отсюда скачали?

В скетче правильно прописано, только закиньте эту библиотеку (два файла) в папку со скетчем

DAFdriver
Offline
Зарегистрирован: 12.08.2016

   Нет был другой зип , поставил Ваш , теперь пишет : 

Arduino: 1.8.1 (Windows 7), Плата:"Arduino Nano, ATmega328"

C:\Users\User\Documents\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino: In function 'void setup()':

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:67: error: 'ucg_font_9x15_tf' was not declared in this scope

   ucg.setFont(ucg_font_9x15_tf);

               ^

C:\Users\User\Documents\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino: In function 'void Perform_sweep()':

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:206: error: 'ucg_font_9x15_tf' was not declared in this scope

   ucg.setFont(ucg_font_9x15_tf);

               ^

C:\Users\User\Documents\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino: In function 'void CreateGrid()':

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:330: error: 'ucg_font_9x15_tf' was not declared in this scope

   ucg.setFont(ucg_font_9x15_tf);

               ^

Несколько библиотек найдено для "Ucglib.h"
 Используется: C:\Program Files (x86)\Arduino\libraries\Ucglib
Не используется: C:\Users\User\Documents\Arduino\libraries\Ucglib
exit status 1
'ucg_font_9x15_tf' was not declared in this scope

Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\ad9850adafuilt: C:\Program Files (x86)\Arduino\libraries\ad9850adafuilt
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\LCD_ID_Reader: C:\Program Files (x86)\Arduino\libraries\LCD_ID_Reader
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\OLED_RUS: C:\Program Files (x86)\Arduino\libraries\OLED_RUS
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\simple_dds_st7735_2: C:\Program Files (x86)\Arduino\libraries\simple_dds_st7735_2
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT-Shield-Example-Code-master: C:\Program Files (x86)\Arduino\libraries\TFT-Shield-Example-Code-master
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT_Touch_Shield: C:\Program Files (x86)\Arduino\libraries\TFT_Touch_Shield
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TFT_Ucglib: C:\Program Files (x86)\Arduino\libraries\TFT_Ucglib
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\TSCalibration: C:\Program Files (x86)\Arduino\libraries\TSCalibration
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\ucglib-master: C:\Program Files (x86)\Arduino\libraries\ucglib-master
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\utf8rus3: C:\Program Files (x86)\Arduino\libraries\utf8rus3
Неверная библиотека найдена в C:\Program Files (x86)\Arduino\libraries\UTFT: C:\Program Files (x86)\Arduino\libraries\UTFT

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

     Я так понял ругается на эту строку :   ucg.setFont(ucg_font_9x15_tf);

 Что-то в ней нужно поменять ?

 

 

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

А использует какую -  Используется: C:\Program Files (x86)\Arduino\libraries\Ucglib
А нужно скачанную, остальные все удалите

DAFdriver
Offline
Зарегистрирован: 12.08.2016

  Извиняюсь . Нужно удалить ардуино из : C:\Progrm Files (86) и оставить в: Библиотека : документы?

  Или файл удалить иззагузки ? и какихлибо папок , если ткие существуют .

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

DAFdriver пишет:

  Извиняюсь . Нужно удалить ардуино из : C:\Progrm Files (86) и оставить в: Библиотека : документы?

  Или файл удалить иззагузки ? и какихлибо папок , если ткие существуют .

из этих удалить

C:\Program Files (x86)\Arduino\libraries\Ucglib

Не используется: C:\Users\User\Documents\Arduino\libraries\Ucglib
 
Библиотеку в папке скетча подключать через двойные кавычки  - "Ucglib.h"
Если все сделано правильно в скетче должны появиться две закладки  - Ucglib.h и Ucglib.cpp
 
DAFdriver
Offline
Зарегистрирован: 12.08.2016

 У меня - Arduino-ide  находится в :C:\ Program Files 86 в ней libries в ней скетч с подключеными библиотеками и другие библиотеки . Их нужно удалить ??? .

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

DAFdriver пишет:

 У меня - Arduino-ide  находится в :C:\ Program Files 86 в ней libries в ней скетч с подключеными библиотеками и другие библиотеки . Их нужно удалить ??? .

А где должен находиться ваш скетч? Почитайтьте документацию хотя бы! В папке с программой его быть не должно!

На фонт ругается, значит в библиотеке его нет

К сожалению я с этими библиотеками не работал, где находятся фонты не знаю

Открыл пример и созерцаю ))) А у вас какой дисплей применяется

  >>> Please uncomment (and update) one of the following constructors. <<<  
*/
//Ucglib8BitPortD ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );
//Ucglib8Bit ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, 0, 1, 2, 3, 4, 5, 6, 7, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );

//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);	// not working
//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);	// not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8);	// not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8);	// not working

//Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);

//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5 , /*cs=*/ 3, /*reset=*/ 4);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 4, /*data=*/ 3, /*cd=*/ 6 , /*cs=*/ 7, /*reset=*/ 5);	/* Elec Freaks Shield */

//Ucglib_SSD1351_18x128x128_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);

//Ucglib_PCF8833_16x132x132_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 9, /*reset=*/ 8);	/* linksprite board */
//Ucglib_PCF8833_16x132x132_HWSPI ucg(/*cs=*/ 9, /*reset=*/ 8);	/* linksprite board */

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

 Я делал так : скачал иде- устаноил - скачал билиотеки с примерами и установил в с-86 - ардуино- либриес . Подключил ардуино - проверил - работает библиотеки грузятся дисплей показывает . Скачал архив для проэкта - разархивировал в с- 86-ардуино-либриес - и вот резулльтат . На форуме у кого грузится и работает , у кого нет.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

DAFdriver, запомните:

Пользовательские библиотеки ставьте в Мои документы\Arduino\libraries\  , соответственно заголовочный файл в скетче подключается так: #include <file.h>

Примеры из библиотек открывайте из меню "Файл" - "Примеры". Они там появятся после установки бибилиотеки и перезагрузки Arduino IDE.

Только если вы скачали чей-то проект и библиотека (заголовочный файл) находится в папке со скетчем, то подключать его надо так: #include "file.h" . В иных случай (при самостоятельной установке библиотеки) делайте как написано выше.

В C:\Program Files\Arduino\libraries\ вообще не лезьте. Ни в коем случае не нужно дублировать библиотеки в двух местах. Удалите оттуда всё, что сами добавили.

 

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

DAFdriver пишет:

 Я делал так : скачал иде- устаноил - скачал билиотеки с примерами и установил в с-86 - ардуино- либриес . Подключил ардуино - проверил - работает библиотеки грузятся дисплей показывает . Скачал архив для проэкта - разархивировал в с- 86-ардуино-либриес - и вот резулльтат . На форуме у кого грузится и работает , у кого нет.

еще раз! я спросил какой дисплей вы применяете

PS а какой у тех, у кого работает?

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Jeka_M пишет:

DAFdriver, запомните:

Пользовательские библиотеки ставьте в Мои документы\Arduino\libraries\  , соответственно заголовочный файл в скетче подключается так: #include <file.h>

Примеры из библиотек открывайте из меню "Файл" - "Примеры". Они там появятся после установки бибилиотеки и перезагрузки Arduino IDE.

Только если вы скачали чей-то проект и библиотека (заголовочный файл) находится в папке со скетчем, то подключать его надо так: #include "file.h" . В иных случай (при самостоятельной установке библиотеки) делайте как написано выше.

В C:\Program Files\Arduino\libraries\ вообще не лезьте. Ни в коем случае не нужно дублировать библиотеки в двух местах. Удалите оттуда всё, что сами добавили.

 

 

      Дисплей 1.8 SPI 128X160

 Так все и есть!!! Прэкт скачан  и все именно так , спасибо .

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

DAFdriver пишет:

 Так все и есть!!! Прэкт скачан  и все именно так , спасибо .

А вы убедились, что в папке со скетчем присутствовал файл Ucglib.h ?

Дайте ссылку на то, что вы скачали.

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

Приведите настройки этого пробного скетча для вашего дисплея

/*

  GraphicsTest.ino
  
  Generate some example graphics

  Universal uC Color Graphics Library
  
  Copyright (c) 2014, olikraus@gmail.com
  All rights reserved.

  Redistribution and use in source and binary forms, with or without modification, 
  are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice, this list 
    of conditions and the following disclaimer.
    
  * Redistributions in binary form must reproduce the above copyright notice, this 
    list of conditions and the following disclaimer in the documentation and/or other 
    materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  

*/

#include <SPI.h>
#include "Ucglib.h"

/*
  Hardware SPI Pins:
    Arduino Uno		sclk=13, data=11
    Arduino Due		sclk=76, data=75
    Arduino Mega	sclk=52, data=51
    
  >>> Please uncomment (and update) one of the following constructors. <<<  
*/
//Ucglib8BitPortD ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );
//Ucglib8Bit ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, 0, 1, 2, 3, 4, 5, 6, 7, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );

//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);	// not working
//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);	// not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8);	// not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8);	// not working

//Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);

//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5 , /*cs=*/ 3, /*reset=*/ 4);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 4, /*data=*/ 3, /*cd=*/ 6 , /*cs=*/ 7, /*reset=*/ 5);	/* Elec Freaks Shield */

//Ucglib_SSD1351_18x128x128_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);

//Ucglib_PCF8833_16x132x132_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 9, /*reset=*/ 8);	/* linksprite board */
//Ucglib_PCF8833_16x132x132_HWSPI ucg(/*cs=*/ 9, /*reset=*/ 8);	/* linksprite board */


#define T 4000
#define DLY() delay(2000)

/*
  Linear Congruential Generator (LCG)
  z = (a*z + c) % m;  
  m = 256 (8 Bit)
  
  for period:
  a-1: dividable by 2
  a-1: multiple of 4
  c: not dividable by 2
  
  c = 17
  a-1 = 64 --> a = 65
*/
uint8_t z = 127;	// start value
uint32_t lcg_rnd(void) {
  z = (uint8_t)((uint16_t)65*(uint16_t)z + (uint16_t)17);
  return (uint32_t)z;
}


void ucglib_graphics_test(void)
{
  ucg.setColor(0, 0, 40, 80);
  ucg.setColor(1, 80, 0, 40);
  ucg.setColor(2, 255, 0, 255);
  ucg.setColor(3, 0, 255, 255);
  
  ucg.drawGradientBox(0, 0, ucg.getWidth(), ucg.getHeight());

  ucg.setColor(255, 168, 0);
  ucg.setPrintDir(0);
  ucg.setPrintPos(2,18);
  ucg.print("Ucglib");
  ucg.setPrintPos(2,18+20);
  ucg.print("GraphicsTest");

  DLY();
}

void gradient(void)
{  
  ucg.setColor(0, 0, 255, 0);
  ucg.setColor(1, 255, 0, 0);
  ucg.setColor(2, 255, 0, 255);
  ucg.setColor(3, 0, 255, 255);

  ucg.drawGradientBox(0, 0, ucg.getWidth(), ucg.getHeight());
  
  ucg.setColor(255, 255, 255);
  ucg.setPrintPos(2,18);
  ucg.setPrintDir(0);
  ucg.print("GradientBox");

  ucg.setColor(0, 0, 255, 0);
  ucg.drawBox(2, 25, 8, 8);

  ucg.setColor(0, 255, 0, 0);
  ucg.drawBox(2+10, 25, 8, 8);

  ucg.setColor(0, 255, 0, 255);
  ucg.drawBox(2, 25+10, 8, 8);

  ucg.setColor(0, 0, 255, 255);
  ucg.drawBox(2+10, 25+10, 8, 8);

  DLY();
}

void box(void)
{
  ucg_int_t x, y, w, h;
  unsigned long m;
  
  ucg.setColor(0, 0, 40, 80);
  ucg.setColor(1, 60, 0, 40);
  ucg.setColor(2, 128, 0, 140);
  ucg.setColor(3, 0, 128, 140);  
  ucg.drawGradientBox(0, 0, ucg.getWidth(), ucg.getHeight());

  ucg.setColor(255, 255, 255);
  ucg.setPrintPos(2,18);
  ucg.setPrintDir(0);
  ucg.print("Box");

  m = millis() + T;

  while( millis() < m )
  {
    ucg.setColor((lcg_rnd()&127)+127, (lcg_rnd()&127)+64, lcg_rnd() & 31);
    w = lcg_rnd() & 31;
    h = lcg_rnd() & 31;
    w += 10;
    h += 10;
    x = (lcg_rnd()*(ucg.getWidth()-w))>>8;
    y = (lcg_rnd()*(ucg.getHeight()-h-20))>>8;
    
    ucg.drawBox(x, y+20, w, h);
  }

}

void triangle(void)
{
  unsigned long m;
  
  ucg.setColor(0, 0, 80, 20);
  ucg.setColor(1, 60, 80, 20);
  ucg.setColor(2, 60, 120, 0);
  ucg.setColor(3, 0, 140, 30);  
  ucg.drawGradientBox(0, 0, ucg.getWidth(), ucg.getHeight());

  ucg.setColor(255, 255, 255);
  ucg.setPrintPos(2,18);
  ucg.print("Triangle");

  m = millis() + T;

  while( millis() < m )
  {
    ucg.setColor((lcg_rnd()&127)+127, lcg_rnd() & 31, (lcg_rnd()&127)+64);
    
    ucg.drawTriangle(
      (lcg_rnd()*(ucg.getWidth()))>>8,
      ((lcg_rnd()*(ucg.getHeight()-20))>>8)+20,
      (lcg_rnd()*(ucg.getWidth()))>>8,
      ((lcg_rnd()*(ucg.getHeight()-20))>>8)+20,
      (lcg_rnd()*(ucg.getWidth()))>>8,
      ((lcg_rnd()*(ucg.getHeight()-20))>>8)+20
    );
    
  }

}

void text(void)
{
  ucg_int_t x, y, w, h, i;
  unsigned long m;
  
  ucg.setColor(0, 80, 40, 0);
  ucg.setColor(1, 60, 0, 40);
  ucg.setColor(2, 20, 0, 20);
  ucg.setColor(3, 60, 0, 0);  
  ucg.drawGradientBox(0, 0, ucg.getWidth(), ucg.getHeight());

  ucg.setColor(255, 255, 255);
  ucg.setPrintPos(2,18);
  ucg.setPrintDir(0);
  ucg.print("Text");

  m = millis() + T;
  i = 0;
  while( millis() < m )
  {
    ucg.setColor(lcg_rnd() & 31, (lcg_rnd()&127)+127, (lcg_rnd()&127)+64);
    w = 40;
    h = 22;
    x = (lcg_rnd()*(ucg.getWidth()-w))>>8;
    y = (lcg_rnd()*(ucg.getHeight()-h))>>8;
    
    ucg.setPrintPos(x,y+h);
    ucg.setPrintDir((i>>2)&3);
    i++;
    ucg.print("Ucglib");
  }
  ucg.setPrintDir(0);

}

void fonts(void)
{
  ucg_int_t d = 5;
  ucg.setColor(0, 0, 40, 80);
  ucg.setColor(1, 150, 0, 200);
  ucg.setColor(2, 60, 0, 40);
  ucg.setColor(3, 0, 160, 160);
  
  ucg.drawGradientBox(0, 0, ucg.getWidth(), ucg.getHeight());

  ucg.setColor(255, 255, 255);
  ucg.setPrintDir(0);
  ucg.setPrintPos(2,18);
  ucg.print("Fonts");

  ucg.setFontMode(UCG_FONT_MODE_TRANSPARENT);

  ucg.setColor(255, 200, 170);
  ucg.setFont(ucg_font_helvB08r);
  ucg.setPrintPos(2,30+d);
  ucg.print("ABC abc 123");
  ucg.setFont(ucg_font_helvB10r);
  ucg.setPrintPos(2,45+d);
  ucg.print("ABC abc 123");
  ucg.setFont(ucg_font_helvB12r);
  //ucg.setPrintPos(2,62+d);
  //ucg.print("ABC abc 123");
  ucg.drawString(2,62+d, 0, "ABC abc 123"); // test drawString
  
  ucg.setFontMode(UCG_FONT_MODE_SOLID);

  ucg.setColor(255, 200, 170);
  ucg.setColor(1, 0, 100, 120);		// background color in solid mode
  ucg.setFont(ucg_font_helvB08r);
  ucg.setPrintPos(2,75+30+d);
  ucg.print("ABC abc 123");
  ucg.setFont(ucg_font_helvB10r);
  ucg.setPrintPos(2,75+45+d);
  ucg.print("ABC abc 123");
  ucg.setFont(ucg_font_helvB12r);
  ucg.setPrintPos(2,75+62+d);
  ucg.print("ABC abc 123");

  ucg.setFontMode(UCG_FONT_MODE_TRANSPARENT);

  /* big fonts removed, some trouble with the Arduino IDE */
  /*
  ucg.setFont(ucg_font_helvB14r);
  ucg.setPrintPos(2,79+d);
  ucg.print("ABC abc 123");
  ucg.setFont(ucg_font_helvB18r);
  ucg.setPrintPos(2,79+22+d);
  ucg.print("ABC abc 123");
  */
  
  ucg.setFont(ucg_font_ncenR14r);
  DLY();
}

void clip(void)
{
  ucg.setColor(0, 0x00, 0xd1, 0x5e);		// dark green
  ucg.setColor(1, 0xff, 0xf7, 0x61);		// yellow
  ucg.setColor(2, 0xd1, 0xc7, 0x00);			// dark yellow
  ucg.setColor(3, 0x61, 0xff, 0xa8);		// green
  
  ucg.drawGradientBox(0, 0, ucg.getWidth(), ucg.getHeight());

  ucg.setColor(255, 255, 255);
  ucg.setPrintPos(2,18);
  ucg.setPrintDir(0);
  ucg.print("ClipRange");
  
  ucg.setColor(0xd1, 0x00, 0x073);
  
  ucg.setFont(ucg_font_helvB18r);
  
  ucg.setPrintPos(25,45);
  ucg.setPrintDir(0);
  ucg.print("Ucg");
  ucg.setPrintDir(1);
  ucg.print("Ucg");
  ucg.setPrintDir(2);
  ucg.print("Ucg");
  ucg.setPrintDir(3);
  ucg.print("Ucg");
  
  
  ucg.setMaxClipRange();
  ucg.setColor(0xff, 0xff, 0xff);
  ucg.drawFrame(20-1,30-1,15+2,20+2);  
  ucg.setClipRange(20, 30, 15, 20);
  ucg.setColor(0xff, 0x61, 0x0b8);
  ucg.setPrintPos(25,45);
  ucg.setPrintDir(0);
  ucg.print("Ucg");
  ucg.setPrintDir(1);
  ucg.print("Ucg");
  ucg.setPrintDir(2);
  ucg.print("Ucg");
  ucg.setPrintDir(3);
  ucg.print("Ucg");
  

  ucg.setMaxClipRange();
  ucg.setColor(0xff, 0xff, 0xff);
  ucg.drawFrame(60-1,35-1,25+2,18+2);  
  ucg.setClipRange(60, 35, 25, 18);
  ucg.setColor(0xff, 0x61, 0x0b8);
  ucg.setPrintPos(25,45);
  ucg.setPrintDir(0);
  ucg.print("Ucg");
  ucg.setPrintDir(1);
  ucg.print("Ucg");
  ucg.setPrintDir(2);
  ucg.print("Ucg");
  ucg.setPrintDir(3);
  ucg.print("Ucg");

  ucg.setMaxClipRange();
  ucg.setColor(0xff, 0xff, 0xff);
  ucg.drawFrame(7-1,58-1,90+2,4+2);  
  ucg.setClipRange(7, 58, 90, 4);
  ucg.setColor(0xff, 0x61, 0x0b8);
  ucg.setPrintPos(25,45);
  ucg.setPrintDir(0);
  ucg.print("Ucg");
  ucg.setPrintDir(1);
  ucg.print("Ucg");
  ucg.setPrintDir(2);
  ucg.print("Ucg");
  ucg.setPrintDir(3);
  ucg.print("Ucg");

  ucg.setFont(ucg_font_ncenR14r);
  ucg.setMaxClipRange();
  DLY();
  
}

void setup(void)
{
  delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  ucg.setFont(ucg_font_ncenR14r);
  ucg.clearScreen();
}

void set_clip_range(void)
{
  ucg_int_t x, y, w, h;
  w = lcg_rnd() & 31;
  h = lcg_rnd() & 31;
  w += 25;
  h += 25;
  x = (lcg_rnd()*(ucg.getWidth()-w))>>8;
  y = (lcg_rnd()*(ucg.getHeight()-h))>>8;
  
  ucg.setClipRange(x, y, w, h);
}


uint8_t r = 0;
void loop(void)
{
  switch(r&3)
  {
    case 0: ucg.undoRotate(); break;
    case 1: ucg.setRotate90(); break;
    case 2: ucg.setRotate180(); break;
    default: ucg.setRotate270(); break;
  }
  
  if ( r > 3 )
  {
    ucg.clearScreen();
    set_clip_range();
  }
  
  r++;
  ucglib_graphics_test();
  triangle();
  fonts();  
  text();
  if ( r <= 3 )
    clip();
  box();
  gradient();
  //ucg.clearScreen();
  DLY();
  ucg.setMaxClipRange();
}

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Jeka_M пишет:

DAFdriver пишет:

 Так все и есть!!! Прэкт скачан  и все именно так , спасибо .

А вы убедились, что в папке со скетчем присутствовал файл Ucglib.h ?

Дайте ссылку на то, что вы скачали.

 

     http://infotex58.ru/forum/index.php?topic=971.240  ( пост 253)

* DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.rar (6.5 кБ - загружено 49 раз.)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Посмотрел, это косяк автора скетча. Он написал #include "Ucglib.h", но сам файл Ucglib.h в папку со скетчем не положил. Поэтому изначально нужно было скачать самостоятельно библиотеку Ucglib и положить её в папку Мои документы\Arduino\libraries\ , а в тексте скетча строку #include "Ucglib.h" заменить на #include <Ucglib.h>

P.S. Проверил, у меня всё скомпилировалось (Arduino IDE 1.6.13): 

Скетч использует 18 472 байт (60%) памяти устройства. Всего доступно 30 720 байт. Глобальные переменные используют 1 064 байт (51%) динамической памяти, оставляя 984 байт для локальных переменных. Максимум: 2 048 байт.

P.P.S. Почему у вас так много вложенных папок?

Цитата:

C:\Users\User\Documents\Arduino\calculator\graphicstest\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino

Сделайте чтобы было так: 

C:\Users\User\Documents\Arduino\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino

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

Да, под 1.8.1 надо править как-то так
PS еще другой фонт пробовал использовать



 /***************************************************************************\
 *  Name    : DDS_Sweeper.BAS                                                *
 *  Author  : Beric Dunn (K6BEZ)                                             *
 *  Notice  : Copyright (c) 2013  CC-BY-SA                                   *
 *          : Creative Commons Attribution-ShareAlike 3.0 Unported License   *
 *  Date    : 9/26/2013                                                      *
 *  Version : 1.0                                                            *
 *  Notes   : Written using for the Arduino Micro                            *
 *          :   Pins:                                                        *
 *          :   A0 - Reverse Detector Analog in                              *
 *          :   A1 - Forward Detector Analog in                              *
 *          : Modified by Norbert Redeker (DG7EAO) 07/2014                   *
 *          : TFT Display mit ILI9341 Chip, SPI, 240 x 320                   *
 *          : usglib Grafik Bibliothek   <a href="https://code.google.com/p/ucglib/" title="https://code.google.com/p/ucglib/" rel="nofollow">https://code.google.com/p/ucglib/</a>   *
 \***************************************************************************/
 
#include <SPI.h>
#include "Ucglib.h"
#include "rusFont.h"
 
// Define Pins used to control AD9850 DDS
 
const int FQ_UD=11;
const int SDAT=10;
const int SCLK=12;
const int RESET=9;
 
// Variablen für Display
double vswrArray[110]; //Array für SWR
int z = 0;            // Index für Array
double SwrFreq = 14;  // Variable für Freq. mit SWR Min.
double SwrMin = 100;   // Variable für SWR Min.
double Freq1 = 1;     // Freq. Links unterste Zeile Display
double Freq2 = 15;    // Freq. Mitte unterste Zeile Display
double Freq3 = 30;    // Freq. Mitte unterste Zeile Display
unsigned long milliold = 0;  //Millisekunden für Entprellung Interrupt
unsigned long millinew = 0;  //Millisekunden für Entprellung Interrupt
int flag = 0;                // wir auf 1 gesetzt bei Interrupt, in void Loop perform_sweep
double counter = 0;          // Zähler um erste Interrupts zu ignorieren
 
// Variablen für Messung
double Fstart_MHz = 1;  // Start Frequency for sweep
double Fstop_MHz = 30;  // Stop Frequency for sweep
double current_freq_MHz; // Temp variable used during sweep
long serial_input_number; // Used to build number from serial stream
int num_steps = 100; // Number of steps to use in the sweep
char incoming_char; // Character read from serial stream
 
 
//Konstruktor für Display
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 12, /*data=*/ 10, /*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4);
//Ucglib8BitPortD ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );
//Ucglib8Bit ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, 0, 1, 2, 3, 4, 5, 6, 7, /* wr= */ 18 , /* cd= */ 19 , /* cs= */ 17, /* reset= */ 16 );

//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);  // not working
//Ucglib4WireSWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8); // not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_spi_18x240x320, ucg_ext_ili9325_spi_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8);  // not working
//Ucglib3WireILI9325SWSPI ucg(ucg_dev_ili9325_18x240x320_itdb02, ucg_ext_ili9325_18, /*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 10, /*reset=*/ 8); // not working

//Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);

//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 7, /*data=*/ 6, /*cd=*/ 5 , /*cs=*/ 3, /*reset=*/ 4);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 4, /*data=*/ 3, /*cd=*/ 6 , /*cs=*/ 7, /*reset=*/ 5); /* Elec Freaks Shield */

//Ucglib_SSD1351_18x128x128_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);
//Ucglib_SSD1351_18x128x128_FT_HWSPI ucg(/*cd=*/ 9 , /*cs=*/ 10, /*reset=*/ 8);

//Ucglib_PCF8833_16x132x132_SWSPI ucg(/*sclk=*/ 13, /*data=*/ 11, /*cs=*/ 9, /*reset=*/ 8); /* linksprite board */
//Ucglib_PCF8833_16x132x132_HWSPI ucg(/*cs=*/ 9, /*reset=*/ 8); /* linksprite board */


 void Perform_sweep(){
  double FWD=0;
  double REV=0;
  double VSWR;
  double Fstep_MHz = (Fstop_MHz-Fstart_MHz)/num_steps;
 
  z = 0;
  SwrMin = 100;
 
  ucg.clearScreen();
  ucg.setFont(ucg_font_ncenR14r);
  
  //ucg.setFont(ucg_font_9x15_tf);
  ucg.setColor(255, 0, 100); 
  ucg.setPrintPos(35,60);
  ucg.print("Analiz KSW");
 
  // Start loop 
  for(int i=0;i<=num_steps;i++){
    // Calculate current frequency
    current_freq_MHz = Fstart_MHz + i*Fstep_MHz;
    // Set DDS to current frequency
    SetDDSFreq(current_freq_MHz*1000000);
    // Wait a little for settling
    //delay(10);
    delay(100);
    // Read the forward and reverse voltages
    REV = analogRead(A0);
    FWD = analogRead(A1);
 
    //Offset Korrektur
    REV = REV-1;
 
    if(REV>=FWD){
      REV = FWD-1;
    }
 
    if (REV <1) {
      REV = 1;
    }
 
    VSWR = (FWD+REV)/(FWD-REV);
 
    //Skalieren für Ausgabe
    VSWR = VSWR * 1000;
 
 
    // Send current line back to PC over serial bus
    Serial.print(current_freq_MHz*1000000);
    Serial.print(",0,");
    Serial.print(VSWR);
    Serial.print(",");
    Serial.print(FWD);
    Serial.print(",");
    Serial.println(REV);
 
 
    // Übergebe SWR an Array
    // ERmittele Freq bei niedrigsten SWR
    vswrArray[z] = VSWR/1000;
 
    if (vswrArray[z] > 10) vswrArray[z] = 10;
 
    if (vswrArray[z] < SwrMin && vswrArray[z] > 1) 
    {
      SwrMin = vswrArray[z];
      SwrFreq = current_freq_MHz;
 
    }    
 
    z = z + 1;
 
  }
 
  // Send "End" to PC to indicate end of sweep
  Serial.println("End");
  Serial.flush(); 
  ucg.clearScreen();
  //Zeichne Grid
  CreateGrid();
 
 
  ucg.setColor(76, 255, 0);
 
  // Draw Line
 
  double last = 10;
  double xx = 6;
  double j = 1;
 
  for (int i = 1 ;i < 103; i++){
    xx = vswrArray[i];
 
 
    ucg.drawLine(j,105-last*9, j+1, 105-xx*9);
    ucg.drawLine(j+1,105-last*9, j+2, 105-xx*9);
 
    j = j + 1.5;
    last = xx;  
  }     
}
 
// Setze DDS Frequenz
void SetDDSFreq(double Freq_Hz){
  // Calculate the DDS word - from AD9850 Datasheet
  int32_t f = Freq_Hz * 4294967295/125000000;
  // Send one byte at a time
  for (int b=0;b<4;b++,f>>=8){
    send_byte(f & 0xFF);
  }
  // 5th byte needs to be zeros
  send_byte(0);
  // Strobe the Update pin to tell DDS to use values
  digitalWrite(FQ_UD,HIGH);
  digitalWrite(FQ_UD,LOW);
}
 
// Sende Daten an DDS
void send_byte(byte data_to_send){
  // Bit bang the byte over the SPI bus
  for (int i=0; i<8; i++,data_to_send>>=1){
    // Set Data bit on output pin
    digitalWrite(SDAT,data_to_send & 0x01);
    // Strobe the clock pin
    digitalWrite(SCLK,HIGH);
    digitalWrite(SCLK,LOW);
  }
}
 
 
//Zeichne Grid auf TFT Display  
void CreateGrid()
{
  //ucg.clearScreen();
 
  double maxSwr = 10;
  ucg.setFont(ucg_font_ncenR14r);
  //ucg.setFont(ucg_font_9x15_tf);
  ucg.drawHLine(0,60,155);
  ucg.drawHLine(0,98,155);
 
 
  ucg.drawVLine(39,15,90);
  ucg.drawVLine(78,15,90);
  ucg.drawVLine(117,15,90);
 
 
  ucg.setPrintPos(0, 118);
  ucg.print(Freq1,3);
 
  ucg.setPrintPos(65, 118);
  ucg.print(Freq2,3);
 
  ucg.setPrintPos(130, 118);
  ucg.print(Freq3,3);
 
  ucg.setPrintPos(1, 11);
  ucg.print("SWR");
 
  ucg.setPrintPos(30, 11);
  ucg.print(SwrMin,2);
 
  ucg.setPrintPos(65, 11);
  ucg.print(">");
 
  ucg.setPrintPos(75, 11);
  ucg.print(maxSwr,2);
 
  ucg.setPrintPos(125, 11);
  ucg.print(SwrFreq,3);
 
  ucg.drawRFrame(0,15,155,90, 1);
 
}  
 
// Interrupt Service Routine
// Abfrage Low an Pin 2
void key2()
{
  //ignoriere Startup Interrupts > counter 
  counter = counter + 1; 
 
  //Entprellen mit millis()
  millinew = millis();
 
  if (millinew - milliold < 1000)
  {
    milliold = millinew;
    return; 
  }
 
  milliold = millinew;
 
  Fstart_MHz = 1;  // Start Frequency for sweep
  Fstop_MHz = 30;  // Stop Frequency for sweep
  num_steps = 102; // Steps
  Freq1 = 1;       // Unterste Zeile Display Freq. Links
  Freq2 = 15;      // Unterste Zeile Display Freq. Mitte
  Freq3 = 30;      // Unterste Zeile Display Freq. Recht
 
  //Perform_sweep();
  flag = 1;
 
}
 
// Interrupt Service Routine
// Abfrage Low an Pin 3
void key3()
{
  //ignoriere Startup Interrupts > counter 
  counter = counter + 1;  
 
  //Entprellen mit millis()
  millinew = millis();
 
  if (millinew - milliold < 1000)
  {
    milliold = millinew;
    return; 
  }
 
  milliold = millinew;
 
  int x = SwrFreq + 0.5; //Runde auf Mhz
 
  Fstart_MHz = x-1;  // Start Frequency for sweep
  Fstop_MHz = x+1;   // Stop Frequency for sweep
  num_steps = 102;  // Steps
 
  Freq1 = x-1;      // Unterste Zeile Display Freq. Links
  Freq2 = x;        // Unterste Zeile Display Freq. Mitte
  Freq3 = x+1;      // Unterste Zeile Display Freq. Rechts
 
  //Perform_sweep();
  flag = 1;
 
}
 
 
// the setup routine runs once when you press reset:
void setup() {
 
  // Voltmetr
  analogReference(INTERNAL);
  float Vbat = (analogRead(A5) * 1.1) / 1023.0;
  float Vin = Vbat / (69.8 / (783.0 + 69.8)); // R2/(R1+R2)
 
  // Schreibe Info Text auf Display
  ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
 
  ucg.setRotate90();
  ucg.setFont(ucg_font_ncenR14r);
  //ucg.setFont(ucg_font_9x15_tf);
  ucg.setColor(255, 255, 255); 
 
  ucg.setPrintPos(10,20);
  ucg.print("Arduino Antenna");
  ucg.setPrintPos(25,40);
  ucg.print("SWR Analyzer");
  ucg.setPrintPos(35,60);
  ucg.print("1-30 MHz");
  ucg.setPrintPos(20,80);
  ucg.print("Komsomolsk 2017");
  ucg.setPrintPos(5,128);
  ucg.print("BAT");
  ucg.setPrintPos(40,128);
  ucg.print(Vin, 1);
 
 
  // Configiure DDS control pins for digital output
  pinMode(FQ_UD,OUTPUT);
  pinMode(SCLK,OUTPUT);
  pinMode(SDAT,OUTPUT);
  pinMode(RESET,OUTPUT);
 
  //Tasten Interrupt an PIN 2
  pinMode(2,OUTPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, key2, FALLING);
  unsigned long milliold = millis();
 
  //Tasten Interrupt an PIN 3
  pinMode(3,OUTPUT);
  digitalWrite(3, HIGH);
  attachInterrupt(1, key3, FALLING);
  //milliold = millis();
 
  // Configure LED pin for digital output
  pinMode(13,OUTPUT);
 
 
  // Set up analog inputs on A0 and A1, internal reference voltage
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  analogReference(INTERNAL);
 
  // initialize serial communication at 57600 baud
  Serial.begin(57600);
 
 
  // Reset the DDS
  digitalWrite(RESET,HIGH);
  digitalWrite(RESET,LOW);
 
  //Initialise the incoming serial number to zero
  serial_input_number=0;
 
}
 
// the loop routine runs over and over again forever:
void loop() {
 
 
  //Check for character
  if(Serial.available()>0){
    incoming_char = Serial.read();
    switch(incoming_char){
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
      serial_input_number=serial_input_number*10+(incoming_char-'0');
      break;
    case 'A':
      //Turn frequency into FStart
      Fstart_MHz = ((double)serial_input_number)/1000000;
      serial_input_number=0;
      break;
    case 'B':
      //Turn frequency into FStop
      Fstop_MHz = ((double)serial_input_number)/1000000;
      serial_input_number=0;
      break;
    case 'C':
      //Turn frequency into FStart and set DDS output to single frequency
      Fstart_MHz = ((double)serial_input_number)/1000000;
      //SetDDSFreq(Fstart_MHz);
      SetDDSFreq(Fstart_MHz * 1000000);
      delay(100);
      SetDDSFreq(Fstart_MHz * 1000000);
      serial_input_number=0;    
      break;
    case 'N':
      // Set number of steps in the sweep
      num_steps = serial_input_number;
      serial_input_number=0;
      break;
    case 'S':    
    case 's':    
      Perform_sweep();
      break;
    case '?':
      // Report current configuration to PC    
      Serial.print("Start Freq:");
      Serial.println(Fstart_MHz*1000000);
      Serial.print("Stop Freq:");
      Serial.println(Fstop_MHz*1000000);
      Serial.print("Num Steps:");
      Serial.println(num_steps);
      break;
    }
    Serial.flush();     
  } 
 
  //Perform Sweep nach Interrupt PIN2 oder 3
  // ingnoriere Startup Interrupts durch counter
  if (flag == 1 && counter >2) 
  {
    flag = 0;
    Perform_sweep(); 
 
  }
}
 
 

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Да, под 1.8.1 надо править как-то так
PS еще другой фонт пробовал использовать

  Всавил Ваш код - загрузилось . Но как подключить дисплей .

 Дисплей- 1.8 SPI 128X160

пины: 1-RST

           2-CS

           3-D/C

           4-DIN

          5-CLK

         6-VCC

          7-BL

          8-GND  Ну с GND-DL и VCC все понятно нужно каким то образом прописать их на D4-D5-D6-D7-D8 

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

51 строка, так и подключайте

Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 12, /*data=*/ 10, /*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4);

Или измените как в пробном скетче, который работал или как вам надо

DAFdriver
Offline
Зарегистрирован: 12.08.2016

 Огромное человеческое СПАСИБО Вы просто ВОЛШЕБНИК 

Изменил , работает , единственное  в строке Komsomolsk 201??? последняя цифра не умещается . Как ее сдвинуть левее ?

P.S. Вы с Комсомолька ?

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

DAFdriver пишет:

 Огромное человеческое СПАСИБО Вы просто ВОЛШЕБНИК 

Изменил , работает , единственное  в строке Komsomolsk 201??? последняя цифра не умещается . Как ее сдвинуть левее ?

P.S. Вы с Комсомолька ?

Я из Домбая )))
ВОЛШЕБНИК тут на форуме присутствует под своим ником
Я там со шрифтами поигрался, попробуйте мои игрушки закомментировать, а родной шрифт расскомментировать, может уместиться

DAFdriver
Offline
Зарегистрирован: 12.08.2016

ua6em пишет:

DAFdriver пишет:

 Огромное человеческое СПАСИБО Вы просто ВОЛШЕБНИК 

Изменил , работает , единственное  в строке Komsomolsk 201??? последняя цифра не умещается . Как ее сдвинуть левее ?

P.S. Вы с Комсомолька ?

Я из Домбая )))
ВОЛШЕБНИК тут на форуме присутствует под своим ником
Я там со шрифтами поигрался, попробуйте мои игрушки закомментировать, а родной шрифт расскомментировать, может уместиться

  Да шрифт я нашел и сместил в лево , теперь нужнонайти где таблица и ее немного опустить в низ . 

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

удачи!
А дай адрес этого форума, посмотрю

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Пожалуста -       http://infotex58.ru/forum/index.php?topic=971.0

Попробуй их скетч станица 17 пост (#253) поправить хочется , чтоб хорошо все работало ну Русский язык желательно . Огромное СПАСИБО.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Добрый день . А не подскажите , как опустить рисунок таблици немного в низ и уменьшить верхний шрифт над таблицей он немного не умещается . К сожалению не получилось загрузить фотографию .

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

попробовать скомпилировать с родными шрифтами

DAFdriver
Offline
Зарегистрирован: 12.08.2016

А как? Если увас получится -буду премногоблагодарен.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Поковырялся и нашел строку , котрая отвечает за рамер цифр : ucg.setFont(ucg_font_ncenR10r);

и координаты этих цифр :  ucg.setPrintPos(0, 11);

  ucg.print("swr");
 
  ucg.setPrintPos(25, 11);
  ucg.print(SwrMin,2);
 
  ucg.setPrintPos(66, 10);
  ucg.print(">");
 
  ucg.setPrintPos(82, 11);
  ucg.print(maxSwr,2);
 
  ucg.setPrintPos(125, 11);
  ucg.print(SwrFreq,3);
А так же ввод Русского языка , нужно так : ucg.setFont(my14x10rus);
Но похоже библиоека с Русским шрифтом кривая , не все буквы видит .
 
 Теперь собираю до конца и буду настраивать .
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DAFdriver пишет:

 Теперь собираю до конца и буду настраивать .

Рабочий скетч выложите (только по правилам форума, бо побьют скоро)

DAFdriver
Offline
Зарегистрирован: 12.08.2016

ua6em пишет:

DAFdriver пишет:

 Теперь собираю до конца и буду настраивать .

Рабочий скетч выложите (только по правилам форума, бо побьют скоро)

Незнаю ,как правильно , но пустьзабанаят ,но сделаю добро , пустьлюди ползуются :

 
  /***************************************************************************\
 *  Name    : DDS_Sweeper.BAS                                                *
 *  Author  : Beric Dunn (K6BEZ)                                             *
 *  Notice  : Copyright (c) 2013  CC-BY-SA                                   *
 *          : Creative Commons Attribution-ShareAlike 3.0 Unported License   *
 *  Date    : 9/26/2013                                                      *
 *  Version : 1.0                                                            *
 *  Notes   : Written using for the Arduino Micro                            *
 *          :   Pins:                                                        *
 *          :   A0 - Reverse Detector Analog in                              *
 *          :   A1 - Forward Detector Analog in                              *
 *          : Modified by Norbert Redeker (DG7EAO) 07/2014                   *
 *          : TFT Display mit ILI9341 Chip, SPI, 240 x 320                   *
 *          : usglib Grafik Bibliothek   https://code.google.com/p/ucglib/   *
 \***************************************************************************/
 
#include <SPI.h>
#include "Ucglib.h"
#include "rusFont.h"
 
// Define Pins used to control AD9850 DDS
 
const int FQ_UD=11;
const int SDAT=10;
const int SCLK=12;
const int RESET=9;
 
// Variablen für Display
double vswrArray[110]; //Array für SWR
int z = 0;            // Index für Array
double SwrFreq = 14;  // Variable für Freq. mit SWR Min.
double SwrMin = 100;   // Variable für SWR Min.
double Freq1 = 1;     // Freq. Links unterste Zeile Display
double Freq2 = 15;    // Freq. Mitte unterste Zeile Display
double Freq3 = 30;    // Freq. Mitte unterste Zeile Display
unsigned long milliold = 0;  //Millisekunden für Entprellung Interrupt
unsigned long millinew = 0;  //Millisekunden für Entprellung Interrupt
int flag = 0;                // wir auf 1 gesetzt bei Interrupt, in void Loop perform_sweep
double counter = 0;          // Zähler um erste Interrupts zu ignorieren
 
// Variablen für Messung
double Fstart_MHz = 1;  // Start Frequency for sweep
double Fstop_MHz = 30;  // Stop Frequency for sweep
double current_freq_MHz; // Temp variable used during sweep
long serial_input_number; // Used to build number from serial stream
int num_steps = 100; // Number of steps to use in the sweep
char incoming_char; // Character read from serial stream
 
 
//Konstruktor für Display
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 8, /*data=*/ 7, /*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4);
 
 
// the setup routine runs once when you press reset:
void setup() {
 
  // Voltmetr
  analogReference(INTERNAL);
  float Vbat = (analogRead(A5) * 1.1) / 1023.0;
  float Vin = Vbat / (69.8 / (783.0 + 69.8)); // R2/(R1+R2)
 
  // Schreibe Info Text auf Display
  ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
 
  ucg.setRotate90();
  ucg.setFont(ucg_font_ncenR14r);
  ucg.setColor(250, 250, 0); 
 
  ucg.setPrintPos(6,20);
  ucg.print("Arduino Antenna");
  ucg.setPrintPos(15,40);
  ucg.print("SWR Analyzer");
  ucg.setPrintPos(35,60);
  ucg.print("1-30 MHz");
  ucg.setPrintPos(15,80);
  ucg.print("Woronez 2017");
  ucg.setColor(0,400, 0);
  ucg.setPrintPos(5,128);
  ucg.print("BAT");
   ucg.setColor(400,0, 0);
  ucg.setPrintPos(45,128);
  ucg.print(Vin, 1);
 
 
  // Configiure DDS control pins for digital output
  pinMode(FQ_UD,OUTPUT);
  pinMode(SCLK,OUTPUT);
  pinMode(SDAT,OUTPUT);
  pinMode(RESET,OUTPUT);
 
  //Tasten Interrupt an PIN 2
  pinMode(2,OUTPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, key2, FALLING);
  unsigned long milliold = millis();
 
  //Tasten Interrupt an PIN 3
  pinMode(3,OUTPUT);
  digitalWrite(3, HIGH);
  attachInterrupt(1, key3, FALLING);
  //milliold = millis();
 
  // Configure LED pin for digital output
  pinMode(13,OUTPUT);
 
 
  // Set up analog inputs on A0 and A1, internal reference voltage
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  analogReference(INTERNAL);
 
  // initialize serial communication at 57600 baud
  Serial.begin(57600);
 
 
  // Reset the DDS
  digitalWrite(RESET,HIGH);
  digitalWrite(RESET,LOW);
 
  //Initialise the incoming serial number to zero
  serial_input_number=0;
 
}
 
// the loop routine runs over and over again forever:
void loop() {
 
 
  //Check for character
  if(Serial.available()>0){
    incoming_char = Serial.read();
    switch(incoming_char){
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
      serial_input_number=serial_input_number*10+(incoming_char-'0');
      break;
    case 'A':
      //Turn frequency into FStart
      Fstart_MHz = ((double)serial_input_number)/1000000;
      serial_input_number=0;
      break;
    case 'B':
      //Turn frequency into FStop
      Fstop_MHz = ((double)serial_input_number)/1000000;
      serial_input_number=0;
      break;
    case 'C':
      //Turn frequency into FStart and set DDS output to single frequency
      Fstart_MHz = ((double)serial_input_number)/1000000;
      //SetDDSFreq(Fstart_MHz);
      SetDDSFreq(Fstart_MHz * 1000000);
      delay(100);
      SetDDSFreq(Fstart_MHz * 1000000);
      serial_input_number=0;    
      break;
    case 'N':
      // Set number of steps in the sweep
      num_steps = serial_input_number;
      serial_input_number=0;
      break;
    case 'S':    
    case 's':    
      Perform_sweep();
      break;
    case '?':
      // Report current configuration to PC    
      Serial.print("Start Freq:");
      Serial.println(Fstart_MHz*1000000);
      Serial.print("Stop Freq:");
      Serial.println(Fstop_MHz*1000000);
      Serial.print("Num Steps:");
      Serial.println(num_steps);
      break;
    }
    Serial.flush();     
  } 
 
  //Perform Sweep nach Interrupt PIN2 oder 3
  // ingnoriere Startup Interrupts durch counter
  if (flag == 1 && counter >2) 
  {
    flag = 0;
    Perform_sweep(); 
 
  }
}
 
 
void Perform_sweep(){
  double FWD=0;
  double REV=0;
  double VSWR;
  double Fstep_MHz = (Fstop_MHz-Fstart_MHz)/num_steps;
 
  z = 0;
  SwrMin = 100;
 
  ucg.clearScreen();
  ucg.setFont(ucg_font_ncenR14r);
  ucg.setColor(250, 250, 0); 
  ucg.setPrintPos(30,60);
  ucg.print("Analiz SWR");
 
  // Start loop 
  for(int i=0;i<=num_steps;i++){
    // Calculate current frequency
    current_freq_MHz = Fstart_MHz + i*Fstep_MHz;
    // Set DDS to current frequency
    SetDDSFreq(current_freq_MHz*1000000);
    // Wait a little for settling
    //delay(10);
    delay(100);
    // Read the forward and reverse voltages
    REV = analogRead(A0);
    FWD = analogRead(A1);
 
    //Offset Korrektur
    REV = REV-1;
 
    if(REV>=FWD){
      REV = FWD-1;
    }
 
    if (REV <1) {
      REV = 1;
    }
 
    VSWR = (FWD+REV)/(FWD-REV);
 
    //Skalieren für Ausgabe
    VSWR = VSWR * 1000;
 
 
    // Send current line back to PC over serial bus
    Serial.print(current_freq_MHz*1000000);
    Serial.print(",0,");
    Serial.print(VSWR);
    Serial.print(",");
    Serial.print(FWD);
    Serial.print(",");
    Serial.println(REV);
 
 
    // Übergebe SWR an Array
    // ERmittele Freq bei niedrigsten SWR
    vswrArray[z] = VSWR/1000;
 
    if (vswrArray[z] > 10) vswrArray[z] = 10;
 
    if (vswrArray[z] < SwrMin && vswrArray[z] > 1) 
    {
      SwrMin = vswrArray[z];
      SwrFreq = current_freq_MHz;
 
    }    
 
    z = z + 1;
 
  }
 
  // Send "End" to PC to indicate end of sweep
  Serial.println("End");
  Serial.flush(); 
  ucg.clearScreen();
  //Zeichne Grid
  CreateGrid();
 
 
  ucg.setColor(76, 255, 0);
 
  // Draw Line
 
  double last = 10;
  double xx = 6;
  double j = 1;
 
  for (int i = 1 ;i < 103; i++){
    xx = vswrArray[i];
 
 
    ucg.drawLine(j,105-last*9, j+1, 105-xx*9);
    ucg.drawLine(j+1,105-last*9, j+2, 105-xx*9);
 
    j = j + 1.5;
    last = xx;  
  }     
}
 
// Setze DDS Frequenz
void SetDDSFreq(double Freq_Hz){
  // Calculate the DDS word - from AD9850 Datasheet
  int32_t f = Freq_Hz * 4294967295/125000000;
  // Send one byte at a time
  for (int b=0;b<4;b++,f>>=8){
    send_byte(f & 0xFF);
  }
  // 5th byte needs to be zeros
  send_byte(0);
  // Strobe the Update pin to tell DDS to use values
  digitalWrite(FQ_UD,HIGH);
  digitalWrite(FQ_UD,LOW);
}
 
// Sende Daten an DDS
void send_byte(byte data_to_send){
  // Bit bang the byte over the SPI bus
  for (int i=0; i<8; i++,data_to_send>>=1){
    // Set Data bit on output pin
    digitalWrite(SDAT,data_to_send & 0x01);
    // Strobe the clock pin
    digitalWrite(SCLK,HIGH);
    digitalWrite(SCLK,LOW);
  }
}
 
 
//Zeichne Grid auf TFT Display  
void CreateGrid()
{
  //ucg.clearScreen();
 
  double maxSwr = 10;
  ucg.setFont(ucg_font_ncenR10r);
  ucg.drawHLine(0,60,155);
  ucg.drawHLine(0,98,155);
 
 
  ucg.drawVLine(39,15,90);
  ucg.drawVLine(78,15,90);
  ucg.drawVLine(117,15,90);
 
 
  ucg.setPrintPos(0, 118);
  ucg.print(Freq1,3);
 
  ucg.setPrintPos(65, 118);
  ucg.print(Freq2,3);
 
  ucg.setPrintPos(130, 118);
  ucg.print(Freq3,3);
 
  ucg.setPrintPos(1, 11);
  ucg.print("swr");
 
  ucg.setPrintPos(30, 11);
  ucg.print(SwrMin,2);
 
  ucg.setPrintPos(65, 11);
  ucg.print(">");
  
 
  ucg.setPrintPos(75, 11);
  ucg.print(maxSwr,2);
 
  ucg.setPrintPos(125, 11);
  ucg.print(SwrFreq,3);
 
  ucg.drawRFrame(0,15,155,90, 1);
 
}  
 
// Interrupt Service Routine
// Abfrage Low an Pin 2
void key2()
{
  //ignoriere Startup Interrupts > counter 
  counter = counter + 1; 
 
  //Entprellen mit millis()
  millinew = millis();
 
  if (millinew - milliold < 1000)
  {
    milliold = millinew;
    return; 
  }
 
  milliold = millinew;
 
  Fstart_MHz = 1;  // Start Frequency for sweep
  Fstop_MHz = 30;  // Stop Frequency for sweep
  num_steps = 102; // Steps
  Freq1 = 1;       // Unterste Zeile Display Freq. Links
  Freq2 = 15;      // Unterste Zeile Display Freq. Mitte
  Freq3 = 30;      // Unterste Zeile Display Freq. Recht
 
  //Perform_sweep();
  flag = 1;
 
}
 
// Interrupt Service Routine
// Abfrage Low an Pin 3
void key3()
{
  //ignoriere Startup Interrupts > counter 
  counter = counter + 1;  
 
  //Entprellen mit millis()
  millinew = millis();
 
  if (millinew - milliold < 1000)
  {
    milliold = millinew;
    return; 
  }
 
  milliold = millinew;
 
  int x = SwrFreq + 0.5; //Runde auf Mhz
 
  Fstart_MHz = x-1;  // Start Frequency for sweep
  Fstop_MHz = x+1;   // Stop Frequency for sweep
  num_steps = 102;  // Steps
 
  Freq1 = x-1;      // Unterste Zeile Display Freq. Links
  Freq2 = x;        // Unterste Zeile Display Freq. Mitte
  Freq3 = x+1;      // Unterste Zeile Display Freq. Rechts
 
  //Perform_sweep();
  flag = 1;
 
}
 
 
 

 

 
 
    У меня грузится и работает . К великому сожалению не умею прикрепить фотографии . Огромное спасибо форуму в особенности ua6em !!!
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Щёлкаем в панели иконку {code} и вставляем, и будет всем счастье (на вкладке дополнительно поставить крыжик - сворачивать)

 /***************************************************************************\
 *  Name    : DDS_Sweeper.BAS                                                *
 *  Author  : Beric Dunn (K6BEZ)                                             *
 *  Notice  : Copyright (c) 2013  CC-BY-SA                                   *
 *          : Creative Commons Attribution-ShareAlike 3.0 Unported License   *
 *  Date    : 9/26/2013                                                      *
 *  Version : 1.0                                                            *
 *  Notes   : Written using for the Arduino Micro                            *
 *          :   Pins:                                                        *
 *          :   A0 - Reverse Detector Analog in                              *
 *          :   A1 - Forward Detector Analog in                              *
 *          : Modified by Norbert Redeker (DG7EAO) 07/2014                   *
 *          : TFT Display mit ILI9341 Chip, SPI, 240 x 320                   *
 *          : usglib Grafik Bibliothek   https://code.google.com/p/ucglib/   *
 \***************************************************************************/
 
#include <SPI.h>
#include "Ucglib.h"
#include "rusFont.h"
 
// Define Pins used to control AD9850 DDS
 
const int FQ_UD=11;
const int SDAT=10;
const int SCLK=12;
const int RESET=9;
 
// Variablen fur Display
double vswrArray[110]; //Array fur SWR
int z = 0;            // Index fur Array
double SwrFreq = 14;  // Variable fur Freq. mit SWR Min.
double SwrMin = 100;   // Variable fur SWR Min.
double Freq1 = 1;     // Freq. Links unterste Zeile Display
//double Freq2 = 15;    // Freq. Mitte unterste Zeile Display
double Freq3 = 30;    // Freq. Mitte unterste Zeile Display
unsigned long milliold = 0;  //Millisekunden fur Entprellung Interrupt
unsigned long millinew = 0;  //Millisekunden fur Entprellung Interrupt
int flag = 0;                // wir auf 1 gesetzt bei Interrupt, in void Loop perform_sweep
double counter = 0;          // Zahler um erste Interrupts zu ignorieren
double SwrX = 0;      //Переменная оси Х с мин. КСВ
int  Band;         //Переменная хранения диапазона 0 - весь диапазон
char* Diap[] = {"Весь","160м "," 80м "," 40м "," 30м "," 20м "," 17м "," 15м "," 12м "," 11м "," 10м "};
 
// Variablen fur Messung
double Fstart_MHz = 1;  // Start Frequency for sweep
double Fstop_MHz = 30;  // Stop Frequency for sweep
double current_freq_MHz; // Temp variable used during sweep
long serial_input_number; // Used to build number from serial stream
int num_steps = 102; // Number of steps to use in the sweep
char incoming_char; // Character read from serial stream
 
 
//Konstruktor fur Display
//Ucglib_ST7735_18x128x160_HWSPI ucg(/*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4);
Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 8, /*data=*/ 7, /*cd=*/ 6 , /*cs=*/ 4, /*reset=*/ 5);
 
// the setup routine runs once when you press reset:
void setup() {
  Band=-1;
  // Voltmetr
//  analogReference(INTERNAL);
//  float Vbat = (analogRead(A5) * 1.1) / 1023.0;
//  float Vin = Vbat / (89.8 / (783.0 + 89.8)); // R2/(R1+R2)
 
  // Schreibe Info Text auf Display
  ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
 
  ucg.setRotate90();
  ucg.setFont(my14x10rus);
  ucg.setColor(255, 255, 255); 
 
  ucg.setPrintPos(120,80);
  ucg.print("Панорамный");
  ucg.setPrintPos(130,100);
  ucg.print("КСВ Метр");
  ucg.setPrintPos(130,120);
  ucg.print("1-30 MHz");
  ucg.setPrintPos(150,140);
  ucg.print("EW4C");
  ucg.setPrintPos(130,215);
  ucg.setColor(255, 255, 0);
  ucg.print("Диапазон:");
  
//  ucg.setPrintPos(230,230);
//  ucg.print("Бат ");
//  ucg.setPrintPos(270,230);
//  ucg.print(Vin, 1);
//  ucg.setColor(255, 255, 0);
//  ucg.setPrintPos(50,230);
//  ucg.print(Band);
 
 
  // Configiure DDS control pins for digital output
  pinMode(FQ_UD,OUTPUT);
  pinMode(SCLK,OUTPUT);
  pinMode(SDAT,OUTPUT);
  pinMode(RESET,OUTPUT);
 
  //Tasten Interrupt an PIN 2
  pinMode(2,OUTPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, key2, FALLING);
  unsigned long milliold = millis();
 
  //Tasten Interrupt an PIN 3
  pinMode(3,OUTPUT);
  digitalWrite(3, HIGH);
  attachInterrupt(1, key3, FALLING);
  //milliold = millis();
 
  // Configure LED pin for digital output
  pinMode(13,OUTPUT);
 
 
  // Set up analog inputs on A0 and A1, internal reference voltage
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  analogReference(INTERNAL);
 
  // initialize serial communication at 57600 baud
  Serial.begin(57600);
 
 
  // Reset the DDS
  digitalWrite(RESET,HIGH);
  digitalWrite(RESET,LOW);
 
  //Initialise the incoming serial number to zero
  serial_input_number=0;
 
}
 
// the loop routine runs over and over again forever:
void loop() {
 
 
  //Check for character
  if(Serial.available()>0){
    incoming_char = Serial.read();
    switch(incoming_char){
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
      serial_input_number=serial_input_number*10+(incoming_char-'0');
      break;
    case 'A':
      //Turn frequency into FStart
      Fstart_MHz = ((double)serial_input_number)/1000000;
      serial_input_number=0;
      break;
    case 'B':
      //Turn frequency into FStop
      Fstop_MHz = ((double)serial_input_number)/1000000;
      serial_input_number=0;
      break;
    case 'C':
      //Turn frequency into FStart and set DDS output to single frequency
      Fstart_MHz = ((double)serial_input_number)/1000000;
      //SetDDSFreq(Fstart_MHz);
      SetDDSFreq(Fstart_MHz * 1000000);
      delay(100);
      SetDDSFreq(Fstart_MHz * 1000000);
      serial_input_number=0;    
      break;
    case 'N':
      // Set number of steps in the sweep
      num_steps = serial_input_number;
      serial_input_number=0;
      break;
    case 'S':    
    case 's':    
      Perform_sweep();
      break;
    case '?':
      // Report current configuration to PC    
      Serial.print("Start Freq:");
      Serial.println(Fstart_MHz*1000000);
      Serial.print("Stop Freq:");
      Serial.println(Fstop_MHz*1000000);
      Serial.print("Num Steps:");
      Serial.println(num_steps);
      break;
    }
    Serial.flush();     
  } 
 
  //Perform Sweep nach Interrupt PIN2 oder 3
  // ingnoriere Startup Interrupts durch counter
//  if (flag == 1 && counter >2)
  if (flag == 1) 
  {
    flag = 0;
    Perform_sweep(); 
 
  }
}
 
 
void Perform_sweep(){
  double FWD=0;
  double REV=0;
  double VSWR;
  double Fstep_MHz = (Fstop_MHz-Fstart_MHz)/num_steps;
 
  z = 0;
  SwrMin = 100;
 
  ucg.clearScreen();
  ucg.setFont(my14x10rus);
  ucg.setColor(255, 255, 255); 
  ucg.setPrintPos(125,120);
  ucg.print("Анализ КСВ");
 
  // Start loop 
  for(int i=0;i<=num_steps;i++){
//    ucg.setPrintPos(125,140);
    // Calculate current frequency
    current_freq_MHz = Fstart_MHz + i*Fstep_MHz;
    // Set DDS to current frequency
    SetDDSFreq(current_freq_MHz*1000000);
    // Wait a little for settling
    //delay(10);
    delay(100);
    // Read the forward and reverse voltages
    REV = analogRead(A0);
    FWD = analogRead(A1);
 
    //Offset Korrektur
    REV = REV-5;
 
    if(REV>=FWD){
      REV = FWD-1;
    }
 
    if (REV <1) {
      REV = 1;
    }
 
    VSWR = (FWD+REV)/(FWD-REV);
 
    //Skalieren fur Ausgabe
    VSWR = VSWR * 1000;
 
 
    // Send current line back to PC over serial bus
    Serial.print(current_freq_MHz*1000000);
    Serial.print(",0,");
    Serial.print(VSWR);
    Serial.print(",");
    Serial.print(FWD);
    Serial.print(",");
    Serial.println(REV);
 
 
    // Ubergebe SWR an Array
    // ERmittele Freq bei niedrigsten SWR
    vswrArray[z] = VSWR/1000;
 
    if (vswrArray[z] > 10) vswrArray[z] = 10;
 
    if (vswrArray[z] < SwrMin && vswrArray[z] > 1) 
    {
      SwrMin = vswrArray[z];
      SwrFreq = current_freq_MHz;
      SwrX = z;
    }    
 
    z = z + 1;
 
  }
 
  // Send "End" to PC to indicate end of sweep
  Serial.println("End");
  Serial.flush(); 
  ucg.clearScreen();
  //Zeichne Grid
  CreateGrid();
 
 
//  ucg.setColor(76, 255, 0);
    ucg.setColor(0, 255, 0);
  // Draw Line
 
  double last = 10;
  double xx = 6;
  double j = 1;
 
  for (int i = 1 ;i < 103; i++){
    xx = vswrArray[i];
 
  ucg.drawLine(j,210-last*18, j+1, 210-xx*18);
  ucg.drawLine(j+1,210-last*18, j+2, 210-xx*18);
//    ucg.drawLine(j,105-last*9, j+1, 105-xx*9);
//    ucg.drawLine(j+1,105-last*9, j+2, 105-xx*9);
 
    j = j + 3.039; //Масштаб по оси х
    last = xx;  
  }
  ucg.setColor(255, 255, 0);
  ucg.drawLine(SwrX*3.039,30,SwrX*3.039,210);     
}
 
// Setze DDS Frequenz
void SetDDSFreq(double Freq_Hz){
  // Calculate the DDS word - from AD9850 Datasheet
  int32_t f = Freq_Hz * 4294967295/125000000;
  // Send one byte at a time
  for (int b=0;b<4;b++,f>>=8){
    send_byte(f & 0xFF);
  }
  // 5th byte needs to be zeros
  send_byte(0);
  // Strobe the Update pin to tell DDS to use values
  digitalWrite(FQ_UD,HIGH);
  digitalWrite(FQ_UD,LOW);
}
 
// Sende Daten an DDS
void send_byte(byte data_to_send){
  // Bit bang the byte over the SPI bus
  for (int i=0; i<8; i++,data_to_send>>=1){
    // Set Data bit on output pin
    digitalWrite(SDAT,data_to_send & 0x01);
    // Strobe the clock pin
    digitalWrite(SCLK,HIGH);
    digitalWrite(SCLK,LOW);
  }
}
 
 
//Zeichne Grid auf TFT Display  
void CreateGrid()
{
  //ucg.clearScreen();
 
    double maxSwr = 10;
 
        ucg.drawHLine(0,120,310);
        ucg.drawHLine(0,196,310);
       
                
        ucg.drawVLine(78,30,180);
        ucg.drawVLine(155,30,180);
        ucg.drawVLine(233,30,180);
        
 
  ucg.setPrintPos(0, 235);
  ucg.print(Freq1,3);
 
//  ucg.setPrintPos(130, 235);
//  ucg.print(Freq2,3);
 
  ucg.setPrintPos(260, 235);
  ucg.print(Freq3,3);
 
  ucg.setPrintPos(10, 15);
  ucg.print("Мин.КСВ :");
 
  ucg.setPrintPos(88, 15);
  ucg.print(SwrMin,2);
 
//  ucg.setPrintPos(115, 15);
//  ucg.print(">");
 
//  ucg.setPrintPos(130, 15);
//  ucg.print(maxSwr,2);
 
  ucg.setPrintPos(170, 15);
  ucg.print("Частота :");
  
  ucg.setPrintPos(250, 15);
  ucg.print(SwrFreq,3);
 
  ucg.setColor(255, 255, 0);
  ucg.setPrintPos(145,235);
  ucg.print(Diap[Band]);
        
  ucg.drawRFrame(0,30,310,180, 1);
 
}  
 
// Interrupt Service Routine
// Abfrage Low an Pin 2
void key2()
{
  //ignoriere Startup Interrupts > counter 
//  counter = counter + 1; 
  //Entprellen mit millis()
  millinew = millis();
 
  if (millinew - milliold < 300)
  {
    milliold = millinew;
    return; 
  }
 
  milliold = millinew;
 
  if (Band<10)
  {
    Band++;    
  }
  else
  {
    Band=0; 
  }
  
  ucg.setColor(255, 255, 0);
  ucg.setPrintPos(145,235);
  ucg.print(Diap[Band]);
  
}
 
// Interrupt Service Routine
// Abfrage Low an Pin 3
void key3()
{
  //ignoriere Startup Interrupts > counter 
//  counter = counter + 1;  
 
  //Entprellen mit millis()
  millinew = millis();
 
  if (millinew - milliold < 300)
  {
    milliold = millinew;
    return; 
  }
 
  milliold = millinew;
 
  switch(Band){
    case 0:
      Fstart_MHz = 1;  // Start Frequency for sweep
      Fstop_MHz = 30;   // Stop Frequency for sweep
      break;
    case 1:
      Fstart_MHz = 1.810;  // Start Frequency for sweep
      Fstop_MHz = 2;   // Stop Frequency for sweep
      break;    
    case 2:
      Fstart_MHz = 3.5;  // Start Frequency for sweep
      Fstop_MHz = 3.8;   // Stop Frequency for sweep
      break;
    case 3:
      Fstart_MHz = 7;  // Start Frequency for sweep
      Fstop_MHz = 7.2;   // Stop Frequency for sweep
      break;    
    case 4:
      Fstart_MHz = 10.1;  // Start Frequency for sweep
      Fstop_MHz = 10.15;   // Stop Frequency for sweep
      break;    
    case 5:
      Fstart_MHz = 14;  // Start Frequency for sweep
      Fstop_MHz = 14.35;   // Stop Frequency for sweep
      break;    
    case 6:
      Fstart_MHz = 18.068;  // Start Frequency for sweep
      Fstop_MHz = 18.168;   // Stop Frequency for sweep
      break;    
    case 7:
      Fstart_MHz = 21;  // Start Frequency for sweep
      Fstop_MHz = 21.450;   // Stop Frequency for sweep
      break;    
    case 8:
      Fstart_MHz = 24.89;  // Start Frequency for sweep
      Fstop_MHz = 24.99;   // Stop Frequency for sweep
      break;    
    case 9:
      Fstart_MHz = 26;  // Start Frequency for sweep
      Fstop_MHz = 27.995;   // Stop Frequency for sweep
      break; 
    case 10:
      Fstart_MHz = 28;  // Start Frequency for sweep
      Fstop_MHz = 29.7;   // Stop Frequency for sweep
      break;     
  }
 
  Freq1 =Fstart_MHz;      // Unterste Zeile Display Freq. Links
//  Freq2 = (Fstop_MHz-Fstart_MHz)/2+Fstart_MHz;        // Unterste Zeile Display Freq. Mitte
  Freq3 = Fstop_MHz;      // Unterste Zeile Display Freq. Rechts
  num_steps = 102;  // Steps
 
  //Perform_sweep();
  flag = 1;
  
}
 
 
 
 

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

 C этим скетчем можно еще по работать , именмть цвет или еще какието визуальные эфекты ,кому , что нравится . Меня и так устраивает .

 Даже Русский язык не нужен и так все понятно . Мжно на этом форуме  выложить как проэкты на Arduino .Но это я незнаю как . Всетаки проэкт не мой . Хотя очень полезный . Если Анализатортакогоо диапазона  на AJItxpress стоит порядка16000руб ., то сборка , при покупке на али обходится прримерно в 2000 без корпуса , а параметры почти теже .

 Всем ОГРОМНОЕ СПАСИБО желаю удачи , жду дополнений и изменений .

DAFdriver
Offline
Зарегистрирован: 12.08.2016

001
/***************************************************************************\
002
 *  Name    : DDS_Sweeper.BAS                                                *
003
 *  Author  : Beric Dunn (K6BEZ)                                             *
004
 *  Notice  : Copyright (c) 2013  CC-BY-SA                                   *
005
 *          : Creative Commons Attribution-ShareAlike 3.0 Unported License   *
006
 *  Date    : 9/26/2013                                                      *
007
 *  Version : 1.0                                                            *
008
 *  Notes   : Written using for the Arduino Micro                            *
009
 *          :   Pins:                                                        *
010
 *          :   A0 - Reverse Detector Analog in                              *
011
 *          :   A1 - Forward Detector Analog in                              *
012
 *          : Modified by Norbert Redeker (DG7EAO) 07/2014                   *
013
 *          : TFT Display mit ILI9341 Chip, SPI, 240 x 320                   *
014
 *          : usglib Grafik Bibliothek   <a href="https://code.google.com/p/ucglib/" title="https://code.google.com/p/ucglib/" rel="nofollow">https://code.google.com/p/ucglib/</a>   *
015
 \***************************************************************************/
016
 
017
#include <SPI.h>
018
#include "Ucglib.h"
019
#include "rusFont.h"
020
 
021
// Define Pins used to control AD9850 DDS
022
 
023
const int FQ_UD=11;
024
const int SDAT=10;
025
const int SCLK=12;
026
const int RESET=9;
027
 
028
// Variablen für Display
029
double vswrArray[110]; //Array für SWR
030
int z = 0;            // Index für Array
031
double SwrFreq = 14;  // Variable für Freq. mit SWR Min.
032
double SwrMin = 100;   // Variable für SWR Min.
033
double Freq1 = 1;     // Freq. Links unterste Zeile Display
034
double Freq2 = 15;    // Freq. Mitte unterste Zeile Display
035
double Freq3 = 30;    // Freq. Mitte unterste Zeile Display
036
unsigned long milliold = 0;  //Millisekunden für Entprellung Interrupt
037
unsigned long millinew = 0;  //Millisekunden für Entprellung Interrupt
038
int flag = 0;                // wir auf 1 gesetzt bei Interrupt, in void Loop perform_sweep
039
double counter = 0;          // Zähler um erste Interrupts zu ignorieren
040
 
041
// Variablen für Messung
042
double Fstart_MHz = 1;  // Start Frequency for sweep
043
double Fstop_MHz = 30;  // Stop Frequency for sweep
044
double current_freq_MHz; // Temp variable used during sweep
045
long serial_input_number; // Used to build number from serial stream
046
int num_steps = 100; // Number of steps to use in the sweep
047
char incoming_char; // Character read from serial stream
048
 
049
 
050
//Konstruktor für Display
051
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 8, /*data=*/ 7, /*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4);
052
 
053
 
054
// the setup routine runs once when you press reset:
055
void setup() {
056
 
057
  // Voltmetr
058
  analogReference(INTERNAL);
059
  float Vbat = (analogRead(A5) * 1.1) / 1023.0;
060
  float Vin = Vbat / (69.8 / (783.0 + 69.8)); // R2/(R1+R2)
061
 
062
  // Schreibe Info Text auf Display
063
  ucg.begin(UCG_FONT_MODE_SOLID);
064
  ucg.clearScreen();
065
 
066
  ucg.setRotate90();
067
  ucg.setFont(ucg_font_ncenR14r);
068
  ucg.setColor(250, 250, 0);
069
 
070
  ucg.setPrintPos(6,20);
071
  ucg.print("Arduino Antenna");
072
  ucg.setPrintPos(15,40);
073
  ucg.print("SWR Analyzer");
074
  ucg.setPrintPos(35,60);
075
  ucg.print("1-30 MHz");
076
  ucg.setPrintPos(15,80);
077
  ucg.print("Woronez 2017");
078
  ucg.setColor(0,400, 0);
079
  ucg.setPrintPos(5,128);
080
  ucg.print("BAT");
081
   ucg.setColor(400,0, 0);
082
  ucg.setPrintPos(45,128);
083
  ucg.print(Vin, 1);
084
 
085
 
086
  // Configiure DDS control pins for digital output
087
  pinMode(FQ_UD,OUTPUT);
088
  pinMode(SCLK,OUTPUT);
089
  pinMode(SDAT,OUTPUT);
090
  pinMode(RESET,OUTPUT);
091
 
092
  //Tasten Interrupt an PIN 2
093
  pinMode(2,OUTPUT);
094
  digitalWrite(2, HIGH);
095
  attachInterrupt(0, key2, FALLING);
096
  unsigned long milliold = millis();
097
 
098
  //Tasten Interrupt an PIN 3
099
  pinMode(3,OUTPUT);
100
  digitalWrite(3, HIGH);
101
  attachInterrupt(1, key3, FALLING);
102
  //milliold = millis();
103
 
104
  // Configure LED pin for digital output
105
  pinMode(13,OUTPUT);
106
 
107
 
108
  // Set up analog inputs on A0 and A1, internal reference voltage
109
  pinMode(A0,INPUT);
110
  pinMode(A1,INPUT);
111
  analogReference(INTERNAL);
112
 
113
  // initialize serial communication at 57600 baud
114
  Serial.begin(57600);
115
 
116
 
117
  // Reset the DDS
118
  digitalWrite(RESET,HIGH);
119
  digitalWrite(RESET,LOW);
120
 
121
  //Initialise the incoming serial number to zero
122
  serial_input_number=0;
123
 
124
}
125
 
126
// the loop routine runs over and over again forever:
127
void loop() {
128
 
129
 
130
  //Check for character
131
  if(Serial.available()>0){
132
    incoming_char = Serial.read();
133
    switch(incoming_char){
134
    case '0':
135
    case '1':
136
    case '2':
137
    case '3':
138
    case '4':
139
    case '5':
140
    case '6':
141
    case '7':
142
    case '8':
143
    case '9':
144
      serial_input_number=serial_input_number*10+(incoming_char-'0');
145
      break;
146
    case 'A':
147
      //Turn frequency into FStart
148
      Fstart_MHz = ((double)serial_input_number)/1000000;
149
      serial_input_number=0;
150
      break;
151
    case 'B':
152
      //Turn frequency into FStop
153
      Fstop_MHz = ((double)serial_input_number)/1000000;
154
      serial_input_number=0;
155
      break;
156
    case 'C':
157
      //Turn frequency into FStart and set DDS output to single frequency
158
      Fstart_MHz = ((double)serial_input_number)/1000000;
159
      //SetDDSFreq(Fstart_MHz);
160
      SetDDSFreq(Fstart_MHz * 1000000);
161
      delay(100);
162
      SetDDSFreq(Fstart_MHz * 1000000);
163
      serial_input_number=0;   
164
      break;
165
    case 'N':
166
      // Set number of steps in the sweep
167
      num_steps = serial_input_number;
168
      serial_input_number=0;
169
      break;
170
    case 'S':   
171
    case 's':   
172
      Perform_sweep();
173
      break;
174
    case '?':
175
      // Report current configuration to PC   
176
      Serial.print("Start Freq:");
177
      Serial.println(Fstart_MHz*1000000);
178
      Serial.print("Stop Freq:");
179
      Serial.println(Fstop_MHz*1000000);
180
      Serial.print("Num Steps:");
181
      Serial.println(num_steps);
182
      break;
183
    }
184
    Serial.flush();    
185
  }
186
 
187
  //Perform Sweep nach Interrupt PIN2 oder 3
188
  // ingnoriere Startup Interrupts durch counter
189
  if (flag == 1 && counter >2)
190
  {
191
    flag = 0;
192
    Perform_sweep();
193
 
194
  }
195
}
196
 
197
 
198
void Perform_sweep(){
199
  double FWD=0;
200
  double REV=0;
201
  double VSWR;
202
  double Fstep_MHz = (Fstop_MHz-Fstart_MHz)/num_steps;
203
 
204
  z = 0;
205
  SwrMin = 100;
206
 
207
  ucg.clearScreen();
208
  ucg.setFont(ucg_font_ncenR14r);
209
  ucg.setColor(250, 250, 0);
210
  ucg.setPrintPos(30,60);
211
  ucg.print("Analiz SWR");
212
 
213
  // Start loop
214
  for(int i=0;i<=num_steps;i++){
215
    // Calculate current frequency
216
    current_freq_MHz = Fstart_MHz + i*Fstep_MHz;
217
    // Set DDS to current frequency
218
    SetDDSFreq(current_freq_MHz*1000000);
219
    // Wait a little for settling
220
    //delay(10);
221
    delay(100);
222
    // Read the forward and reverse voltages
223
    REV = analogRead(A0);
224
    FWD = analogRead(A1);
225
 
226
    //Offset Korrektur
227
    REV = REV-1;
228
 
229
    if(REV>=FWD){
230
      REV = FWD-1;
231
    }
232
 
233
    if (REV <1) {
234
      REV = 1;
235
    }
236
 
237
    VSWR = (FWD+REV)/(FWD-REV);
238
 
239
    //Skalieren für Ausgabe
240
    VSWR = VSWR * 1000;
241
 
242
 
243
    // Send current line back to PC over serial bus
244
    Serial.print(current_freq_MHz*1000000);
245
    Serial.print(",0,");
246
    Serial.print(VSWR);
247
    Serial.print(",");
248
    Serial.print(FWD);
249
    Serial.print(",");
250
    Serial.println(REV);
251
 
252
 
253
    // Übergebe SWR an Array
254
    // ERmittele Freq bei niedrigsten SWR
255
    vswrArray[z] = VSWR/1000;
256
 
257
    if (vswrArray[z] > 10) vswrArray[z] = 10;
258
 
259
    if (vswrArray[z] < SwrMin && vswrArray[z] > 1)
260
    {
261
      SwrMin = vswrArray[z];
262
      SwrFreq = current_freq_MHz;
263
 
264
    }   
265
 
266
    z = z + 1;
267
 
268
  }
269
 
270
  // Send "End" to PC to indicate end of sweep
271
  Serial.println("End");
272
  Serial.flush();
273
  ucg.clearScreen();
274
  //Zeichne Grid
275
  CreateGrid();
276
 
277
 
278
  ucg.setColor(76, 255, 0);
279
 
280
  // Draw Line
281
 
282
  double last = 10;
283
  double xx = 6;
284
  double j = 1;
285
 
286
  for (int i = 1 ;i < 103; i++){
287
    xx = vswrArray[i];
288
 
289
 
290
    ucg.drawLine(j,105-last*9, j+1, 105-xx*9);
291
    ucg.drawLine(j+1,105-last*9, j+2, 105-xx*9);
292
 
293
    j = j + 1.5;
294
    last = xx; 
295
  }    
296
}
297
 
298
// Setze DDS Frequenz
299
void SetDDSFreq(double Freq_Hz){
300
  // Calculate the DDS word - from AD9850 Datasheet
301
  int32_t f = Freq_Hz * 4294967295/125000000;
302
  // Send one byte at a time
303
  for (int b=0;b<4;b++,f>>=8){
304
    send_byte(f & 0xFF);
305
  }
306
  // 5th byte needs to be zeros
307
  send_byte(0);
308
  // Strobe the Update pin to tell DDS to use values
309
  digitalWrite(FQ_UD,HIGH);
310
  digitalWrite(FQ_UD,LOW);
311
}
312
 
313
// Sende Daten an DDS
314
void send_byte(byte data_to_send){
315
  // Bit bang the byte over the SPI bus
316
  for (int i=0; i<8; i++,data_to_send>>=1){
317
    // Set Data bit on output pin
318
    digitalWrite(SDAT,data_to_send & 0x01);
319
    // Strobe the clock pin
320
    digitalWrite(SCLK,HIGH);
321
    digitalWrite(SCLK,LOW);
322
  }
323
}
324
 
325
 
326
//Zeichne Grid auf TFT Display 
327
void CreateGrid()
328
{
329
  //ucg.clearScreen();
330
 
331
  double maxSwr = 10;
332
  ucg.setFont(ucg_font_ncenR10r);
333
  ucg.drawHLine(0,60,155);
334
  ucg.drawHLine(0,98,155);
335
 
336
 
337
  ucg.drawVLine(39,15,90);
338
  ucg.drawVLine(78,15,90);
339
  ucg.drawVLine(117,15,90);
340
 
341
 
342
  ucg.setPrintPos(0, 118);
343
  ucg.print(Freq1,3);
344
 
345
  ucg.setPrintPos(65, 118);
346
  ucg.print(Freq2,3);
347
 
348
  ucg.setPrintPos(130, 118);
349
  ucg.print(Freq3,3);
350
 
351
  ucg.setPrintPos(1, 11);
352
  ucg.print("swr");
353
 
354
  ucg.setPrintPos(30, 11);
355
  ucg.print(SwrMin,2);
356
 
357
  ucg.setPrintPos(65, 11);
358
  ucg.print(">");
359
   
360
 
361
  ucg.setPrintPos(75, 11);
362
  ucg.print(maxSwr,2);
363
 
364
  ucg.setPrintPos(125, 11);
365
  ucg.print(SwrFreq,3);
366
 
367
  ucg.drawRFrame(0,15,155,90, 1);
368
 
369
} 
370
 
371
// Interrupt Service Routine
372
// Abfrage Low an Pin 2
373
void key2()
374
{
375
  //ignoriere Startup Interrupts > counter
376
  counter = counter + 1;
377
 
378
  //Entprellen mit millis()
379
  millinew = millis();
380
 
381
  if (millinew - milliold < 1000)
382
  {
383
    milliold = millinew;
384
    return;
385
  }
386
 
387
  milliold = millinew;
388
 
389
  Fstart_MHz = 1;  // Start Frequency for sweep
390
  Fstop_MHz = 30;  // Stop Frequency for sweep
391
  num_steps = 102; // Steps
392
  Freq1 = 1;       // Unterste Zeile Display Freq. Links
393
  Freq2 = 15;      // Unterste Zeile Display Freq. Mitte
394
  Freq3 = 30;      // Unterste Zeile Display Freq. Recht
395
 
396
  //Perform_sweep();
397
  flag = 1;
398
 
399
}
400
 
401
// Interrupt Service Routine
402
// Abfrage Low an Pin 3
403
void key3()
404
{
405
  //ignoriere Startup Interrupts > counter
406
  counter = counter + 1; 
407
 
408
  //Entprellen mit millis()
409
  millinew = millis();
410
 
411
  if (millinew - milliold < 1000)
412
  {
413
    milliold = millinew;
414
    return;
415
  }
416
 
417
  milliold = millinew;
418
 
419
  int x = SwrFreq + 0.5; //Runde auf Mhz
420
 
421
  Fstart_MHz = x-1;  // Start Frequency for sweep
422
  Fstop_MHz = x+1;   // Stop Frequency for sweep
423
  num_steps = 102;  // Steps
424
 
425
  Freq1 = x-1;      // Unterste Zeile Display Freq. Links
426
  Freq2 = x;        // Unterste Zeile Display Freq. Mitte
427
  Freq3 = x+1;      // Unterste Zeile Display Freq. Rechts
428
 
429
  //Perform_sweep();
430
  flag = 1;
431
 
432
}
DAFdriver
Offline
Зарегистрирован: 12.08.2016

Русский шрифт :  ucg.setFont(my14x10rus); 

RW4CPT
Offline
Зарегистрирован: 01.12.2016

Добрых суток. В Ардуино Я новичек, прошу сильно не пинять, а помочь и обьяснить. Имеется: в наличии плата Arduino Nano V 3.0, датчик DHT11, книга "Проекты с использованием контроллера Arduino". Ввожу листинг из книги, после проверки выдает сообшениее:"Exit status 1 Ошибка компиляции для платы Arduino Nano". В книге сказано,что есть готовая библиотека, указан путь где можно скачать её, скачал. Программа не работает.

 

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

А установил и подключил библиотеку-то?

DAFdriver
Offline
Зарегистрирован: 12.08.2016

А установил и подключил библиотеку - можно выводить Русские буквы на дисплей . У меня получилось .

RW4CPT
Offline
Зарегистрирован: 01.12.2016

подскажите как установить библиотеку?

как подключить библиотеку?

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

RW4CPT пишет:

подскажите как установить библиотеку?

как подключить библиотеку?

 

Ты не поверишь, но именно вот эти вопросы - если их задать гуглу, прибавив в конце "Arduino" - он тебе выдаст тонны ссылок, первые из которых - те, что тебе нужны. Не стесняйся, сегодня гугль денег за спрос не берёт - у него день благотворительности.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Сначала ее нужно скачать и разархивировать библиотеку и поместить в ардуино - либрес а файл в какую ни будьпапку например на рабочем столе . За тем открываете свой скетч и в ардуино ид , кликаетев верхузначек скетч, появится список всякойхрени кликаете добавить файл выбираете где он у Вас находится  , открыть и он у Вас открывается в ардуино . Далее опять сктч ,добавить библиотеку ,выбираете и вуаляона у вас вскетче и все заработало .

Это я про Русский текст . А если просто библиотеку ,то как описано выше  , но файл не нужен .

RW4CPT
Offline
Зарегистрирован: 01.12.2016

В самой программе Если пройти по вкладкам: СКЕТЧ->ПОДКЛЮЧИТЬ БИБЛИОТЕКУ->ВЫБОР НУЖНО.  Это будет считаться установкой библиотеки?

DAFdrive-спасибо за разъяснения.

Ардуино версия 1.8.5

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Я уже писал выше . Скачать , разархивировать , в АРДУИНО в папку ЛИБРАРИЕС . это уже и есть установка библиотеки , но в Вашем сктче ее нет. Для этого Вы запускаете иде открываете нужный скетч и видите , что в нем нет нужной библиотеки и тогда Вы кликаете кнопку скетч , выбираете подключить библиотеку , находите ее  и она появляется в скетче . Но не работает и дает ошибку по тому , что у Вас нет файла . Чтоб добавить файл Вы опять кликаете кнопку скетч и выбираете добавить файл , выбираете нужный файл (В данном случае rusFont.h) далее открыть и он у Вас в иде рядом с основным скетчем . Компилируете , грузите и все работает . Успехов .

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Всем доброго времени суток , всех с наступившим новым годом и рождеством .

А теперь оглавном . Подскажите плиз ЧТО ЖЕ ВСЕТАКИ я не так делаю . опятьнате жеграбли наступаю . Проблемма такова - слетела винда ,естественнопотерялось много инфы и теперь опять не могу скомпилировать тот же скетч опять ругается на "Ucglib.h".Гдеяеготолько не скачивал и кактолько не ставил ,ничего не помогает .

b707
Offline
Зарегистрирован: 26.05.2017

DAFdriver пишет:

А теперь оглавном . Подскажите плиз ЧТО ЖЕ ВСЕТАКИ я не так делаю . опятьнате жеграбли наступаю . Проблемма такова - слетела винда ,естественнопотерялось много инфы и теперь опять не могу скомпилировать тот же скетч опять ругается на "Ucglib.h".Гдеяеготолько не скачивал и кактолько не ставил ,ничего не помогает .

И не стыдно второй раз тупой вопрос задавать?? Почитай свою же ветку. Ставлю на то, что ответ - в сообщении  #67

DAFdriver
Offline
Зарегистрирован: 12.08.2016

В том то все и дело ,что замучился всютему . перелопатил и ни чего не получается . впрошлый раз я вставил Ucglib.h с форума , а оказалась ссылкабольше не работает . Откудатолько не скачивал ,всеравно одноитоже .Я и скетч старый весь переделал и прибор давно собрал и он работает .Но для корректировки нужен рабочий скетч ,  ауменя все потеряно . Вот и пытаюсь восстановить пока непоздно . Не знаю , может ,чтото не так делаю . Я установил ардуино иде , скетч бросилв документы - ардуино - либрариес . папки Ucglib.mafster там небыло , по этому , я ее скачал (точнее файл) и бросил в либрариес и она там создалась .Компиляция естественно не идет ,пишет ошибку и началпробывать поразному результат = 0 . По этому и написал снова.

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Выдает  такую ошибку 

Arduino: 1.6.7 (Windows 7), Плата:"Arduino Nano, ATmega328P"

In file included from C:\Users\User\Documents\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino:18:0:

C:\Users\User\Documents\Arduino\libraries\ucglib-master/Ucglib.h:61:25: fatal error: utility/ucg.h: No such file or directory

 #include "utility/ucg.h"

                         ^

compilation terminated.

exit status 1
Ошибка компиляции.

  Это сообщение будет содержать больше информации чем
  "Отображать вывод во время компиляции"
  включено в Файл > Настройки

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Ну помогите старому балбесу,можетардуино идене так устанавливаю? может еще что то ? вот ссылка на проэкт - 

http://infotex58.ru/forum/index.php?topic=971.0 

 скетч на страницу 17 пост (#253) автор пишет на странице - 7 , пост (#98) бросить к библиотекам . Пробывалничего . 

  Может кто сумеет доработать скетч ,чтоб его архив можно скопировать раз архивировать в ардуино иде открыть пример и он начал компилироваться ? У многих проблемы с компиляцией этого скетча на этом форуме .

 За ранее блогадарен .

DAFdriver
Offline
Зарегистрирован: 12.08.2016

Сегодня переустановилардуино загрузилкак и была 1.8.1. нашел гдето рабочий Usglib.h файл , скачали установил . тперь пишет -

Arduino: 1.8.1 (Windows 7), Плата:"Arduino Nano, ATmega328P"

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:51: error: 'Ucglib_ST7735_18x128x160_SWSPI' does not name a type

 Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/ 12, /*data=*/ 10, /*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4);

 ^

C:\Users\User\Documents\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino: In function 'void setup()':

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:63: error: 'ucg' was not declared in this scope

   ucg.begin(UCG_FONT_MODE_SOLID);

   ^

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:63: error: 'UCG_FONT_MODE_SOLID' was not declared in this scope

   ucg.begin(UCG_FONT_MODE_SOLID);

             ^

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:67: error: 'ucg_font_9x15_tf' was not declared in this scope

   ucg.setFont(ucg_font_9x15_tf);

               ^

C:\Users\User\Documents\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino: In function 'void Perform_sweep()':

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:205: error: 'ucg' was not declared in this scope

   ucg.clearScreen();

   ^

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:206: error: 'ucg_font_9x15_tf' was not declared in this scope

   ucg.setFont(ucg_font_9x15_tf);

               ^

C:\Users\User\Documents\Arduino\libraries\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi\DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi.ino: In function 'void CreateGrid()':

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:330: error: 'ucg' was not declared in this scope

   ucg.setFont(ucg_font_9x15_tf);

   ^

DDS_sweeper1_TFT_ST7735_128x160_v4_hwspi:330: error: 'ucg_font_9x15_tf' was not declared in this scope

   ucg.setFont(ucg_font_9x15_tf);

               ^

exit status 1
'Ucglib_ST7735_18x128x160_SWSPI' does not name a type

Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"

 

DAFdriver
Offline
Зарегистрирован: 12.08.2016

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