Отправка последовательных данных из обработки в ArduinoJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Отправка последовательных данных из обработки в Arduino

Сообщение Anonymous »

Я новичок в программировании и ищу решение для пользовательского интерфейса Windows для изменения параметров на плате Arduino.
Вся цель — блок управления камерой, вспышкой и клапанами для фотографирования капель воды. Аппаратное обеспечение и IDE Arduino уже запущены, но изменение времени в эскизе Arduino IDE не очень удобно.
Поэтому я провел свои первые тесты последовательной передачи данных на основе ответа пользователя apodidae в разделе «Как я могу использовать обработку для создания графического интерфейса, который отправляет данные в Arduino и получает данные обратно для отображения в графическом интерфейсе?»
Теперь у меня возникла следующая проблема:
Когда я использую его без изменений, он отправит данные 2 набора данных. Второе перезапишет первое значением 0. Перезапись серийного номера изображения
За исключением строк 120–122 будет отправлен только один набор данных, но есть сдвиг и первое значение отсутствует.import controlP5.*;
import java.util.*;
import processing.serial.*;

ControlP5 cp5;

Serial myPort;

PFont font;
PFont fontB;
PFont fontT;

int ypos_event_1 = 50;
int ypos_event_step = 50;

int xpos_event_A = 80;

int xpos_event_S = 180;

int xpos_event_D = 320;

int[] sliderVal = {0, 10, 20, 0, 30, 40};

int slider0Value = sliderVal[0];
int slider1Value = sliderVal[1];
int slider2Value = sliderVal[2];

int slider3Value = sliderVal[3];
int slider4Value = sliderVal[4];
int slider5Value = sliderVal[5];

void setup() {
size(600, 1000);
surface.setTitle("ValveTime");
cp5 = new ControlP5(this);
font = createFont("calibri bold", 8); // custom fonts for
fontB = createFont("calibri bold", 12); // custom fonts for buttons
fontT = createFont("calibri bold", 20); // custom fonts for title

//* add a ScrollableList
List l = Arrays.asList("Leer","Kamera", "Blitz_1", "Blitz_2", "Blitz_3", "Vent_1", "Vent_2", "Vent_3", "Vent_4");

// slider value linked to variable 'sliderNumValue'
cp5.addScrollableList("slider0Value")
.setPosition( xpos_event_A, ypos_event_1)
.setSize(80, 50)
.setBarHeight(20)
.setItemHeight(20)
.setFont(font)
.addItems(l)
.setCaptionLabel(" A1")
;
cp5.addSlider("slider1Value")
.setPosition(xpos_event_S, ypos_event_1)
.setHeight(24)
.setRange(0, 10000)
.setFont(font)
.setCaptionLabel(" S1")
;
cp5.addSlider("slider2Value")
.setPosition(xpos_event_D, ypos_event_1)
.setHeight(24)
.setRange(0, 1000)
.setFont(font)
.setCaptionLabel(" D1")
;

cp5.addScrollableList("slider3Value")
.setPosition( xpos_event_A, (ypos_event_1+1*ypos_event_step))
.setSize(80, 50)
.setBarHeight(20)
.setItemHeight(20)
.setFont(font)
.addItems(l)
.setCaptionLabel(" A2")
;
cp5.addSlider("slider4Value")
.setPosition(xpos_event_S, (ypos_event_1+1*ypos_event_step))
.setHeight(24)
.setRange(0, 10000)
.setFont(font)
.setCaptionLabel(" S2")
;
cp5.addSlider("slider5Value")
.setPosition(xpos_event_D, (ypos_event_1+1*ypos_event_step))
.setHeight(24)
.setRange(0, 1000)
.setFont(font)
.setCaptionLabel(" D2")
;

// Send_Data button
cp5.addButton("Send_Data")
.setPosition(220, 900)
.setSize(100, 24)
;
// printArray(Serial.list());
myPort = new Serial(this, "COM3", 9600);

}

void draw() {
background(0);
}

public void Send_Data() {
println("Send_Data button hit.");
sliderVal[0] = slider0Value;
sliderVal[1] = slider1Value;
sliderVal[2] = slider2Value;
sliderVal[3] = slider3Value;
sliderVal[4] = slider4Value;
sliderVal[5] = slider5Value;

printArray(sliderVal);

for (int i = 0; i < (sliderVal.length); ++i) {
// if (i == 0) {
// myPort.write("\n"); //So first value will show up
// }
myPort.write(sliderVal+"\n");
}
}

void serialEvent(Serial p) {
String inStr = p.readStringUntil('\n');
if (inStr != null) {
print("received: ", inStr);
}
}

Код Arduino
int event_1A = 0;
int event_1S = 0;
int event_1D = 0;
int event_2A = 0;
int event_2S = 0;
int event_2D = 20;

int busyPin = 8;

void setup() {
Serial.begin(9600);
}

void loop() {
if (Serial.available() > 0) {
Serial.readStringUntil('\n');
Serial.println("#################");
event_1A = Serial.parseInt();
Serial.println(event_1A);
event_1S = Serial.parseInt();
Serial.println(event_1S);
event_1D = Serial.parseInt();
Serial.println(event_1D);
event_2A = Serial.parseInt();
Serial.println(event_2A);
event_2S = Serial.parseInt();
Serial.println(event_2S);
event_2D = Serial.parseInt();
Serial.println(event_2D);
Serial.println("=================");

}
if (event_1A == 6)
digitalWrite (busyPin, HIGH);

else
digitalWrite (busyPin, LOW);

}


Подробнее здесь: https://stackoverflow.com/questions/798 ... to-arduino
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»