Заготовка Меню с выбором номера и скорости порта PROCESSING

georgy36arduino
Offline
Зарегистрирован: 27.11.2021


//PROCESSING sketch------------------------------------------------------------------
import processing.serial.*;
import controlP5.*;
Serial serial;
ControlP5 cp5;
Textarea myTextarea;//text окно
String portName;
boolean TheRec;
int speed = 9600;
int horizonTXT;
int verticalTXT;
String SostREC;
String inBuffer;
//--------------------------------------------------------------------------------
void setup() {
  // List all the available serial ports:
printArray(Serial.list());//выводим список портов
serial = new Serial(this, Serial.list()[0], 9600);
 
  size(960, 512, P3D);// P3D=во весь экран
  cp5 = new ControlP5(this);
  cp5.setFont(createFont("Calibri", 16));  // сделаем шрифт побольше
  // кнопки
  cp5.addToggle("Rec")
       .setPosition(330, 80)
       .setSize(20, 20)
       .setValue(false);//true-on  false-off
  // кнопки --------------------------------------------------------------------------------
  cp5.addButton("open").setPosition(170, 10).setSize(80, 20);
  cp5.addButton("close").setPosition(250, 10).setSize(80, 20).linebreak();
  //отправка--------------------------------------------------------------------------------
  cp5.addTextfield("input").setPosition(330, 30).setSize(160, 20);
  cp5.addButton("send").setPosition(330, 10).setSize(160, 20);
  // выпадающий список--------------------------------------------------------------------------------
  cp5.addScrollableList("com")
    .setPosition(10, 10)
    .setSize(80, 100)
    .setBarHeight(20)
    .setItemHeight(30)
    .close()
    .addItems(Serial.list());    // добавляем список портов
  ;
  // ТЕКСТОВОЕ ОКНО--------------------------------------------------------------------------------
  
  myTextarea = cp5.addTextarea("txt")
                  .setPosition(0,121)
                  .setSize(500,140)
                  .setFont(createFont("arial",12))
                  .setLineHeight(14)
                  .setColor(color(150))//цвет текста
                  .setColorBackground(color(155,80))
                  .setColorForeground(color(155,80));
                  ;
  myTextarea.setColor(0xffffffff);//цвет текста (белый)
  
   // ТЕКСТОВОЕ СЛАЙДЕРЫ--------------------------------------------------------------------------------   
 cp5.addSlider("horizonTXT")
     .setRange(100,400)
     .setValue(200)
     .setPosition(10,95)//позиция
     .setSize(100,19)//размер
     .setMin(0)//минимальное значение
     .setMax(960)//максимальное значение
     ;
     
  cp5.addSlider("verticalTXT")
     .setRange(100,400)
     .setValue(200)
     .setPosition(10,75)//позиция
     .setSize(100,19)//размер
     .setMin(0)//минимальное значение
     .setMax(512)//максимальное значение
     ;                  
  
  // выпадающий список--------------------------------------------------------------------------------
  cp5.addScrollableList("Speed")
    .setPosition(90, 10)
    .setSize(80, 100)
    .setBarHeight(20)
    .setItemHeight(30)
    .close()
         .addItem("300",1)
         .addItem("1200",2)
         .addItem("2400",3)
         .addItem("4800",4)
         .addItem("9600",5)
         .addItem("19200",6)
         .addItem("38400",7)
         .addItem("57600",8)
         .addItem("74880",9)
         .addItem("115200",10)
         .addItem("230400",11)
         .addItem("250000",12)
  ;
}
//------------------------------------------
void Speed(int TheSpeed) {
//print(TheSpeed);print(" ");println(speed);
if(TheSpeed==0){speed=300;}
if(TheSpeed==1){speed=1200;}
if(TheSpeed==2){speed=2400;}
if(TheSpeed==3){speed=4800;}
if(TheSpeed==4){speed=9600;}
if(TheSpeed==5){speed=19200;}
if(TheSpeed==6){speed=38400;}
if(TheSpeed==7){speed=57600;}
if(TheSpeed==8){speed=74880;}
if(TheSpeed==9){speed=115200;}
if(TheSpeed==10){speed=230400;}
if(TheSpeed==11){speed=250000;}
}
//РАЗМЕР ТЕКСТОВОГО ОКНА------------------------------------------
void horizonTXT (int TheHtxt) {
//println(horizonTXT);
myTextarea.setWidth(TheHtxt);//назначаем горизот текст. окна
horizonTXT=TheHtxt;
}
 
