Ja ich habe einen neuen Sensor bekommen,hc-sr04-s__

natürlich wollte ihn gleich mal ausprobieren 😉
So habe ich eine kleine  Einparkhilfe mit
optischer Warnung gebaut ….

So die Teileliste:

In diesem Aufbau habe die LED’s über Minus/ Masse geschaltet,
es bot sich an von der Belegung und hat kein tieferen Sinn.

 

Hier noch einmal der Aufbau:

sonic-parkUnd noch ein kleines Video dazu…

 Hinweis: Für den Code wir die Libary NewPing benötigt! –>Download<–

#include <NewPing.h>
/*****************Config********************/
//Loop Intervall
long interval = 150;

//Ab wieviel cm soll die Farbe leuchten
const int LEDON = 100;
const int GreenRange = 50;
const int YellowRange = 30;
const int RedRange = 1;

//LED Pins der Farben
const int ledPinGreen = 5;
const int ledPinYellow = 4;
const int ledPinRed = 3;

//Ultraschall Sensor Conf
#define TRIGGER_PIN  12
#define ECHO_PIN     11
#define MAX_DISTANCE LEDON // MAX = 500 CM
long previousMillis = 0;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
  pinMode(ledPinGreen, OUTPUT);
  pinMode(ledPinYellow, OUTPUT);
  pinMode(ledPinRed, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;

    unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
    Serial.print(F("Ping: "));
    Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
    Serial.println(F("cm"));

    if(uS / US_ROUNDTRIP_CM >= GreenRange)
    {
      digitalWrite(ledPinGreen, LOW);
      digitalWrite(ledPinYellow, HIGH);
      digitalWrite(ledPinRed, HIGH);
    }
    else if(uS / US_ROUNDTRIP_CM >= YellowRange)
    {
      digitalWrite(ledPinGreen, HIGH);
      digitalWrite(ledPinYellow, LOW);
      digitalWrite(ledPinRed, HIGH);
    }
    else if(uS / US_ROUNDTRIP_CM >= RedRange)
    {
      digitalWrite(ledPinGreen, HIGH);
      digitalWrite(ledPinYellow, HIGH);
      digitalWrite(ledPinRed, LOW);
    }
    else if(uS / US_ROUNDTRIP_CM == 0)
    {
      digitalWrite(ledPinGreen, HIGH);
      digitalWrite(ledPinYellow, HIGH);
      digitalWrite(ledPinRed, HIGH);
    }    
  }
}

 

Gruß Shojo

Kategorien: Atmel / Arduino