Я пытаюсь создать автоматическую систему стеллажей для замены ручной системы Kanban. Я работаю, используя Arduino с ультразвуковым датчиком, прикрепленным к задней части стойки. Датчик считывает расстояние от последней коробки в стойке до нее.
идея заключается в том, что, когда кто-то снимает ящик со стойки, другие ящики выдвигаются вперед, и расстояние от последнего ящика до задней части стойки увеличивается. Величина расстояния вызывает сигнал для пополнения запаса. Сигнал зеленого цвета, если стойка заполнена, желтого цвета, если осталось еще несколько ящиков, и красного цвета, если один из них не заполнен или отсутствует.
Код Arduino работает нормально, и в зависимости от расстояния он печатает «Зеленый», «Желтый» или «Красный».
Там, где у меня возникают проблемы, это перевод этих показаний в визуальную систему. Я хочу, чтобы стойка на экране компьютера отображала цвет каждой полки, чтобы показать, насколько она укомплектована. Я использую Обработка, чтобы сделать это, и у меня был успех, заставляя его печатать вывод вместо Arduino, однако, когда я делаю инструкцию "if", чтобы проверить, соответствует ли строка, читаемая из Arduino, заранее определенной строке, я получаю исключение нулевого указателя, и я не уверен, как это исправить.
Мне нужно выражение if, чтобы оно показывало зеленую рамку на этой полке, если на серийной распечатке написано «Зеленый», и то же самое для желтого и красного.
import processing.serial.*;
Serial myPort; //Create object from serial class
String val;
String str1;
void setup()
{
str1 = "Green";
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 115200);
size(500, 500);
line(5, 5, 5, 495); //these lines construct the flow rack diagram
line(5, 5, 495, 5);
line(495, 5, 495, 495);
line(5, 495, 495, 495);
line(250, 5, 250, 495);
line(5, 250, 495, 250);
}
void draw()
{
if (myPort.available()>0)
{
val = myPort.readStringUntil('\n');
}
if(val.equals(str1) == true){ //checks if val is Green
println(str1);
}
}