Посоветуйте контент на тему обмена данными между Arduino и Processing

Mihay
Offline
Зарегистрирован: 07.08.2020

В частности интересует обмен массивами и структурами в обе стороны, посылка и разбор сообщений. 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

У Гугла спроси:
"Протоколы передачи данных"
"Пакетная передача данных"
Можешь добавить "С++"

Mihay
Offline
Зарегистрирован: 07.08.2020

Гугл - это не то. Там куча инфы про передачу данных на других языках. Ардуино и Processing имеют свои особенности. Именно про них я бы хотел прочитать.  

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Mihay пишет:

Гугл - это не то. Там куча инфы про передачу данных на других языках. Ардуино и Processing имеют свои особенности. Именно про них я бы хотел прочитать.  

Ардуино и процессинг, это галимый C++, на котором и описано большинство протоколов

ata3d
Offline
Зарегистрирован: 24.05.2017

если прочитать предыдущие сообщения в разделе Processing, то можно найти примеры общения Processing и Arduino.

ata3d
Offline
Зарегистрирован: 24.05.2017

Kakmyc пишет:
Mihay пишет:

Гугл - это не то. Там куча инфы про передачу данных на других языках. Ардуино и Processing имеют свои особенности. Именно про них я бы хотел прочитать.  

Ардуино и процессинг, это галимый C++, на котором и описано большинство протоколов

теоретически процессинг, это Java, но код Ардуино частенько работает в процессинге.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

ata3d пишет:

Kakmyc пишет:
Mihay пишет:

Гугл - это не то. Там куча инфы про передачу данных на других языках. Ардуино и Processing имеют свои особенности. Именно про них я бы хотел прочитать.  

Ардуино и процессинг, это галимый C++, на котором и описано большинство протоколов

теоретически процессинг, это Java, но код Ардуино частенько работает в процессинге.

А java ,это не голимый c++ ?

Nosferatu
Offline
Зарегистрирован: 04.11.2012

Зачем вам это?

По идеи, ардуина должна отправлять актуальные данные.

А сортировка по массивам со структурами и обработка, в процессинге.

Назад в ардуину отправляются только короткие команды.

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

один из моих первых вариантов)) PROCESSING---->>ARDUINO


//ARDUINO SKETCH----------------------------------------------------------------------
long commandValue; // данные, получаемые с последовательного порта
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup(){
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.clear();
  
}
void loop(){
  
   // считывание
   // если можно прочитать данные
  if (Serial.available() > 0) {
    // считываем данные
    //commandValue = Serial.read();
    commandValue = Serial.parseInt();
    lcd.clear();
    lcd.setCursor(0, 0);  
    lcd.print("DATA: ");
    lcd.setCursor(0, 1);
    lcd.print(commandValue,DEC);
    delay(600);
    //lcd.clear();
    }
  delay(100);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("NO Signal");
}
//ARDUINO SKETCH----------------------------------------------------------------------