void verticalTXT (int TheVtxt) {
//println(verticalTXT);
myTextarea.setHeight(TheVtxt);//назначаем вертикаль текст. окна
verticalTXT=TheVtxt;
}
 
 
//------------------------------------------
void Rec (boolean TheRec) {
  if(TheRec==true){
//println("ON");
//ПРИЕМ ДАННЫХ С ПОРТА------------------------------------------
    SostREC="ВКЛ.";
  }else{
//println("OFF");
SostREC="ВЫКЛ.";}
}
//------------------------------------------
void com(int n) {
  portName = Serial.list()[n];
}
//------------------------------------------
void open() {
  serial = new Serial(this, portName, speed);
}
//------------------------------------------
void close() {
  serial.stop();
}
//------------------------------------------
void send() {
  serial.write("5,"+ cp5.get(Textfield.class, "input").getText() +";");
}
//------------------------------------------
void draw() {
 if(SostREC=="ВКЛ."){
 while (serial.available() > 0) {
    inBuffer = serial.readString();   
    if (inBuffer != null) {
      println(inBuffer);
    }
  }}
  
  background(10,30,90);
  LINE();TEXT();
  cp5 = new ControlP5(this);
//TEXT----------------------------------------
  myTextarea.setText(" Вы можете здесь выводить какую либо"
                    +" информацию\n"
                    +" Скорость Порта ровна          : "+speed+"\n"
                    +" Выбранный ПОРТ                  : # "+portName+"\n"
                    +" Прием Данных ВКЛ.-ВЫКЛ. :  "+SostREC+"\n"
                    +" Размер текстового окна       : \n"
                    +"                 по горизонтали        : "+ horizonTXT+"\n"
                    +"                 по вертикали            : "+ verticalTXT+"\n"
                    +"\n"
                    +"Buffer   >>  "+inBuffer+"\n"
                    );
}
 
 
//------------------------------------------
void TEXT(){
textSize(18);
fill(0, 152, 253);
text("Port: ", 10, 50);
fill(0, 102, 153);
text(""+portName, 100, 50);
//------------------------------------------
if(speed==9600){
fill(0, 152, 253);
text("SpeedPort: ", 10, 70);
fill(0, 102, 153);
text(""+speed, 100, 70);
fill(0, 152, 253);
text( " Default", 140, 70);
}else
{fill(0, 152, 253);
text("SpeedPort: ", 10, 70);
fill(0, 102, 153);
text(""+speed, 100, 70);
fill(0, 152, 253);
text( "", 140, 70);}
//------------------------------------------
if(SostREC=="ВКЛ."){
textSize(32);
fill(50, 255, 053);
text("Receive", 355, 100);
}
//------------------------------------------
 
 
}
//------------------------------------------
void LINE(){
fill(10, 20, 70);//цвет прямоугольника
rect( 0, 0, 500, 120 );//прямоугольник меню 500х120
line(0, 120, 500, 120);//горизонтальная линия от0 - до 500
line(500, 120, 500, 0);//вертикальная от500 - до 500
}
//PROCESSING sketch------------------------------------------------------------------
georgy36arduino
Offline
Зарегистрирован: 27.11.2021

Немного обновил ,добавил настроек по usb port'у


//PROCESSING sketch------------------------------------------------------------------------------------------------------------
import processing.serial.*;         // библиотека serial
import controlP5.*;                 // библиотека controlP5 -кнопки, слайдеры...
Serial serial;                      // вкл. serial
ControlP5 cp5;                      // вкл. controlP5
Textarea myTextarea;                // вкл. text окно


