olá pessoal, criei um código mais não está funcionando da forma que queria, então quero saber se podem me dar uma ajuda, é um code simples mais pra mim iniciante está sendo um problema; bom a ideia é a seguinte: o sensor está medindo distâncias entre 2cm a 120cm, e para cada distância foi definido que emita um brilho mais intenso com o led, e emita um bipe com o buzzer, estou usando dois botões, um para ativar o led e o outro para ativar o buzzer, meu problema é o seguinte, quando pressiono o botão que liga o led, o buzzer também começa a apitar ao mesmo tempo sem o segundo botão ter sido pressionado, pressiono de novo o botão do led, e ele desliga como o esperado mais se eu pressiono o botão do buzzer ele não faz nada! meu code está meio desorganizado mais irei colocar o mesmo para verem onde estou errando e se podem me ajudar.
#include <Ultrasonic.h>
#define led 6
#define trig 11
#define echo 10
#define botao 2
#define buzzer 13
#define botao2 3
int valor = 0;
int valor2 = 0;
int estado = 0;
int estado1 = 0;
int valor3 = 0;
int valor4 = 0;
float cmMsec;
Ultrasonic ultrasonic(trig, echo); //inicia a biblioteca com os pinos
void setup()
{
pinMode(led, OUTPUT);
pinMode(botao, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(botao2, INPUT);
}
void loop()
{
valor = digitalRead(botao);
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
if (cmMsec > 120) //se o valor for menor ou igual a
{
digitalWrite(buzzer, LOW);
digitalWrite(led, LOW);
}
if ((valor == HIGH) && (valor2 == LOW))
{
estado = 1 - estado;
delay(20);
}
valor2 = valor;
if (estado == 1)
{
if(cmMsec > 80 && cmMsec <120)
{
tone(buzzer, 1000,100);
delay(200);
tone(buzzer,1500,100);
delay(200);
tone(buzzer, 2000,100);
delay(200);
tone(buzzer, 2500,100);
delay(200);
tone(buzzer, 2000,100);
delay(200);
tone(buzzer, 1500,100);
delay(200);
}
else
if (cmMsec >40 && cmMsec < 80)
{
tone(buzzer, 1000,100);
delay(100);
tone(buzzer, 1500,100);
delay(100);
tone(buzzer, 2000,100);
delay(100);
tone(buzzer, 2500,100);
delay(100);
tone(buzzer,2000,100);
delay(100);
tone(buzzer, 1500,100);
delay(100);
}
else
if (cmMsec < 40)
{
tone(buzzer,1000,100);
delay(20);
tone(buzzer, 1500,100);
delay(20);
tone(buzzer, 2000,100);
delay(20);
tone(buzzer,2500,100);
delay(20);
tone(buzzer,2000,100);
delay(20);
tone(buzzer,1500,100);
delay(20);
}
else
if(estado == 0)
{
digitalWrite(buzzer, LOW);
}
}
valor3 = digitalRead(botao2);
if(cmMsec >120)
{
digitalWrite(led, LOW);
}
if ((valor3 == HIGH) && (valor4 == LOW))
{
estado1 = 1 - estado1;
delay(20);
}
valor4 = valor3;
if (estado1 == 1)
{
if(cmMsec > 80 && cmMsec < 120)
{
analogWrite(led, 90);
}
else
if(cmMsec > 40 && cmMsec < 80)
{
analogWrite(led, 160);
}
else
if(cmMsec < 40)
{
analogWrite(led, 255); }
if(estado1 == 0)
{
digitalWrite(led, LOW);
}
}
} desde já fico grato se puderem me ajudar!
Tags:
Oi Sr. Y, boa noite.
Testa este code e veja se atende sua necessidade:
Rui
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por