I'm using an Arduino UNO and connecting an ultrasonic sensor with a simple vibrating sensors as follows:
With the following code:
/*
* Ultrasonic Sensor HC-SR04 and Arduino Tutorial
*
* by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
#include "Ultrasonic.h"
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
const uint8_t vibrate_pin = 11;
// defines variables
long duration;
int distance;
// Define global variables
ultrasonic_t ultrasonic;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
ultrasonic_initialize(&ultrasonic);
Serial.begin(9600); // Starts the serial communication for debugging purpose
pinMode(vibrate_pin, OUTPUT);
digitalWrite(vibrate_pin, LOW);
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance= duration*0.034/2;
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);
// Enable vibrate mottor
//delay(500);
if (distance <= 50) {
digitalWrite(vibrate_pin, LOW);
}else{
digitalWrite(vibrate_pin, HIGH);
}
}
I'm trying to make the vibrating sensor faster if the distance is less than 50cm. I'm getting the correct distance but the code isn't working correctly. The vibrating pin is vibrating at one speed only. The vibrating speed doesn't change no matter what I try. Can someone take a look at it and let me know what I'm doing wrong?