//НАСТРОЙКИ ПОРТА--------------------------------------------------------------------------------------------------------------
String portName;
int baudRate = 9600;
char parity='N';
int DataBits=8;
float stopBits=1.0;

//НАСТРОЙКИ МЕНЮ---------------------------------------------------------------------------------------------------------------
int horizonTXT;                    // состояние слайдера Горизонт
int verticalTXT;                   // состояние слайдера Вертикаль
String SostREC;                    // состояние кнопки REC (ВКЛ.\ВЫКЛ.)
String inBuffer;                   // хроним данные Буффера
boolean TheRec;                    // состояние кнопки приема сообщений Receive

//ДАННЫЕ С ПОРТА---------------------------------------------------------------------------------------------------------------
String DATA;                       // принятые данные
String OSTATOC2;                   // принятые данные инверт.
String ADDR;                       // принятые данные адреса
String ADDR_inv;                   // принятые данные адреса инверт.

//КОД ПРОГРАММЫ----------------------------------------------------------------------------------------------------------------
void setup() {
 printArray(Serial.list());                           // выводим список портов
serial = new Serial(this, Serial.list()[0], 9600);    // устанавливаем первоначальные настройки порта 0-коп порт 9600-битрейт

  size(960, 512, P3D);                                // указываем размер основного окна и P3D=весь экран
  cp5 = new ControlP5(this);                          // вкл. управление кнопками, слайдерами...
  cp5.setFont(createFont("Calibri", 16));             // сделаем шрифт побольше
  
// кнопки Rec------------------------------------------------------------------------------------------------------------------
  cp5.addToggle("Rec")
       .setPosition(620, 10)
       .setSize(60, 20)
       .setValue(false);//true-on  false-off
       
// кнопки open и close---------------------------------------------------------------------------------------------------------
  cp5.addButton("open").setPosition(450, 10).setSize(80, 20);
  cp5.addButton("close").setPosition(520, 10).setSize(80, 20).linebreak();
  
// кнопки ввода и отправка-----------------------------------------------------------------------------------------------------
  cp5.addTextfield("input").setPosition(680, 10).setSize(210, 20);
  cp5.addButton("send").setPosition(891, 10).setSize(59, 20);
  
// выпадающий список com-------------------------------------------------------------------------------------------------------
  cp5.addScrollableList("com")
    .setPosition(10, 10)          // указываем позицию    
    .setSize(80, 100)             // указываем размер 
    .setBarHeight(20)             //
    .setItemHeight(30)            //
    .close()
    .addItems(Serial.list());     // добавляем список портов
  ;
// ТЕКСТОВОЕ ОКНО--------------------------------------------------------------------------------------------------------------
  myTextarea = cp5.addTextarea("txt")                   
                  .setPosition(0,121)                   // указываем позицию       
                  .setSize(500,140)                     // указываем размер 
                  .setFont(createFont("arial",12))      // указываем шрифт текста и размер
                  .setLineHeight(14)
                  .setColor(color(150))                 //цвет текста
                  .setColorBackground(color(155,80))
                  .setColorForeground(color(155,80));
                  ;
  myTextarea.setColor(0xffffffff);                      // цвет текста (белый)
  
// ТЕКСТОВОЕ СЛАЙДЕРЫ horizonTXT-----------------------------------------------------------------------------------------------   
 cp5.addSlider("horizonTXT")
     .setRange(100,400)   
     .setValue(200)
     .setPosition(10,95)  // указываем позицию
     .setSize(100,19)     // указываем размер 
     .setMin(0)           // минимальное значение
     .setMax(960)         // максимальное значение
     ;
// ТЕКСТОВОЕ СЛАЙДЕРЫ verticalTXT----------------------------------------------------------------------------------------------       
  cp5.addSlider("verticalTXT")
     .setRange(100,400)
     .setValue(200)
     .setPosition(10,75)  // указываем позицию
     .setSize(100,19)     // указываем размер
     .setMin(0)           //минимальное значение
     .setMax(512)         //максимальное значение
     ;                  
  
// выпадающий список parity-----------------------------------------------------------------------------------------------------
  cp5.addScrollableList("parity")
    .setPosition(340, 10) // указываем позицию
    .setSize(120, 170)    // указываем размер
    .setBarHeight(20)
    .setItemHeight(30)
    .close()
         .addItem("'N' -default",1) //выплывающий список
         .addItem("'E' for even",2)
         .addItem("'O' for odd",3)
         .addItem("'M' for mark",4)
         .addItem("'S' or space",5)
;


// выпадающий список DataBits--------------------------------------------------------------------------------------------------
  cp5.addScrollableList("DataBits")
    .setPosition(180, 10)    // указываем позицию
    .setSize(80, 150)        // указываем размер
    .setBarHeight(20)
    .setItemHeight(30)
    .close()
         .addItem("5",1)     // выплывающий список          
         .addItem("6",2)
         .addItem("7",3)
         .addItem("8-Def",4) // значение default
         ;


// выпадающий список StopBits--------------------------------------------------------------------------------
  cp5.addScrollableList("StopBits")
    .setPosition(260, 10)   // указываем позицию
    .setSize(80, 150)       // указываем размер
    .setBarHeight(20)
    .setItemHeight(30)
    .close()
         .addItem("1-Def",1)//1.0 is the default
         .addItem("1.5",2)
         .addItem("2",3)
         ;


// выпадающий список baudRate--------------------------------------------------------------------------------
  cp5.addScrollableList("baudRate")
    .setPosition(90, 10)  // указываем позицию
    .setSize(90, 400)     // указываем размер
    .setBarHeight(20)
    .setItemHeight(30)
    .close()
         .addItem("300",1)// выплывающий список
         .addItem("1200",2)
         .addItem("2400",3)
         .addItem("4800",4)
         .addItem("9600",5)
         .addItem("19200",6)
         .addItem("38400",7)
         .addItem("57600",8)
         .addItem("74880",9)
         .addItem("115200",10)
         .addItem("230400",11)
         .addItem("250000",12)
  ;
}
//ФУНКЦИЯ baudRate(БИТРЕЙТ)---------------------------------------------------------------------------------
void baudRate(int TheSpeed) {
//print(TheSpeed);print(" ");println(speed);
if(TheSpeed==0){baudRate=300;}     // значение списка равно 0 то скорость 300 бод
if(TheSpeed==1){baudRate=1200;}    // значение списка равно 1 то скорость 1200 бод
if(TheSpeed==2){baudRate=2400;}    // значение списка равно 2 то скорость 2400 бод
if(TheSpeed==3){baudRate=4800;}    // ...
if(TheSpeed==4){baudRate=9600;}    // ...
if(TheSpeed==5){baudRate=19200;}   // ...
if(TheSpeed==6){baudRate=38400;}   // ...
if(TheSpeed==7){baudRate=57600;}   // ...
if(TheSpeed==8){baudRate=74880;}   // ...
if(TheSpeed==9){baudRate=115200;}  // ...
if(TheSpeed==10){baudRate=230400;} // ...
if(TheSpeed==11){baudRate=250000;} // ...
//println(baudRate);
}
//ФУНКЦИЯ DataBits (DATA БИТ)-------------------------------------------------------------------------------
void DataBits(int TheDataBits) {
//print(TheSpeed);print(" ");println(speed);
if(TheDataBits==0){DataBits=5;}    // значение списка равно 0 то DataBits равен 5 
if(TheDataBits==1){DataBits=6;}    //...
if(TheDataBits==2){DataBits=7;}    //...
if(TheDataBits==3){DataBits=8;}    //...значение default
println(DataBits);
}
//ФУНКЦИЯ StopBits (СТОПОВЫЙ БИТ)---------------------------------------------------------------------------
void StopBits(int TheStopBits) {
//print(TheSpeed);print(" ");println(speed);
if(TheStopBits==0){stopBits=1;}    // значение списка равно 0 то СТОПОВЫЙ БИТ равен 1
if(TheStopBits==1){stopBits=1.5;}  //...
if(TheStopBits==2){stopBits=2;}    //...
//println(stopBits);
}
//ФУНКЦИЯ parity (Перечисление)------------------------------------------------------------------------------
void parity(int TheParity) {
//print(TheSpeed);print(" ");println(speed);
if(TheParity==0){parity='N';}      // значение default   
if(TheParity==1){parity='E';}      // значение списка равно 1 то parity равен 'E'
if(TheParity==2){parity='O';}      //...
if(TheParity==3){parity='M';}      //...
if(TheParity==4){parity='S';}      //...
println(TheParity);
}
//ФУНКЦИЯ РАЗМЕР ТЕКСТОВОГО ОКНА-----------------------------------------------------------------------------
void horizonTXT (int TheHtxt) {
//println(horizonTXT);
myTextarea.setWidth(TheHtxt);      // указываем горизот текст. окна
horizonTXT=TheHtxt;
}
void verticalTXT (int TheVtxt) {
//println(verticalTXT);
myTextarea.setHeight(TheVtxt);     // указываем вертикаль текст. окна
verticalTXT=TheVtxt;
}

