Я занимаюсь разработкой радара Arduino 360, мое arduino правильно отправляет информацию, и приложение Processing тоже получает ее правильно, но когда я пытаюсь сохранить данные в массив, они не обновляют значения.
Устройство имеет два HCSR04, размещенных вплотную и сервопривод, который вращается от 0 до 179 и обратно в 0, Arduino отправляет данные «Угол, Расстояние_1, Расстояние_2» по последовательному порту, и Обработка получает их без проблем. Вы можете увидеть данные, полученные и проанализированные в последовательной консоли, используя строки "
print(serialdata[0]);
print(" ");
print(serialdata[1]);
print(" ");
print(serialdata[2]);
"
, где serialdata [0] принимает угол, serialdata [1] первое расстояние и serialdata [2] второе расстояние, поэтому данные принимаются правильно, затем я хочу сохранить их в массиве из 360 элементов (по одному на каждый градус), первое расстояние сохраняется правильно (от 0 до 179), но второе расстояние не updatet, он хранится в 0, так как я инициализирую массив в функции setup (), поэтому я думаю, что проблема в строке "data [i + 180] = int (serialdat) a [2]); ", я пытался сделать" data [int (i + 180)] = int (serialdata [2]); "," data [i + int (180)] = int (serialdata [2] );» но я не решил, что я делаю не так?
Большое вам спасибо
import processing.serial.*; // invocar la librería Serial
Serial port; // se declara una variable para la com. serial
String serialin;
int data[] = new int[360];
PFont f;
void setup() {
port = new Serial(this, "COM3", 9600);
size(1280, 720);
f = createFont("Arial", 16, true); // Arial, 16 point, anti-aliasing on
textFont(f, 36);
frameRate(60);
for (int i = 0; i < 360; i++) {
data[i] = 0;
}
}
void draw() {
background(26, 26, 36, 200);
textSize(32);
stroke(255, 255, 255, 150);
fill(26, 26, 36, 200);
strokeWeight(3);
text("ghJ", 1150, 690);
circle(640, 360, 600);
circle(640, 360, 500);
circle(640, 360, 400);
circle(640, 360, 300);
circle(640, 360, 200);
circle(640, 360, 100);
for (int i = 0; i < 360; i++) {
point(640 + (100+data[i])*cos(radians(i)), 360 + (100+data[i])*sin(radians(i)));
}
while (port.available() > 0) {
serialin = port.readStringUntil(10);
try {
String serialdata[] = splitTokens(serialin, ",");
if (serialdata[0] != null) {
print(serialdata[0]);
print(" ");
print(serialdata[1]);
print(" ");
print(serialdata[2]);
print(" ");
int i = int(serialdata[0]);
data[i] = int(serialdata[1]);
data[i+180] = int(serialdata[2]);
print(data[int(serialdata[0])]);
print(" ");
println(data[int(serialdata[0])+180]);
}
}
catch (java.lang.RuntimeException e) {
}
}
}