//PROCESSING SKETCH-------------------------------------------------------------------
/*
int speed = 9600;                          //начальная скорость порта
import processing.serial.*;                //библиотека 
Serial serial;
import controlP5.*;                        //библиотека кнопки крутилки
ControlP5 cp5;
String portName;
RadioButton r1, r2;        
int TheMyCalor;
int rgb;
void setup() {
  size(680, 430);                          //размеры основного окна
  cp5 = new ControlP5(this);
  cp5.setFont(createFont("Calibri", 16));  // сделаем шрифт побольше
  // create a toggle
  cp5.addToggle("")                        //SENDRGB
     .setPosition(10,360)
     .setSize(240,20)
     ;
  //ON Отправка RGB--------------------------------------------------------------------
   cp5.addButton("ONRGB").setPosition(10, 320).setSize(240, 30);
  //palitra----------------------------------------------------------------------------
  cp5.addColorWheel("myCalor" , 10 , 50 , 240 ).setRGB(color(128,0,255));
  // кнопки---------------------------------------------------------------------
  cp5.addButton("open").setPosition(90, 10).setSize(80, 30);
  cp5.addButton("close").setPosition(170, 10).setSize(80, 30).linebreak();
  //отправка--------------------------------------------------------------------
  cp5.addTextfield("input").setPosition(260, 10).setSize(320, 30);
  cp5.addButton("send").setPosition(590, 10).setSize(80, 30);
  // выпадающий список----------------------------------------------------------
  cp5.addScrollableList("com")
    .setPosition(10, 10)
    .setSize(80, 100)
    .setBarHeight(30)
    .setItemHeight(30)
    .close()
    .addItems(Serial.list());                // добавляем список портов
  ;
  // cкорость порта--------------------------------------------------------------
   r1 = cp5.addRadioButton("radioButton")
         .setPosition(10,400)                //позиция кнопок выбора скорости порта 
         .setSize(80,20)                     //размер кнопок выбора скорости порта 
         .setColorForeground(color(120))
         .setColorActive(color(255))
         .setColorLabel(color(255))
         .setItemsPerRow(5)
         .setSpacingColumn(50)
         .addItem("4800",1)                 //режим 1 равен скорости 4800 бод
         .addItem("9600",2)                 //режим 1 равен скорости 9600 бод
         .addItem("19200",3)                //режим 1 равен скорости 19200 бод
         .addItem("38400",4)                //режим 1 равен скорости 38400 бод
         .addItem("115200",5)               //режим 1 равен скорости 115200 бод
         ;
         for(Toggle t:r1.getItems()) {
       t.getCaptionLabel().setColorBackground(color(255,80));
       t.getCaptionLabel().getStyle().moveMargin(-3,0,0,-3);
       t.getCaptionLabel().getStyle().movePadding(7,0,0,3);
       t.getCaptionLabel().getStyle().backgroundWidth = 55;      //длинна серых окон выбора скорости порта 
       t.getCaptionLabel().getStyle().backgroundHeight = 13;
}}
void radioButton(int TheRadioButton) {
 if(TheRadioButton==1){speed=4800;}                              //при включенном режиме 1 установить скорость в 4800 бод
  if(TheRadioButton==2){speed=9600;}                             //при включенном режиме 1 установить скорость в 9600 бод
   if(TheRadioButton==3){speed=19200;}                           //при включенном режиме 1 установить скорость в 19200 бод
    if(TheRadioButton==4){speed=38400;}                          //при включенном режиме 1 установить скорость в 38400 бод
     if(TheRadioButton==5){speed=115200;}                        //при включенном режиме 1 установить скорость в 115200 бод
     print(speed);
}
public void SENDRGB(boolean MySENDRGB ) {

 if(MySENDRGB==true){rgb=1;}else{rgb=0;}                         //указываем флаг rgb  0 или 1 
}
public void ONRGB(boolean MyONRGB ) {                            
  String textONRGB = "Str=" + ~TheMyCalor;                       //создаем СТРОКУ для отправки цвета
 if(MyONRGB==true) {serial.write(textONRGB);println(textONRGB);} //отправить значение RGB при нажатой кнопке ONRGB (инвертировал ~) 
}
public void myCalor(int TheMyCalor2) {
 TheMyCalor=TheMyCalor2;                                         //глобальная переменная равна локальной
}
void com(int n) {
  portName = Serial.list()[n];
}
void open() {
  serial = new Serial(this, portName, speed);
}
void close() {
  serial.stop();
}
void send() {
  serial.write(cp5.get(Textfield.class, "input").getText());     //Отправка сообщения при нажатой кнопке Send
}
void draw() {
  background(40);                                                // цвет фона
  if(rgb==1){                                                    // если флаг rgb равен 1
    String textMyCalor = "Str=" + ~TheMyCalor;                   //создаем СТРОКУ для отправки цвета
    serial.write(textMyCalor);println(textMyCalor);              //включить постоянную передача цвета
    delay(200);           //задержка
}
}
*/
//PROCESSING SKETCH-------------------------------------------------------------------