//ФУНКЦИЯ КНОПКИ ПРИЕМА ДАННЫХ Rec---------------------------------------------------------------------------
void Rec (boolean TheRec) {
  if(TheRec==true){
//println("ON");
SostREC="ВКЛ.";    // поменять на состояние "ВКЛ."
}else{
//println("OFF");
SostREC="ВЫКЛ.";}  // поменять на состояние "ВЫКЛ."
}
//ФУНКЦИЯ КНОПКИ СПИСКА ПОРТОВ--------------------------------------------------------------------------------
void com(int n) {
  portName = Serial.list()[n];
}
//ФУНКЦИЯ КНОПКИ open-----------------------------------------------------------------------------------------
void open() {
  serial = new Serial(this, portName, baudRate, parity, DataBits, stopBits);// Открыть порт с нов.настройками
}
//ФУНКЦИЯ КНОПКИ close----------------------------------------------------------------------------------------
void close() {
  serial.stop(); // Прекратить прием-передачу через КОМ ПОРТ
}
//ФУНКЦИЯ КНОПКИ send-----------------------------------------------------------------------------------------
void send() {
  serial.write("5,"+ cp5.get(Textfield.class, "input").getText() +";"); // Отправка сообщений через КОМ ПОРТ
}
//ОСНОВНОЙ КОД ПРОГРАММЫ-------------------------------------------- -----------------------------------------
void draw() {
 if(SostREC=="ВКЛ."){
 while (serial.available() > 0) {
    inBuffer = serial.readString();   
    
      //println(inBuffer);
      
      if (inBuffer != null) {                                // если буфер не равен Null
      String myString = new String(inBuffer);              // создаем новую строку для данных из буффера
      String st = myString;                                // строка
      ADDR = "";                                    // пустая строка 
      String OSTATOC = "";
        for (int j = 0; j < st.length(); j++) {
            if ( j < st.length() /5) {                     // отнимаем 4 символа справа
                ADDR += st.charAt(j);
            }else
                OSTATOC += st.charAt(j);
       }
//---------------------------------------------------------------------------------------------------------------------         
        String st1 = OSTATOC;
        ADDR_inv = "";
        String OSTATOC1 = "";
        for (int j = 0; j < st1.length(); j++) {
            if ( j < st1.length() /4) {                     // отнимаем 3 символа справа
                ADDR_inv += st1.charAt(j);
            }else
                OSTATOC1 += st1.charAt(j);
       }
//---------------------------------------------------------------------------------------------------------------------       
        String st2 = OSTATOC1;
        DATA = "";
        OSTATOC2 = "";
        for (int j = 0; j < st2.length(); j++) {
            if ( j < st2.length() /3) {                     // отнимаем 2 символа справа
                DATA += st2.charAt(j);
            }else
                OSTATOC2 += st2.charAt(j);
       } 
                println("Значение ADDR :     " + ADDR);     // печатаем в порт полученные значение
                println("Значение ADDR_inv : " + ADDR_inv); // печатаем в порт полученные значение
                println("Значение DATA :     " + DATA);     // печатаем в порт полученные значение
                println("Значение DATA_inv : " + OSTATOC2); // печатаем в порт полученные значение
                println("---------------------------------------");
//---------------------------------------------------------------------------------------------------------------------     
    }
  }}
  PImage img;
  img = loadImage("3.jpg");
  background(img);
//background(10,30,90);
  LINE();TEXT();
  cp5 = new ControlP5(this);
//TEXT----------------------------------------
  myTextarea.setText(" Вы можете здесь выводить какую либо"
                    +" информацию\n"
                    +" Выбранный ПОРТ                  : # "+portName+"\n"
                    +" Скорость Порта ровна          : "+baudRate+"\n"
                    +" Контроль чётности Порта     : "+parity+"\n"
                    +" Количество битов  Порта       : "+DataBits+"\n"
                    +" Стоповый бит Порта ровна   : "+stopBits+"\n"
                    +" Прием Данных ВКЛ.-ВЫКЛ.   :  "+SostREC+"\n"
                    +" Размер текстового окна        : \n"
                    +"                 по горизонтали        : "+ horizonTXT+"\n"
                    +"                 по вертикали            : "+ verticalTXT+"\n"
                    +"\n"
                    +"Buffer   >>  "+inBuffer+"\n"
                    +"Значение ADDR :     " + ADDR+"\n"
                    +"Значение ADDR_inv : " + ADDR_inv+"\n"
                    +"Значение DATA :     " + DATA+"\n"
                    +"Значение DATA_inv : " + OSTATOC2+"\n"
                    );
}


