Hulp gezocht ivm coderen van de HC-SR04

Beste,

Voor een project van school ben ik bezig om analoog signaal van de HC-SR04 (Ultrasonic sensor) om te zetten in een digitaal signaal. Alleen dit lukt mij niet helemaal vandaar hulp gezocht.

De bedoeling is dat er bijvoorbeeld als er door de HC-SR04 tussen de 2 en 40 Cm wordt aangegeven dat er dan 5v op een pin komt te staan. waardoor deze weer kan worden gebruikt voor verdere doeleinde.

Zie onderstaande Arduino Project en tekening.

/*
HC-SR04 Basic Demonstration
HC-SR04-Basic-Demo.ino
Demonstrates functions of HC-SR04 Ultrasonic Range Finder
Displays results on Serial Monitor

DroneBot Workshop 2017
http://dronebotworkshop.com
*/

// This uses Serial Monitor to display Range Finder distance readings

// Hook up HC-SR04 with Trig to Arduino Pin 10, Echo to Arduino pin 13

#define trigPin 10
#define echoPin 13

float duration, distance;

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {

// Write a pulse to the HC-SR04 Trigger Pin

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Measure the response from the HC-SR04 Echo Pin

duration = pulseIn(echoPin, HIGH);

// Determine distance from duration
// Use 343 metres per second as speed of sound

distance = (duration / 2) * 0.0343;

// Send results to Serial Monitor

Serial.print("Distance = ");
if (distance >= 400 || distance <= 2) {
Serial.println("Out of range");
}
else {
Serial.print(distance);
Serial.println(" cm");
delay(100);
}
delay(100);
}

Wie kan mij helpen of in ieder geval tips geven

Alvast dank,

Niek

Also here

Kun je aub je post bewerken, alle code selecteren en op de </> knop drukken om zogenaamde code-tags toe te voegen en vervolgens je post weer opslaan. Het maakt het gemakkelijker om te lezen, gemakkelijker om te kopieren en het voorkomt dat de forum software delen van de code als instructies ziet.

Kun je aangeven waar je vast zit? Je hebt al gebruik gemaakt van een if statement dus het zou redelijk eenvoudig moeten zijn om er een tweede in te plakken die test of de afstand tussen 2 cm en 40 cm is en dan een pin hoog te maken.

FYI
Een HC_SR04 geeft geen analoog signaal af.

Het probleem is dat ik graag een 5v output wil hebben op een willekeurige pin op de arduino.
Als de sensor tussen bijv de 20 en de 40cm zit

Dus de ene keer op pin 5 een 5V en de andere keer op pin 6 bij dezelfde afstand?

Of gebaseerd op afstand?

  1. tussen 2 cm en 20 cm 5V op pin 5
  2. tussen 20 cm en 40 cm 5V op pin 6
  3. tussen 40 cm en 60 cm 5V op pin7
  4. etc

PS 1
De waarde terug gegeven door pulseIn is geen float !
PS2
Dit is hoe je code eruit moet zien op het orum\

/*
  HC-SR04 Basic Demonstration
  HC-SR04-Basic-Demo.ino
  Demonstrates functions of HC-SR04 Ultrasonic Range Finder
  Displays results on Serial Monitor

  DroneBot Workshop 2017
  http://dronebotworkshop.com
*/

// This uses Serial Monitor to display Range Finder distance readings

// Hook up HC-SR04 with Trig to Arduino Pin 10, Echo to Arduino pin 13

#define trigPin 10
#define echoPin 13

float duration, distance;

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {

  // Write a pulse to the HC-SR04 Trigger Pin

  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Measure the response from the HC-SR04 Echo Pin

  duration = pulseIn(echoPin, HIGH);

  // Determine distance from duration
  // Use 343 metres per second as speed of sound

  distance = (duration / 2) * 0.0343;

  // Send results to Serial Monitor

  Serial.print("Distance = ");
  if (distance >= 400 || distance <= 2) {
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
    delay(100);
  }
  delay(100);
}

Ik zou in die else eens wat if statements bouwen die een afstand controleren (bv tussen 2 cm en 20 cm) en vervolgens een digitalWrite(xxx, HIGH) doen op een bepaalde pin xxx.

1 Like

Aha oke. maar de bedoeling is gewoon dat als ik een waarde meet van 20 tot 40cm met de ultrasonisch sensor meet dat ik bijvoorbeeld op een willekeurige pin een 5 volt stroom krijg ik dan weer kan door schakelen

gebruik andere pinnen voor je sensor, dan komt pin 13 vrij en dat is een led dus digitaal.
dan met een if (distance >5 && distance < 100) bijvoorbeeld zet je digitaloutput (13,HIGH) en als dat niet is dus met else zet je de led ook weer uit. zie je eigen voorbeeld (oke dat is een stukje uit eenvoorbeeld dus even lezen wat er staat)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.