// define constant part ******************
const int TrigPin = 10 ;
const int EchoPin = 8 ;
const int Red = 5 ;
const int Blue = 3 ;
const int Green = 4 ;
const int Speaker = 2 ;
const int TimeDelay = 100 ;
const int WorkingHzSiganl = 500 ;
unsigned long PreviousValue = 0 ;
bool IsSpeakerOn = false ;
const int DataPin = 6 ;
const int LatchPin = 7 ;
const int clock = 9 ;
// functions code ***********************
void SevenSigment(long distance)
{
}
enum SegLetter()
{
seg_a = 0b10000000, seg_b = 0b00100000, seg_c = 0b00001000,
seg_d = 0b00000010, seg_e = 0b00000001, seg_f = 0b01000000,
seg_g = 0b00010000, seg_dp = 0b00000100
}
const uint8_t SegMap[]=
{
seg_a | seg_b | seg_c | seg_d | seg_e | seg_f, // 0
seg_b | seg_c, // 1
seg_a | seg_b | seg_g | seg_e | seg_d, // 2
seg_a | seg_b | seg_g | seg_c | seg_d, // 3
seg_f | seg_g | seg_b | seg_c, // 4
seg_a | seg_f | seg_g | seg_c | seg_d, // 5
seg_a | seg_f | seg_e | seg_d | seg_c | seg_g, // 6
seg_a | seg_b | seg_c, // 7
seg_a | seg_b | seg_c | seg_d | seg_e | seg_f | seg_g, // 8
seg_a | seg_b | seg_c | seg_d | seg_f | seg_g, // 9
seg_e | seg_f | seg_a | seg_b | seg_c | seg_g, // A
seg_f | seg_e | seg_d | seg_c | seg_g, // b
seg_g | seg_e | seg_d, // c
seg_g | seg_e | seg_d | seg_c | seg_b, // d
seg_a | seg_f | seg_g | seg_e | seg_d, // E
seg_a | seg_f | seg_g | seg_e, // F
}
void speaker_duraiton(long distance)
{
unsigned long temp = map( distance , 1 , 400 , 50 , 1000) ;
unsigned long CurrentValue = millis() ;
if( temp <= CurrentValue - PreviousValue ){
PreviousValue = CurrentValue ;
if( IsSpeakerOn == false ){
tone( Speaker , WorkingHzSiganl ) ;
IsSpeakerOn = true ;
}else{
noTone( Speaker ) ;
IsSpeakerOn = false ;
}
}
}
long RangeCm(long duration)
{
if( IsSpeakerOn == true ){
int temp1 = map( duration / 58 , 2 , 400 , 0 , 4 ) ;
return duration / 58 + temp1 ;
}
else{
return duration / 58 ;
}
}
void RGB( long distance )
{
if( distance <= 50 ){
digitalWrite( Green , LOW ) ;
digitalWrite( Red , HIGH ) ;
}else if( distance > 50 && distance <= 250 ){
digitalWrite( Red , HIGH ) ;
digitalWrite( Green , HIGH ) ;
}else
{
digitalWrite( Red , LOW );
}
}
// main code **********************************
void setup() {
Serial.begin( 9600 ); // start to reading from the sensor
pinMode( TrigPin , OUTPUT ); // define pin 10 as an output
pinMode( EchoPin , INPUT ); // define pin 8 as an input
pinMode( Speaker , OUTPUT ) ;
pinMode( Red , OUTPUT ) ;
pinMode( Green , OUTPUT ) ;
pinMode( Blue , OUTPUT ) ;
}
void loop() {
// giving clock for the trig at least 10 micro sec
digitalWrite( TrigPin , HIGH) ;
delayMicroseconds( 10 ) ;
digitalWrite( TrigPin , LOW ) ;
// read the input from the sensor
long duration = pulseIn( EchoPin , HIGH ) ;
//calculate the distance in cm
long distance = RangeCm( duration ) ;
// print distance in cm to the user
Serial.print( "distance in cm : " ) ;
Serial.print( distance ) ;
Serial.println() ;
// rgb change by color change by distance
RGB( distance ) ;
// distance speaker indicates near by objects (slow = far ,fast = close)
speaker_duraiton( distance );
// display on the sevensigment
//SevenSigment(distance);
}