//ФУНКЦИЯ TEXT Port------------------------------------------------------------------------------------------
void TEXT(){
textSize(18);                  // Размер текста      
fill(0, 152, 253);             // Цвет текста и Позиция
text("Port: ", 10, 50);        // Текст и Позиция
fill(0, 102, 153);             // Цвет текста и Позиция
text(""+portName, 100, 50);    // Текст и Позиция
//ФУНКЦИЯ TEXT baudRate--------------------------------------------------------------------------------------
if(baudRate==9600){            // значение baudRate равно скорости 9600 бод ,то состояние поменять на  "ВКЛ."
fill(0, 152, 253);             // Цвет текста и Позиция
text("BaudRate: ", 10, 70);    // Текст и Позиция
fill(0, 102, 153);             // Цвет текста и Позиция
text(""+baudRate, 100, 70);    // Текст и Позиция
fill(0, 152, 253);             // Цвет текста и Позиция
text( " Default", 140, 70);    // Текст и Позиция
}else
{fill(0, 152, 253);            // Цвет текста и Позиция
text("BaudRate: ", 10, 70);    // Текст и Позиция
fill(0, 102, 153);             // Цвет текста и Позиция
text(""+baudRate, 100, 70);    // Текст и Позиция
fill(0, 152, 253);             // Цвет текста и Позиция
text( "", 140, 70);}
//ФУНКЦИЯ TEXT SostREC ---------------------------------------------------------------------------------------
if(SostREC=="ВКЛ."){           // значение на REC равно "ВКЛ."
textSize(32);                  // размер текста 
fill(50, 255, 053);            // Цвет текста и Позиция
text("Receive", 620, 100);     // Текст и Позиция
}
textSize(18);                  // размер текста 
fill(0, 152, 253);             // Цвет текста и Позиция
text("DataBits: ", 220, 50);   // Текст и Позиция
fill(0, 102, 153);             // Цвет текста и Позиция
text(""+DataBits, 300, 50);    // Текст и Позиция
//ФУНКЦИЯ TEXT StopBits----------------------------------------------------------------------------------------
fill(0, 152, 253);             // Цвет текста и Позиция
text("StopBits: ", 220, 70);   // Текст и Позиция
fill(0, 102, 153);             // Цвет текста и Позиция
text(""+stopBits, 300, 70);    // Текст и Позиция
//ФУНКЦИЯ TEXT parity------------------------------------------------------------------------------------------
fill(0, 152, 253);             // Цвет текста и Позиция
text("parity: ", 350, 50);     // Текст и Позиция
fill(0, 102, 153);             // Цвет текста и Позиция
text(""+parity, 405, 50);      // Текст и Позиция


}
//ФУНКЦИЯ LINE (ЛИНИИ)-----------------------------------------------------------------------------------------
void LINE(){
fill(10, 20, 70, 180);   //цвет прямоугольника g,g,b,alpha 
rect( 0, 0, 960, 120 );  //прямоугольник меню 500х120
line(0, 120, 960, 120);  //горизонтальная линия от0 - до 500
line(610, 120, 610, 0);  //вертикальная от500 - до 500
}
//PROCESSING sketch--------------------------------------------------------------------------------------------
georgy36arduino
Offline
Зарегистрирован: 27.11.2021

