_11_KnockSensor_with_piezo

Piezo-Sensor registriert Klopf-Geräusche und schaltet eine LED ein/aus.

/* Knock Sensor with Piezo
 *
 * Program using a Piezo element as if it was a knock sensor.
 *
 * We have to basically listen to an analog pin and detect 
 * if the signal goes over a certain threshold. It writes
 * "knock" to the serial port if the Threshold is crossed,
 * and toggles the LED on pin 13.
 * The threshold can be set to a custom value below.
 */

int ledPin = 13;                      // led connected to control pin 13
int knockSensorPin = 0;                  // the knock sensor will be plugged at analog pin 0
int val = 0;                          // variable to store the value read from the sensor pin
int statePin = LOW;                   // variable used to store the last LED status, to toggle the light
int THRESHOLD = 3;                   // threshold value to decide when the detected sound is a knock or not

void setup() {
  
 pinMode(ledPin, OUTPUT);             // declare the ledPin as as OUTPUT
 Serial.begin(9600);                  // initialize serial interface
}

void loop() {
  val = analogRead(knockSensorPin);      // read the sensor and store it in the variable "val"
  Serial.println(val);                // print value to Serial Monitor
  if (val > THRESHOLD) {
    statePin = !statePin;             // toggle the status of the ledPin ("!": gets the opposite of variable content)
    digitalWrite(ledPin, statePin);   // turn the led on or off
    Serial.println("Knock!");         // send the string "Knock!" back to the computer
  }
  delay(100);                     
  // we have to make a delay to avoid overloading the serial port
}

Dieses Beispiel herunterladen

Aktuelle Beiträge

Servos – alternative Bewegungsbeispiele

Unter diesem Link gibt es eine zip-Datei mit verschiedenen Bewegungsarten für Servo-Motoren. Hier eine kurze Beschreibung der einzelnen Beispiele:

  • completelyRandom: Nach zufällig ausgewählten Zeitabschnitten denkt sich das Programm neue Zufalls-Zielpositionen und -Geschwindigkeiten für den Servo aus.
  • servoChameleon: Der Servo bewegt sich ein Stück in eine Richtung und dann ein etwas kleineres Stück wieder zurück, dann wieder hin, usw. Wenn er an einer Seite angekommen ist, läuft das ganze rückwärts.
  • sinMovement: Servo bewegt sich wie von Sinus-Kurven bekannt, dh. er beginnt langsam an einer Seite, wird auf seinem Weg zur Mittelposition schneller und dann wieder langsamer, je näher er der anderen Seite kommt. Dann geschieht das Selbe rückwärts.
  • slowlyGettingFaster: Wie sinMovement, nur wird der Servo gegen Ende einer Bewegung nicht langsamer.
  • tickBackAndForth: Servo “tickt” von links nach rechts und wieder zurück, dh. er macht immer nur kleine Schritte wie ein Uhrzeiger.
  • verySlow: Servo bewegt sich sehr langsam von links nach rechts und wieder zurück. Weil Servos nur ganze Zahlen von 0-180 entgegennehmen, gibt es auch hier ein “Ticken”. Eine komplett weiche Bewegung ist leider mit Standard-Servos unmöglich.

Viel Spaß beim Tüfteln!

Marius

Veröffentlicht in Labor
  1. .ino! Kommentare deaktiviert
  2. Überarbeitung der Beispiele Kommentare deaktiviert
  3. Experience Design im Sommersemester 11 Kommentare deaktiviert
  4. Physical Computing I & II Kommentare deaktiviert