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.
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.
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por