вроде неплохо...

 

lilik
Offline
Зарегистрирован: 19.10.2017

Да, сама идея выкладывать базовые примеры практического использования хороша.

:-)

Не хотите написать "процессинге" симулятор экранчика для ардуино, например на SSD1306 (128 * 64)?

georgy36arduino
Offline
Зарегистрирован: 27.11.2021

lilik пишет:

Да, сама идея выкладывать базовые примеры практического использования хороша.

:-)

Не хотите написать "процессинге" симулятор экранчика для ардуино, например на SSD1306 (128 * 64)?

Чуть подробнее  !,дисплеи обычно продаются в виде I2C- или SPI-модулей !

как эмулировать ? как подключать? Увы я сам изучаю Arduino Processing недавно .

lilik
Offline
Зарегистрирован: 19.10.2017

Да идея простая. Пишите-рисуете в "процессинге" экранчик и соединяете ардуино с ПК. Ну и шлёте с неё данные для отображения на рисованом экранчике.

georgy36arduino
Offline
Зарегистрирован: 27.11.2021

набросал заставку пока))

georgy36arduino
Offline
Зарегистрирован: 27.11.2021

lilik пишет:

Да идея простая. Пишите-рисуете в "процессинге" экранчик и соединяете ардуино с ПК. Ну и шлёте с неё данные для отображения на рисованом экранчике.

