Bar graph + HC-SR04 sensor US

Hi ,

I make a bar graph (10 segement led's) with a sensor HC-SR04 US . But my code not work , what this the problem ?

#include <Ultrasonic.h>

#define TRIGGER_PIN  12
#define ECHO_PIN     13

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup()
  {
  Serial.begin(9600);
   pinMode(2, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(6, OUTPUT);
   pinMode(7, OUTPUT);
   pinMode(8, OUTPUT);
   pinMode(9, OUTPUT);
   pinMode(10, OUTPUT);
   pinMode(11, OUTPUT);
  }

void loop()
  {
  float cmMsec, inMsec;
  long microsec = ultrasonic.timing();

  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
  inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
  Serial.print("MS: ");
  Serial.print(microsec);
  Serial.print(", CM: ");
  Serial.print(cmMsec);
  Serial.print(", IN: ");
  Serial.println(inMsec);
  
  if ((cmMsec) < 10)  { digitalWrite(11, HIGH); }
  if ((cmMsec) > 10)  { digitalWrite(11, LOW);  }
  if ((cmMsec) < 20)  { digitalWrite(10, HIGH); }
  if ((cmMsec) > 20)  { digitalWrite(10, LOW);  }
  if ((cmMsec) < 30)  { digitalWrite(9, HIGH);  }
  if ((cmMsec) > 30)  { digitalWrite(9, LOW);   }
  if ((cmMsec) < 40)  { digitalWrite(8, HIGH);  }
  if ((cmMsec) > 40)  { digitalWrite(8, LOW);   }
  if ((cmMsec) < 50)  { digitalWrite(7, HIGH);  }
  if ((cmMsec) > 50)  { digitalWrite(7, LOW);   }
  if ((cmMsec) < 60)  { digitalWrite(6, HIGH);  }
  if ((cmMsec) > 60)  { digitalWrite(6, LOW);   }
  if ((cmMsec) < 70)  { digitalWrite(5, HIGH);  }
  if ((cmMsec) > 70)  { digitalWrite(5, LOW);   }
  if ((cmMsec) < 80)  { digitalWrite(4, HIGH);  }
  if ((cmMsec) > 80)  { digitalWrite(4, LOW);   }
  if ((cmMsec) < 90)  { digitalWrite(3, HIGH);  }
  if ((cmMsec) > 90)  { digitalWrite(3, LOW);   }
  if ((cmMsec) < 100) { digitalWrite(2, HIGH);  }
  if ((cmMsec) > 100) { digitalWrite(2, LOW);   }
  
  
  delay(100);
  }

Thank you !

what this the problem

The problem is you haven't told us anything about the problem.

But my code not work ,

...doesn't cut it.

The code does something, you can be assured of that.
It may not do what you intended or expected, but that is your definition of "not working".
Those serial prints tell you something.

We need to know these things.

I'm sorry, I do not speak English very well (I'm french).

I'll explain myself better.

I want to realize a VU meter with a bar-graph

and a HC-SR04 sensor (Ultrasonic sensor)

The aim of the project is:

The LEDs gently illuminate when the sensor detects something.
If the objects are close, the more LEDs light up.
More the object is far less LEDs light up.

So I find the code below on the internet, but there is an error while uploading.

The error:

'Ultrasonic' does not name a type
sketch_aug09a.cpp:3:24: error: Ultrasonic.h: No such file or directory
sketch_aug09a:7: error: 'Ultrasonic' does not name a type
sketch_aug09a.cpp: In function 'void loop()':
sketch_aug09a:27: error: 'ultrasonic' was not declared in this scope
sketch_aug09a:29: error: 'Ultrasonic' has not been declared
sketch_aug09a:30: error: 'Ultrasonic' has not been declared

The code :

#include <Ultrasonic.h>

#define TRIGGER_PIN  12
#define ECHO_PIN     13

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup()
  {
  Serial.begin(9600);
   pinMode(2, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(6, OUTPUT);
   pinMode(7, OUTPUT);
   pinMode(8, OUTPUT);
   pinMode(9, OUTPUT);
   pinMode(10, OUTPUT);
   pinMode(11, OUTPUT);
  }

void loop()
  {
  float cmMsec, inMsec;
  long microsec = ultrasonic.timing();

  cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
  inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
  Serial.print("MS: ");
  Serial.print(microsec);
  Serial.print(", CM: ");
  Serial.print(cmMsec);
  Serial.print(", IN: ");
  Serial.println(inMsec);
  
  if ((cmMsec) < 10)  { digitalWrite(11, HIGH); }
  if ((cmMsec) > 10)  { digitalWrite(11, LOW);  }
  if ((cmMsec) < 20)  { digitalWrite(10, HIGH); }
  if ((cmMsec) > 20)  { digitalWrite(10, LOW);  }
  if ((cmMsec) < 30)  { digitalWrite(9, HIGH);  }
  if ((cmMsec) > 30)  { digitalWrite(9, LOW);   }
  if ((cmMsec) < 40)  { digitalWrite(8, HIGH);  }
  if ((cmMsec) > 40)  { digitalWrite(8, LOW);   }
  if ((cmMsec) < 50)  { digitalWrite(7, HIGH);  }
  if ((cmMsec) > 50)  { digitalWrite(7, LOW);   }
  if ((cmMsec) < 60)  { digitalWrite(6, HIGH);  }
  if ((cmMsec) > 60)  { digitalWrite(6, LOW);   }
  if ((cmMsec) < 70)  { digitalWrite(5, HIGH);  }
  if ((cmMsec) > 70)  { digitalWrite(5, LOW);   }
  if ((cmMsec) < 80)  { digitalWrite(4, HIGH);  }
  if ((cmMsec) > 80)  { digitalWrite(4, LOW);   }
  if ((cmMsec) < 90)  { digitalWrite(3, HIGH);  }
  if ((cmMsec) > 90)  { digitalWrite(3, LOW);   }
  if ((cmMsec) < 100) { digitalWrite(2, HIGH);  }
  if ((cmMsec) > 100) { digitalWrite(2, LOW);   }
  
  
  delay(100);
  }

Thank you !

This is a big clue!

sketch_aug09a.cpp:3:24: error: Ultrasonic.h: No such file or directory

Mark

Hi,

If you are using the Arduino IDE: did you put the ultrasonic library in the c:\arduino\library (replace with your path) before referencing it in your source code?

Serge

...and did you restart the IDE?