Näherungssensor mit Ultraschall und Servo ansteuerung (Automatischer Papierkorb) - AZ-Delivery

Auf facebook haben wir ein cooles Projekt gepostet:

https://www.facebook.com/AZDelivery.de/videos/421956858229574/

Wie ihr die Elektronik, bzw. den Sensor nachbauen könnt zeigen wir euch hier.

 

Was brauchen wir alles:

Mikrokontroller, kompatibel mit Arduino UNO R3
Ultraschall Sensor HC-SR04

Steckbrücken
Servo-Motor

 

Ultraschallsensor am Arduino

 

Software für den Arduino

long entfernung1 = 0;
long entfernung2 = 0;
long zeit=0;
int anzahl = 15;
int werte[16];

void setup() {
  #define trigger 3                     // Arduino Pin 3 an HC-SR04 Trig
  #define echo 2                        // Arduino Pin 2 an HC-SR04 Echo
  Serial.begin(115200);                 // Serial Baudrate
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {

  for (int i=0; i <= anzahl-1; i++){
    zeit=0;
    noInterrupts();                     // Deaktivieren von Interrupts
    digitalWrite(trigger, LOW);
    delayMicroseconds(3);
    digitalWrite(trigger, HIGH);        // Trigger Impuls 10 us
    delayMicroseconds(20);
    digitalWrite(trigger, LOW);
    zeit = pulseIn(echo, HIGH);         // Echo-Zeit messen
    interrupts();                       // Aktivieren von Interrupts
    werte[i] = zeit;
    //delay (1);
  }
  entfernung1 = 0;
  for (int i=0; i <= anzahl -1; i++){
    entfernung1 = entfernung1 + werte[i];
  }
  entfernung2 = entfernung1 / anzahl;
  Serial.println(entfernung2);
  if (entfernung2 > 9550){
    digitalWrite(LED_BUILTIN, HIGH);
    Serial.println("open");
    delay(3000);
    digitalWrite(LED_BUILTIN, LOW);
    delay(1000);
  }
}


 

Jetzt erkennt unser Arduino mit dem Ultraschallsensor zumindest schon einmal wenn wir uns nähern und zeigt dies mit der eingebauten LED an.

Im nächsten Schritt steuern wir einen Servomotor an, der den Papierkorb öffnen soll.

Nun erweitern wir unsere Verdrahtung noch um einen Servomotor.

 

 

 und passen die Software an:

#include <Servo.h>
Servo servo1;

long entfernung1 = 0;
long entfernung2 = 0;
long zeit=0;
int anzahl = 15;
int werte[16];
int zu = 5;
int auf = 95;

void setup() {
  #define trigger 3                     // Arduino Pin 3 an HC-SR04 Trig
  #define echo 2                        // Arduino Pin 2 an HC-SR04 Echo
  Serial.begin(115200);                 // Serial Baudrate
  pinMode(LED_BUILTIN, OUTPUT);
  servo1.attach(8);
  servo1.write(zu);
}

void loop() {

  for (int i=0; i <= anzahl-1; i++){
    zeit=0;
    noInterrupts();                     // Deaktivieren von Interrupts
    digitalWrite(trigger, LOW);
    delayMicroseconds(3);
    digitalWrite(trigger, HIGH);        // Trigger Impuls 10 us
    delayMicroseconds(20);
    digitalWrite(trigger, LOW);
    zeit = pulseIn(echo, HIGH);         // Echo-Zeit messen
    interrupts();                       // Aktivieren von Interrupts
    werte[i] = zeit;
    //delay (1);
  }
  entfernung1 = 0;
  for (int i=0; i <= anzahl -1; i++){
    entfernung1 = entfernung1 + werte[i];
  }
  entfernung2 = entfernung1 / anzahl;
  Serial.println(entfernung2);
  if (entfernung2 > 9550){
    digitalWrite(LED_BUILTIN, HIGH);
    Serial.println("open");
    servo1.write(auf);
    delay(3000);
    digitalWrite(LED_BUILTIN, LOW);
    servo1.write(zu);
    delay(1000);
  }
}


Ihr könnt nun den Sensor und Servo-Motor für diverse Ansteuerungen verwenden.
Wie in dem Facebookvideo zu sehen ist, könnte damit eine Iris geöffnet werden.

Wir wünschen euch viel Spass mit dem Näherungssensor und sind gespannt auf eure Einsatzzwecke.
Für arduinoProjekte für anfängerSensoren

3 Kommentare

Hartmut Zipper

Hartmut Zipper

Habe ich in mein Rasenroborter am Schleifenempfänger eingebaut. Jetzt stop er vor Hindernissen bei 10 cm. Bei mir Aldi Easy Mover ist es Pin 6 am Schleifenempfänger. Bei High Stop zurück (Pip,Pip,Pip) zurück drehen und weiter mähen.
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(LED, HIGH); // zum Schalten mit Vorwiderstand 100 Ohm oder Testen
Serial.println(“open”);
delay(300);
Serial.println(“LED”);
digitalWrite(LED, LOW);
digitalWrite(LED_BUILTIN, LOW);
delay(5000);

Rudolf Reiber

Rudolf Reiber

Guten Tag,
bei mir tat der erste Sketch erst zuverlässig nach dem Einfügen von:

pinMode(echo, INPUT);
pinMode(trigger, OUTPUT);

in der SetUp-Routine.

T.Geffe

T.Geffe

Hallo,
ein schoenes Projekt aber wo bekommt man den so einen Papierkorb zu kaufen?

Gruss Toralf

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery