Arduino en Processing

Voor dit voorbeeld gebruiken we het voorbeeld met de temperatuursensor. 

import processing.serial.*;

Serial myPort;  // Maak een object voor de seriële poort
String inputData = "";  // String om de binnenkomende gegevens op te slaan
float temperature = 0;  // Variabele om de temperatuur op te slaan

void setup() {
  size(400, 400);  // Grootte van het venster
  
  // Selecteer de juiste seriële poort
  String portName = "/dev/cu.usbmodem141401";  // Pas aan naar de juiste poort
  myPort = new Serial(this, portName, 9600);  // Open de seriële poort op 9600 baud
  
  textSize(16);
  fill(0);  // Zwarte tekstkleur voor tekst
}

void draw() {
  background(255);  // Witte achtergrond
  
  // Controleer of er seriële data binnenkomt
  if (myPort.available() > 0) {
    inputData = myPort.readStringUntil(' ');
    
    // Als er data binnenkomt, verwerk het
    if (inputData != null) {
      inputData = trim(inputData);  // Verwijder witruimte rondom de string
      println(inputData);  // Debug: toon de ontvangen string in de console
      
      // Probeer de temperatuurwaarde uit de string te halen
      if (inputData.contains("graden C: ")) {
        // Split de string om alleen het numerieke deel van de temperatuur te krijgen
        String[] parts = split(inputData, "graden C: ");
        if (parts.length > 1) {
          try {
            // Converteer het temperatuurdeel naar een float
            temperature = float(parts[1]);
          } catch (NumberFormatException e) {
            println("Kon temperatuur niet converteren: " + parts[1]);
          }
        }
      }
    }
  }
  
  // Toon de laatste ontvangen temperatuurwaarde
  text("Temperatuur: " + nf(temperature, 1, 2) + " °C", 10, 50);
  
  // Kleur aanpassen op basis van de temperatuur
  if (temperature > 25) {
    fill(255, 0, 0);  // Rood
  } else if (temperature >= 22 && temperature <= 25) {
    fill(255, 165, 0);  // Oranje
  } else {
    fill(0, 0, 255);  // Blauw (onder 20°C)
  }
  
  // Bereken de hoogte van de rechthoek op basis van de temperatuur
  float rectHeight = map(temperature, 0, 50, 0, height - 100);  // Schaal de hoogte van de rechthoek
  rect(50, height - rectHeight, 50, rectHeight);  // Teken de rechthoek
}
Volgende pagina