lidar dla gosi
unknown
c_cpp
2 months ago
2.3 kB
13
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