Smart Medicine Cabinet
Posted: Thu Jan 19, 2023 8:46 pm
Hi, my name is Zara and i'm in grade 7. My science fair is very close and ive been trying to create a smart medicine alerting system. For my example for the judges I sent a timer for 10 seconds and made a serial monitor where if the medicine bottle is within 4 or less inches and the timer for 10 seconds reaches zero the buzzer i coded sounds and the LED lights up. I coded an if statement where if the medicine bottle is more than 4 inches away the LED will stop lighting up and the buzzer will have noTone however only the LED turns off while the buzzer just changes its sound. I'm also having trouble having the whole process restart again. Below is my code
int trigPin=12;
int echoPin=11;
int pingTravelTime;
float pingTravelDistance;
float distanceToTarget;
int ledPin=13;
int i=10;
int buzzer=9;
void setup() {
// put your setup code here, to run once:
pinMode(ledPin,OUTPUT);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run once
Serial.print(i);
digitalWrite(trigPin,LOW);
delayMicroseconds(10);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
pingTravelTime=pulseIn(echoPin,HIGH);
delay(25);
pingTravelDistance=(pingTravelTime*765.*5280.*12)/(3600.*1000000)
;distanceToTarget=pingTravelDistance/2;
Serial.print("Distance To Target is: ");
Serial.print(distanceToTarget);
Serial.println(" inches.");
i=i-1;
delay(1000); {
if (i<0 && distanceToTarget < 4.0) {
digitalWrite(13,HIGH);
tone(9,500);
delay(1000);
}
if (i<0 && distanceToTarget > 4.0) {
digitalWrite(13,LOW);
tone(9,noTone);}
}
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
pingTravelTime=pulseIn(echoPin,HIGH);
delay(25);
pingTravelDistance=(pingTravelTime*765.*5280.*12)/(3600.*1000000)
;distanceToTarget=pingTravelDistance/2;
Serial.print("Distance To Target is: ");
Serial.print(distanceToTarget);
Serial.println(" inches.");
Please let me know how to fix this problem quickly.
Thank you for your time,
Zara
int trigPin=12;
int echoPin=11;
int pingTravelTime;
float pingTravelDistance;
float distanceToTarget;
int ledPin=13;
int i=10;
int buzzer=9;
void setup() {
// put your setup code here, to run once:
pinMode(ledPin,OUTPUT);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run once
Serial.print(i);
digitalWrite(trigPin,LOW);
delayMicroseconds(10);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
pingTravelTime=pulseIn(echoPin,HIGH);
delay(25);
pingTravelDistance=(pingTravelTime*765.*5280.*12)/(3600.*1000000)
;distanceToTarget=pingTravelDistance/2;
Serial.print("Distance To Target is: ");
Serial.print(distanceToTarget);
Serial.println(" inches.");
i=i-1;
delay(1000); {
if (i<0 && distanceToTarget < 4.0) {
digitalWrite(13,HIGH);
tone(9,500);
delay(1000);
}
if (i<0 && distanceToTarget > 4.0) {
digitalWrite(13,LOW);
tone(9,noTone);}
}
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
pingTravelTime=pulseIn(echoPin,HIGH);
delay(25);
pingTravelDistance=(pingTravelTime*765.*5280.*12)/(3600.*1000000)
;distanceToTarget=pingTravelDistance/2;
Serial.print("Distance To Target is: ");
Serial.print(distanceToTarget);
Serial.println(" inches.");
Please let me know how to fix this problem quickly.
Thank you for your time,
Zara