1

enter image description hereI am doing fish feeder project with level detection for the feeds but lcd display and ultrasonic sensor did not function.

#include <LiquidCrystal.h>
#define trigPin 12 // the trig pin to digital pin 12
#define echoPin 13 // the Echo pin to digital pin 13 
#define L 8
#define M 9
#define H 10
// #define trigmotor 1 //closelid
int led = A1; // LED indicator to digital pin A1 
#include <Servo.h>
Servo MyServo;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
const int thresholdH = 0;
const int thresholdM = 70;
const int thresholdL = 90;
// defines variables
long duration;
int distance;
float percentLV;
void setup()
{
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 Serial.begin(9600); // Starts the serial communication
 pinMode(led,OUTPUT); 
 digitalWrite(led,LOW); //set the led off(initial condition)
 lcd.begin(16, 2);
}
void loop()
{
int degreesOfRotation = 8;
int servoPinNumber = 11;
float hoursBetweenMeals = 12;
float mealDelayTime = 0;
{ 
 MyServo.attach(11);
 MyServo.write(degreesOfRotation);
 mealDelayTime = hoursBetweenMeals * 1800000;
 delay(20);
 while(degreesOfRotation < 152) {
 MyServo.write(degreesOfRotation);
 delay(10);
 degreesOfRotation += 1;
 }
 while(degreesOfRotation > 8) {
 MyServo.write(degreesOfRotation);
 delay(10);
 degreesOfRotation -= 1;
 }
 delay(mealDelayTime);
}
{ 
 // 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);
 float percentLV = (40 - ( distance - 16 )) * 100 / 40;
 if (percentLV > thresholdL && percentLV < 100) {
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("PLEASE REFILL!");
 lcd.setCursor(0, 1);
 //lcd.print(distance);
 lcd.print(percentLV);
 lcd.print(" %");
 digitalWrite(H, HIGH);
 digitalWrite(M, LOW);
 digitalWrite(L, LOW);
 //digitalWrite(trigmotor, HIGH);
 //delay(3000);
 //digitalWrite(trigmotor, LOW);
 //delay(1000);
 digitalWrite (led, HIGH); // Turn on the led indicator
 delay(20);
 } else if (percentLV <= thresholdL && percentLV > thresholdM) {
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("U May Refill Now");
 lcd.setCursor(0, 1);
 //lcd.print(distance);
 lcd.print(percentLV);
 lcd.print(" %");
 digitalWrite(H, LOW);
 digitalWrite(M, HIGH);
 digitalWrite(L, LOW);
 //digitalWrite(trigmotor, LOW);
 digitalWrite (led, HIGH); // Turn on the led indicator
 delay(20);
 } else if (percentLV <= thresholdM && percentLV > thresholdH) {
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("Take it easy");
 lcd.setCursor(0, 1);
 //lcd.print(distance);
 lcd.print(percentLV);
 lcd.print(" %");
 digitalWrite(H, LOW);
 digitalWrite(M, LOW);
 digitalWrite(L, HIGH);
 //digitalWrite(trigmotor, LOW);
 digitalWrite (led, LOW); // Turn off the led indicator
 delay(20);
 } else {
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("FULL!!");
 lcd.setCursor(0, 1);
 //lcd.print(distance);
 lcd.print(percentLV);
 lcd.print(" %");
 //digitalWrite(trigmotor, LOW);
 digitalWrite (led, LOW); // Turn off the led indicator
 delay(20);
 Serial.print("PercentLV: ");
 Serial.print(percentLV);
 Serial.println("%");
 }
 delay(1000);
}
}
asked Apr 23, 2017 at 20:20
7
  • Hello and welcome. Could you please be more specific about the errors you get. "not function" is quite hard to debug for the readers of your question. You might also want to add details about your system, display, and sensor. Note that you can always edit your question to include these details (do not put them in the comments section). Commented Apr 23, 2017 at 20:24
  • it did not function at all...the lcd display did not turn on and same goes to the ultrasonic sensor Commented Apr 23, 2017 at 20:26
  • Can you post a wiring diagram and specify the hardwares you are using? Commented Apr 23, 2017 at 21:51
  • Do these components work individually? Try making a "test sketch" for both the components to verify that they work and that your code works. Commented Apr 24, 2017 at 6:31
  • 2
    servo motor MG-995, ultrasonic sensor HC-SR04, lcd display 16x2 and arduino uno r3 Commented Apr 24, 2017 at 11:08

1 Answer 1

1

There doesn't appear to be anything wrong from a quick glance. Have you got the right library for the LCD?

The chances are there is something wrong with your LCD. So check your connections again. Now create a new sketch that just prints hello world on the LCD, or better still use an example. If that works, then the problem is an interaction between components.

So write a sketch that spins the servo back and forth while printing a message on the LCD.

Did that work, now add in the ultrasonic sensor and the code.

Now the other bits, and if that works, then you could look at what you have done differently, or just thank your lucky stars :)

answered Apr 24, 2017 at 12:02

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.