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!

Exibições: 278

Responder esta

Respostas a este tópico

Oi Sr. Y, boa noite.

Testa este code e veja se atende sua necessidade:

http://pastebin.com/axspuzZg

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço