Boa tarde, entrei num problemão, me solicitaram elaborar um projeto no arduino sem ter nenhum conhecimento. O projeto deve funcionar dessa forma: A partir de uma determinada distância dada pelo Sensor Ultrasônico SR04, um relé deverá ativar e também será gerado uma tensão utilizando PWM. Os valores de tensão e distância devem ser mostrados num LCD 16x2.
Só que como está no sketch, a distância lida sempre consta como 0, se poderem analisar e ver algo fora do normal e me dizer seria de boa ajuda.
#include "Ultrasonic.h"
#include <LiquidCrystal.h>
Ultrasonic ultrasonic(13, 12); // 13 Echo 12 Trig
LiquidCrystal lcd (11, 10, 9, 8, 7, 6);
int valor_pwm; //Variável para armazenar o sinal PWM
int entrada_rele1 = 1; //Define o relé 1 no pino 1
int entrada_rele2 = 2; //Define o relé 2 no pino 2
int entrada_rele3 = 3; //Define o relé 3 no pino 3
int entrada_rele4 = 4; //Define o relé 4 no pino 4
void setup() {
pinMode(entrada_rele1, OUTPUT);
pinMode(entrada_rele2, OUTPUT);
pinMode(entrada_rele3, OUTPUT);
pinMode(entrada_rele4, OUTPUT);
digitalWrite(entrada_rele1, HIGH); // Deixa o relé desligado
digitalWrite(entrada_rele2, HIGH); // Deixa o relé desligado
digitalWrite(entrada_rele3, HIGH); // Deixa o relé desligado
digitalWrite(entrada_rele4, HIGH); // Deixa o relé desligado
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor( 0, 0);
lcd.print(" Gerando tensao ");
lcd.setCursor( 0, 1);
lcd.print(" pela distancia ");
delay(3000);
lcd.clear();
}
void loop()
{
int tensao = valor_pwm; //Define a tensão o valor dado pelo pwm
int distancia = (ultrasonic.Ranging(CM)); //Distancia dada pela leitura do Sensor
if (distancia /span> 100) {
if (distancia /span> 70) {
if (distancia /span> 50) {
if (distancia /span> 30) {
if (distancia /span> 10) {
analogWrite(valor_pwm, 0);//Ativa 0vcc
lcd.setCursor(0, 0);
lcd.print("Tensao ");
lcd.print(tensao); //Escreve no display o valor da tensao obtida pelo pwm
lcd.print(" V"); //Escreve V
lcd.setCursor(0, 1);
lcd.print("Distancia ");
lcd.print(distancia);//Escreve no display o valor da distancia em CM.
Serial.print(distancia);
Serial.println();
}
}
else {
analogWrite(valor_pwm, 64);//Ativa ~1,2 vcc
digitalWrite(entrada_rele1, LOW); //Aciona o Relé
lcd.setCursor(0, 0);
lcd.print("Tensao ");
lcd.print(tensao); //Escreve no display o valor da tensao obtida pelo pwm
lcd.print(" V"); //Escreve V
lcd.setCursor(0, 1);
lcd.print("Distancia ");
lcd.print(distancia); //Escreve no display o valor da distancia em CM.
Serial.print(distancia);
Serial.println();
}
}
else {
analogWrite(valor_pwm, 127);//Ativa ~2,5 vcc
digitalWrite(entrada_rele2, LOW); //Aciona o relé 2
lcd.setCursor(0, 0);
lcd.print("Tensao ");
lcd.print(tensao); //Escreve no display o valor da tensao obtida pelo pwm
lcd.print(" V"); //Escreve V
lcd.setCursor(0, 1);
lcd.print("Distancia ");
lcd.print(distancia);//Escreve no display o valor da distancia em CM.
Serial.print(distancia);
Serial.println();
}
}
else {
analogWrite(valor_pwm, 191);//Ativa ~ 3,7vcc
digitalWrite(entrada_rele3, LOW); //Aciona o Relé 3
lcd.setCursor(0, 0);
lcd.print("Tensao ");
lcd.print(tensao); //Escreve no display o valor da tensao obtida pelo pwm
lcd.print(" V"); //Escreve V
lcd.setCursor(0, 1);
lcd.print("Distancia ");
lcd.print(distancia);//Escreve no display o valor da distancia em CM.
Serial.print(distancia);
Serial.println();
}
}
else {
analogWrite(valor_pwm, 255); //Ativa 5vcc
digitalWrite(entrada_rele4, LOW); //Aciona o Relé 4
lcd.setCursor(0, 0);
lcd.print("Tensao ");
lcd.print(tensao); //Escreve no display o valor da tensao obtida pelo pwm
lcd.print(" V"); //Escreve V
lcd.setCursor(0, 1);
lcd.print("Distancia ");
lcd.print(distancia);//Escreve no display o valor da distancia em CM.
Serial.print(distancia);
Serial.println();
}
}