===== Ultraschall Sensor HC-SR04 =====
Das Interweb ist voll von Tutorials dazu.
==== Minimalsketch, ohne Kabel ;-) ====
// Kabelfreie Verbindung. Stromversorgung über GPIOs.
// Modul einfach bei folgenden Pins richtig herum einstecken...
//
// Tools -> Serial Monitor öffnen !
#define VCC 8
#define TRIG 9
#define ECHO 10
#define GND 11
void setup() {
pinMode(GND, OUTPUT);
digitalWrite(GND, LOW);
pinMode(TRIG,OUTPUT);
digitalWrite(TRIG, LOW);
pinMode(ECHO, INPUT);
pinMode(VCC,OUTPUT);
digitalWrite(VCC,HIGH);
Serial.begin(9600);
}
void loop() {
// Messung auslösen
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
// Puls-Länge messen (in us). (Maximal 1m)
long d = pulseIn(ECHO,HIGH,6000);
// Distanz in cm
float dist = d/2.0/29.1;
Serial.println(dist);
delay(20);
}
Und wer seine Umgebung nerven möchte, steure mit der Distanz einen Passiv-Buzzer (z.B. auf Pin 3) mit der Zeile
tone(3,400*pow(2,(dist-4)/20));
Oder etwas melodiöser:
tone(3,400*pow(2,((int)((dist-4)/3))/12.0));
Oder mit asiatischem Einschlag:
if (dist>4 && dist<64) {
int penta[]={0,2,4,7,9,12,14,16,19,21,24};
tone(3,400*pow(2,(penta[(int)((dist-4)*11.0/60.0)]/12.0)));
} else {
noTone(3);
}
Und wer es jazzig mag:
if (dist>4 && dist<64) {
int jazz[]={0,3,5,6,7,10,12,15,17,18,19,22,24};
tone(3,400*pow(2,(jazz[(int)((dist-4)*13.0/60.0)]/12.0)));
} else {
noTone(3);
}