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

Дисплейчик 0.96 128x64, например. Хочу на нем сектор нарисовать со стрелочкой, бегающей от моей цифры и прочие подобные показометры.

Такой?


шкала2
или такие?
шкала21

3 лайка

какая такая библиотека кроме знания арифметики нужна )))

1 лайк

Да, например такой.

Дак а чо изобретать велосипед, люди уже сто раз прорисовали

еще и арифметику вспоминать…

ладно, соглашусь, не барское это дело )))

1 лайк

Вот в библиотечке для него и есть всё необходимое … ну и с арифметикой дружить надо :wink:

Дакчо, библиотеки нет такой? Или примера простого? Ну ладно.

Можете дать ссылку на пример такого вот показометра, 0-6? само то для меня.

А нахрен тогда ардуина, если все купить можно?

1 лайк

?? я библиотеку спрашиваю, или пример программки для рисования стрелочных приборов на графическом дисплее, при помощи ардуины. Покупать ничего не предполагал.

Ты же не новичок, а поиском пользоваться не желаешь. Почему?

/////////////////// кнопка "стрелочный прибор"
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL); // А4,A5
extern const unsigned char schkala_A[];
int t = 50;             // пауза между считываниями потенциометра
int str = 27;           // длина стрелки в пикселях
float a = -PI;          // переменная для угла поворота стрелки
float k = -PI / 48;     // переменная изменения угла

void setup() {
  pinMode (10, INPUT_PULLUP);//кнопка
  myOLED.begin();
  myOLED.invert(0);//инверсия цвета
  myOLED.drawBitmap(32, 32, schkala_A, 64, 32); // рисование шкалы
  myOLED.drawLine(63, 61, 63 + cos(a)*str, 61 + sin(a)*str); // рисование стрелки
  myOLED.update();
}

void loop() {
  if (digitalRead(10) == LOW) {
    k = -k;
    while (digitalRead(10) == LOW) {
      a = a + k; if (a < -PI) {
        a = -PI;
      } if (a > 0.0) {
        a = 0.0;
      }
      myOLED.drawBitmap(32, 32, schkala_A, 64, 32); // рисование шкалы
      //a=-PI*(1023-analogRead(A0))/1023;//угол поворота стрелки прибора в зависимости от полученных данных
      myOLED.drawLine(63, 61, 63 + cos(a)*str, 61 + sin(a)*str); // рисование стрелки
      myOLED.update(); delay(t);
    }
    delay(t);
  }
}

Отсюдава: Имитация шкал ssd1306 0,49" - #42 от пользователя lilik

1 лайк

Ну хотелось услышать от реально юзавшего! Найдешь кучу всего, а там один гемор может быть. Потому и спросил у тех, кто сам делал.
А за ссылку гранд сэнкс!

На старом форуме есть моя тема, кажется “Имитация шкал приборов…”

/////////////////// индикатор "стрелочный прибор"
#include <OLED_I2C.h>
OLED  myOLED(SDA, SCL);// А4,A5
extern const unsigned char schkala_A[];
int t=3;// пауза между считываниями потенциометра
int str=51;//длина стрелки в пикселях
 float a=0.00;// переменная для угла поворота стрелки
 
void setup()
{
 myOLED.begin();
 myOLED.invert(0);//инверсия цвета
}

void loop()
{
 myOLED.drawBitmap(0, 0,schkala_A, 128, 64);// рисование шкалы
a=-PI*(1023-analogRead(A0))/1023;//угол поворота стрелки прибора в зависимости от полученных с потенциометра данных
myOLED.drawLine(63, 61, 63+cos(a)*str, 61+sin(a)*str);// рисование стрелки
myOLED.update(); delay(t); 
}

картинка шкалы (файл - ris.c):

#include <avr/pgmspace.h>



const unsigned char schkala_A[]=PROGMEM {
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,
0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X48,0X4C,
0XCC,0XF8,0XB8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X81,0XC3,0XE1,
0XB9,0X9F,0XCF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X02,0XE6,0XF4,
0XE4,0X07,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0X60,
0X38,0XF8,0X70,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X0C,0X3C,0X78,0XE0,0X80,0X00,0X00,0X30,0X60,0X80,0X00,
0X80,0X98,0XE0,0XC0,0XC0,0X43,0X7C,0X40,0X60,0X60,0X26,0X38,0X20,0X20,0X3F,0X3F,
0X3F,0X20,0X20,0X26,0X3E,0X60,0X60,0X40,0X78,0X4F,0XC0,0XC0,0XC0,0XB8,0X80,0X00,
0X00,0XE0,0X30,0X00,0X00,0X80,0XC0,0XF0,0X3C,0X1C,0X00,0X00,0X00,0X03,0X03,0X02,
0X02,0X0F,0X0F,0X02,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X60,0X60,0XF0,0XE0,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0X00,0X00,
0X10,0X30,0X60,0XC0,0XC6,0X6C,0X38,0X10,0X19,0X0F,0X0F,0X04,0X06,0X02,0X01,0X01,
0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X01,
0X01,0X02,0X06,0X04,0X0E,0X0F,0X19,0X10,0X30,0X7C,0XC6,0X80,0XC0,0X30,0X10,0X00,
0X00,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XC0,0X60,0X60,0X60,0X60,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X18,0X1F,0X1F,0X18,0X00,0X00,
0X00,0X00,0X10,0X30,0X70,0X60,0XE0,0XC0,0XC0,0X80,0X08,0X18,0X90,0X61,0X33,0X1A,
0X0C,0X02,0X03,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X03,0X02,0X0C,0X1E,
0X33,0X61,0X90,0X18,0X08,0X88,0X80,0XC0,0XC0,0X60,0X70,0X30,0X30,0X00,0X00,0X30,
0X33,0X23,0X22,0X3E,0X1C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X80,0X80,0X08,0X18,0X10,0XD1,0X31,0X0F,0X03,0X01,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X03,0X0F,0X73,0XD1,0X10,0X08,0X08,0X80,0X80,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0XC0,0XC0,0X60,0XC0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X10,0X10,0X11,0X11,0XF1,0X0F,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X1F,0XF1,0X11,0X11,0X10,0X10,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0XC0,0X60,0X60,0X60,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X0F,0X3F,0X30,0X20,0X30,0X1F,0X06,0X00,0X20,0X30,0X30,0X30,0X30,
0X30,0X31,0X31,0X31,0X33,0X3F,0X23,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X30,0X38,
0X30,0X20,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0X33,0X33,0X33,0X31,0X31,0X30,0X30,
0X30,0X30,0X30,0X20,0X20,0X00,0X04,0X3F,0X32,0X22,0X36,0X3E,0X08,0X00,0X00,0X00
};


шкала1
шкала3
шкала18
шкала20

5 лайков

Кажется она как-то по другому называлась… Зачетная тема, там даже я отметился, несмотря на всю мою лень.
Старый форум сейчас мне показывает фак (просроченный/инвалидный сертификат), так что не посмотреть.

У меня и этот форум открывается через раз и без картинок

У меня не открывается ничего. Вхожу по истории старых обращений к сайту.
…Эх, вот если б в истории было обращение к старому сайту…

Мне это нужно было для упр. блока поворотной антенны, добавил там точку, которая показывает куда антенна реально повернута:



Вот она висит

Я же теперь радист, как мне без поворотной антенны

Так что большое спасибо за программку!

1 лайк

Пожалуйста.