/* Connecting Everyday Things – Things: Beispiel für das Text-Protokoll Der Arduino SENDET Zeilen im Format name:wert (mehrere mit Komma getrennt) und EMPFÄNGT Befehle im Format name:wert (eine Zeile pro Befehl). In "Things" Protokoll "Text (eigener Sketch)" und 9600 Baud wählen. Die Namen (hier: poti, taster, licht) erscheinen dort automatisch als Eingänge. Unter "Verbindungen" als Ziel "Text-Befehl an Sketch" wählen und z. B. "led" oder "ton" als Namen eintragen. Aufbau (alles optional): Poti → A0 Lichtsensor → A1 (mit 10k-Widerstand als Spannungsteiler) Taster → D2 nach GND (interner Pullup) LED → D9 (PWM) mit 220-Ohm-Widerstand Piezo → D8 */ const int POTI = A0; const int LICHT = A1; const int TASTER = 2; const int LED = 9; const int PIEZO = 8; String eingang = ""; void setup() { Serial.begin(9600); pinMode(TASTER, INPUT_PULLUP); pinMode(LED, OUTPUT); pinMode(PIEZO, OUTPUT); } void loop() { // --- Sensoren senden (ca. 20x pro Sekunde) --- static unsigned long zuletzt = 0; if (millis() - zuletzt >= 50) { zuletzt = millis(); Serial.print("poti:"); Serial.print(analogRead(POTI)); Serial.print(",licht:"); Serial.print(analogRead(LICHT)); Serial.print(",taster:"); Serial.println(digitalRead(TASTER) == LOW ? 1 : 0); } // --- Befehle empfangen --- while (Serial.available()) { char c = Serial.read(); if (c == '\n') { befehl(eingang); eingang = ""; } else if (c != '\r' && eingang.length() < 40) { eingang += c; } } } void befehl(String zeile) { int trenner = zeile.indexOf(':'); if (trenner < 1) return; String name = zeile.substring(0, trenner); int wert = zeile.substring(trenner + 1).toInt(); if (name == "led") { analogWrite(LED, constrain(wert, 0, 255)); // Helligkeit 0–255 } else if (name == "ton") { if (wert > 0) tone(PIEZO, wert); // Frequenz in Hz else noTone(PIEZO); } // Eigene Befehle hier ergänzen: else if (name == "motor") { … } }