lidar dla gosi
unknown
c_cpp
10 months ago
2.3 kB
20
Indexable
import processing.serial.*; // Importuj bibliotekę do komunikacji szeregowej
Serial myPort; // Obiekt do komunikacji szeregowej
ArrayList<Integer> distances = new ArrayList<Integer>(); // Lista do przechowywania odległości
void setup() {
size(800, 800); // Ustaw rozmiar okna
String portName = Serial.list()[1]; // Wybierz pierwszy dostępny port
myPort = new Serial(this, portName, 9600); // Otwórz port szeregowy
}
void draw() {
// Sprawdź, czy są dostępne dane
if (myPort.available() > 0) {
String val = myPort.readStringUntil('\n'); // Odczytaj dane do nowej linii
if (val != null) {
// Przykład: "Number: 0 Distance: 48"
String[] parts = split(trim(val), ' '); // Podziel dane na części
if (parts.length == 4) {
int currentNumber = int(parts[1]); // Odczytaj numer
int distance = int(parts[3]); // Odczytaj odległość
addDistance(currentNumber, distance); // Dodaj odległość do listy
}
}
}
}
void addDistance(int number, int distance) {
// Dodaj odległość do listy
distances.add(distance);
// Jeśli numer wynosi 0, narysuj mapę
if (number == 0) {
drawMap();
distances.clear(); // Wyczyść listę po narysowaniu mapy
}
}
void drawMap() {
background(255); // Ustaw tło na białe
translate(width / 2, height / 2); // Przesuń układ współrzędnych do środka okna
stroke(0); // Ustaw kolor konturu na czarny
noFill(); // Wyłącz wypełnienie
// Rysuj pomieszczenie
beginShape();
for (int i = 0; i < distances.size(); i++) {
float angle = map(i, 0, distances.size(), 0, TWO_PI); // Oblicz kąt dla każdego pomiaru
float x = cos(angle) * distances.get(i); // Oblicz współrzędną x
float y = sin(angle) * distances.get(i); // Oblicz współrzędną y
vertex(x, y); // Dodaj wierzchołek do kształtu
}
endShape(CLOSE); // Zamknij kształt
// Dodaj etykiety dla pomiarów
for (int i = 0; i < distances.size(); i++) {
float angle = map(i, 0, distances.size(), 0, TWO_PI);
float x = cos(angle) * (distances.get(i) + 10); // Przesuń etykietę na zewnątrz
float y = sin(angle) * (distances.get(i) + 10);
textSize(12);
textAlign(CENTER);
text(distances.get(i), x, y); // Wyświetl odległość
}
}Editor is loading...
Leave a Comment