будем пробовать!

georgy36arduino
Offline
Зарегистрирован: 27.11.2021

задумка такая может создать каждый пиксель чтоб отображал именно так же как и оригинальный прибор 

lilik
Offline
Зарегистрирован: 19.10.2017

georgy36arduino пишет:

задумка такая может создать каждый пиксель чтоб отображал именно так же как и оригинальный прибор 

Ну, да. В природе пока китайцы создали их 3 моноцветов - синий (ближе к голубому), жёлтый и белый.

georgy36arduino
Offline
Зарегистрирован: 27.11.2021

lilik пишет:

georgy36arduino пишет:

задумка такая может создать каждый пиксель чтоб отображал именно так же как и оригинальный прибор 

Ну, да. В природе пока китайцы создали их 3 моноцветов - синий (ближе к голубому), жёлтый и белый.

ПОКА ДУМАЮ КАК ПИКСЕЛИ ВЫВОДИТЬ

lilik
Offline
Зарегистрирован: 19.10.2017

georgy36arduino пишет:

 

ПОКА ДУМАЮ КАК ПИКСЕЛИ ВЫВОДИТЬ

В виде квадратиков в поле экрана 128*64 квадратика.

georgy36arduino
Offline
Зарегистрирован: 27.11.2021

Результат по МЕНЮХЕ добавил  логику обработки ИК сигнала