Рисовать стрелочные приборы и тп показометры на экране - библиотеку посоветуйте

с такими диаметрами вибраторов нормального усиления не выжать

6мм, норм для 70 вт

ты заблуждаешься

я всегда прав:

Javascript Version 2025-05-23 by 3G-Aerial,

based on Rothammel / DL6WU

Волновой канал Long-yagi DL6WU


Частота f: 443 МГц

Длина волны λ: 677 мм

Диаметр элемента d: 6.3 мм

Диаметр стрелы D: 15 мм

Общее число элементов: 5

Длина стрелы: 459 мм

Усиление: 10 dBi (прибл.)


Длина рефлектора R: 329 мм

Позиция рефлектора R = 0


Длина вибратора F: 316 мм

Позиция вибратора F (R-F): 135 мм

Промежуток в месте подключения g <= 9 мм


Длина D1: 290 мм

Позиция директора D1 (R-D1): 186 мм

Расстояние F-D1: 50.8 мм


Длина D2: 286 мм

Позиция директора D2 (R-D2): 308 мм

Расстояние D1-D2: 122 мм


Длина D3: 282 мм

Позиция директора D3 (R-D3): 453 мм

Расстояние D2-D3: 145 мм


Форма активного вибратора: Разрезной

Элементы на диэлектрическом буме либо на металлическом, но удалены от него.

Бумкоррекция не учитывается.

Меня тут пристыдили незнанием арифметики, пришлось исправляться: вот версия с чисто-арифметикой, без картинок!

void DrawPanel()
{
  uint8_t A=enc,B=motorPos;

  oled.clear(); oled.invertText(false);
  oled.circle(63, 61, 44, 2); //2
  float a=-PI; // переменная для угла поворота стрелки
  uint8_t str=55, mbeg=44, mend=50,abeg=15,ubeg=44;
  float dk=PI/200;
  oled.setScale(1);
  for(uint8_t i=0;i<13;i++)
  {
    float k=PI/12*i;
    oled.setCursorXY(60+cos(a+k)*str, 55+sin(a+k)*str); oled.print(i);
    oled.drawLine(63+cos(a+k)*mbeg, 61+sin(a+k)*mbeg, 63+cos(a+k)*mend, 61+sin(a+k)*mend,2);// рисование рисок
    if(i==A) {
      oled.drawLine(63+cos(a+k)*abeg, 61+sin(a+k)*abeg, 63+cos(a+k)*mend, 61+sin(a+k)*mend,2);// рисование стрелки
     }
    if(i==B) oled.circle(63+cos(a+k)*ubeg, 61+sin(a+k)*ubeg, 5, 0xFF);// рисование указателя
  }
  // oled.update(); 
}

1 лайк

никто не стыдил, так напомнили про лень родившуюся вперёд )))

1 лайк

пристыдили-пристыдили, плюнули мне прямо в моё добродушное виртуальное литцо!
))

1 лайк

да не, просто напомнили как назвать мужчину который может, но не хочет )))

:slight_smile:

Радар и барометр, для полноты картины ещё. Много и разных показамеров, чтоб симпатичьненько было.
шкала25
шкала28

2 лайка

А может, ну его?

3 лайка

классно, но для поворотной антеннки некошерно ИМХО

<Adafruit_GFX.h> + библиотека под ваш дисплей, но не знаю есть ли примеры…

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  display.begin(SSD1306_I2C_ADDRESS, OLED_RESET);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("Arrow Example");
  display.display();
  
  drawArrow(64, 32, 20); // Рисуем стрелку в центре экрана
}

void loop() {
  // Ваш код
}

void drawArrow(int x, int y, int size) {
  display.drawLine(x, y, x, y - size, WHITE); // Стебель стрелки
  display.drawLine(x, y - size, x - size / 2, y - size / 2, WHITE); // Левая часть стрелки
  display.drawLine(x, y - size, x + size / 2, y - size / 2, WHITE); // Правая часть стрелки
  display.display();
}

Вот, вот-закусывать лучком надо :slight_smile:

lilik надо было показать насколько без арифметики, обратился к чату гэпт, а он меня подставил…
есть еще двин дисплеи, что бы совсем просто все было, но они дорогие…