Bom dia a todos, gostaria de pedir uma ajuda com meu projeto.

O projeto tem a função de identificar faixas de distância, um Parking Sensor.

Sobre o programa 

ele tem 4 botões(que simulam as faixas do Parking Sensor), um motor dc, servo motor, sensor PIR e uma ponte H.

  • Sensor de faixa vermelha 
  • Sensor de faixa amarela 
  • Sensor de faixa verde 
  • Sensor de reiniciar as faixas 
  • E um sensor PIR (Para simular um sensor seguidor de linha)

A lógica do programa é a seguinte:

-Se identificar qualquer uma das faixas vermelha, amarela ou verde uma mensagem no monitor serial aparece identificando e somando o número das faixas identificadas e somando o total de todas elas- após essa identificação o motor dc vai "anda" 10cm e para em outra posição do mapa do Parking Sensor e (como é uma simulação não tinha como usar o sensor de seguidor de linha então o sensor PIR está fazendo essa função) se o sensor PIR identificar que existe a "presença de uma faixa no chão" o motor deve para nesta posição e aguardar novos comandos- se o sensor PIR não identificar nada o motor deve acionar tentando encontrar a "faixa no chão" - após tudo isso se nenhuma faixa vermelha, amarela ou verde for identificada o sensor de identificar faixas será acionado e uma contagem regressiva para iniciar uma nova coluna de posições, após a contagem chegar a zero o servo motor aciona vira 90° o motor "anda" 10 cm para a próxima posição e após ir para a nova coluna o servo volta para 0° e o programa da um reset. 

problema encontrado na hora de tentar simular o programa no software Tinkercad: 

- Não consigo realizar nenhuma das ações como os sensores e o monitor serial identifica que o sensor 3 (faixa verde) está sendo acionada e ele começa a contagem dessa faixa. 

- porém no programa do arduino não foi detectado nenhum erro.

programa:

#include <Servo.h>
int bt1 = 0;
int bt2 = 1;
int bt3 = 2;
int bt4 = 3;
const int add1 = 4;
const int add2 = 5;
const int pir = 7;
int cont1 = 2;
int cont2 = 2;
int cont3 = 2;
int cont4 = 2;
Servo servo;
int angulo = 0;
int vezes;
int faixa1;
int faixa2;
int faixa3;
void (*funcreset)() = 0;

void setup() {
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
servo.attach(6);
pinMode(7, INPUT);
Serial.begin(9600);
}

void loop() {

int stbt1 = digitalRead(0);
int stbt2 = digitalRead(1);
int stbt3 = digitalRead(2);
int stbt4 = digitalRead(3);
int sensorpir = digitalRead(7);

if (stbt1 == 1) {
cont1 ++;
delay(350);
}
if (cont1 = 3) {
cont1 == 1;
}
if (cont1 == 1) {
vezes = vezes += 1;
Serial.print(" ; Total= ");
Serial.println (vezes);


faixa1 = faixa1 += 1;
Serial.print("faixa vermelha= ");
Serial.print(faixa1);
delay(500);


Motor_add1();

delay(100);

cont1 = +1;

}
else if (cont1 == 2) {
if (sensorpir == 1) {
Motor_parar();
delay(200);
cont1 = +1;
}
else if (sensorpir == 0) {
Ajustar_posicao();
delay(100);
}
}
if (stbt2 == 1) {
cont2 ++;
delay(350);
}
if (cont2 == 3) {
cont2 == 1;
}
if (cont2 == 1) {
vezes = vezes += 1;
Serial.print(" ; Total= ");
Serial.println(vezes);

faixa2 = faixa2 += 1;
Serial.print("faixa amarela= ");
Serial.print(faixa2);
delay(500);

Motor_add1();
delay(100);

cont2 = +1;
}
else if (cont2 == 2) {
if (sensorpir == 1) {
Motor_parar();
delay(200);
cont2 = +1;
}
else if (sensorpir == 0) {
Ajustar_posicao();
delay(100);
}
}
if (stbt3 == 1) {
cont3 ++;
delay(350);
}
if (cont3 == 3) {
cont3 == 1;


}

if (cont3 = 1) {
vezes = vezes += 1;
Serial.print(" ; Total= ");
Serial.println(vezes);

faixa3 = faixa3 += 1;
Serial.print("faixa verde= ");
Serial.print(faixa3);
delay(500);

Motor_add1();
delay(100);

cont3 = +1;
}

else if (cont3 == 2) {
if (sensorpir == 1) {
Motor_parar();
delay(200);
cont3 = +1;
}
else if (sensorpir == 0) {
Ajustar_posicao();
delay(100);
}
}
if (stbt4 == 1) {
vezes = vezes -= 1;
Serial.print(" ; posicoes para reinicar= ");
Serial.println(vezes);
delay(500);

Motor_add2();
delay(100);

if (vezes == 0) {
cont4 ++;
}
if (cont4 == 3) {
cont4 == 1;
}
if (cont4 == 1) {
Servo_90();
delay(1000);
Motor_add1();
cont4 = +1;
}
if (cont4 == 2) {
Servo_0();
delay(1000);
Motor_parar();
delay(150);
funcreset();
}
}

}

void Motor_add1() {
analogWrite(4, 150);
analogWrite(5, 0);
delay(1500);
analogWrite(4, 0);
analogWrite(5, 0);
delay(200);
}

void Motor_add2() {
analogWrite(4, 0);
analogWrite(5, 150);
delay(1500);
analogWrite(4, 0);
analogWrite(5, 0);
delay(200);
}

void Motor_parar() {
analogWrite(4, 0);
analogWrite(5, 0);
delay(200);
}
void Ajustar_posicao() {
analogWrite(4, 0);
analogWrite(5, 150);
delay(1000);
analogWrite(4, 150);
analogWrite(5, 0);
delay(350);
}
void Servo_90() {
for (angulo = 0; angulo >= 90; angulo += 90) {
servo.write(angulo);
}

}
void Servo_0() {
for (angulo = 90; angulo <= 0; angulo -= 90) {
servo.write(angulo);
}
}

Vou disponibilizar o arquivo nos anexos.

 

Obrigado a todos e boa semana.

Exibições: 127

Anexos

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço