Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 11336

Ajuda com código

$
0
0
Boas. Estou a fazer um pequeno protejo, mas estou com um pequeno problema. O projecto consiste numa espécie de sensor de estacionamento/ medidor de distância com um buzzer e um display 12*4. Já consegui pôr a dar-me a distância mas pretendia que de acordo com a distância o buzzer apitasse.

Queria que quando a distância fosse maior a 30cm o buzzer não desse sinal, quando fosse menor que 20cm apitasse 1 vez por segundo, quando a distância fosse menor que 10cm apitasse constantemente.

O código é o seguinte:

Código (C):
#include <Ultrasonic.h> //Carrega a biblioteca Ultrasonic
#include <NewTone.h> //Carrega a biblioteca Newtone
#include <LiquidCrystal.h> //Carrega a biblioteca LCD

//Dados do buzzer
#define tempo 500
int frequencia = 2000;
int Pinofalante = 2;

int atraso = 1000;

//Define o pino do Arduino a ser utilizado com o pino Trigger do sensor
#define PINO_TRIGGER 13
//Define o pino do Arduino a ser utilizado com o pino Echo do sensor
#define PINO_ECHO 10

//Inicializa o sensor ultrasonico
Ultrasonic ultrasonic(PINO_TRIGGER, PINO_ECHO);

// Inicializa o display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Define os pinos que serão ligados ao LCD

void setup()
{
pinMode(Pinofalante,OUTPUT); //Pino do buzzer
Serial.begin(9600); //Inicializa a serial
lcd.begin(20,4); //Inicializa LCD
lcd.clear(); //Limpa o LCD
}

void loop()
{
float cmMsec, inMsec;

//Le os dados do sensor, com o tempo de retorno do sinal
long microsec = ultrasonic.timing();

//Calcula a distancia em centimetros
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

//Ajusta o atraso de acordo com a distancia
if (cmMsec > 80)
{
atraso = 2000;
//Apresenta os dados, em centimetros, no LCD e na Serial
lcd.setCursor(0,0);
lcd.print("Cent.: ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(cmMsec);
Serial.print("Cent: ");
Serial.print(cmMsec);
}
else if (cmMsec >50 && cmMsec<80)
{
atraso = 1500;
//Apresenta os dados, em centimetros, no LCD e na Serial
lcd.setCursor(0,0);
lcd.print("Cent.: ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(cmMsec);
Serial.print("Cent: ");
Serial.print(cmMsec);
}
else if (cmMsec >30 && cmMsec<50)
{
atraso = 1200;
//Apresenta os dados, em centimetros, no LCD e na Serial
lcd.setCursor(0,0);
lcd.print("Cent.: ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(cmMsec);
Serial.print("Cent: ");
Serial.print(cmMsec);
}
else if (cmMsec > 10 && cmMsec < 30)
{
atraso = 700;
//Apresenta os dados, em centimetros, no LCD e na Serial
lcd.setCursor(0,0);
lcd.print("Cent.: ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(cmMsec);
Serial.print("Cent: ");
Serial.print(cmMsec);
}
else if (cmMsec < 10)
{
atraso = 300;
//Apresenta os dados, em centimetros, no LCD e na Serial
lcd.setCursor(0,0);
lcd.print("Cent.: ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(cmMsec);
Serial.print("Cent: ");
Serial.print(cmMsec);
}

//NewTone(Pinofalante, frequencia, tempo);

delay(atraso);
}

Obrigado desde já.

Viewing all articles
Browse latest Browse all 11336

Trending Articles