Boa noite galera.
Desenvolvi alguns Módulos Emissor e receptor com led IR e fototransistor. Ao acionar o módulo, ele aparece uma mensagem no display. Coloquei os 3 módulos receptores com seus respectivos emissor em fileira. Porém, quero "bloquear" o segundo e o terceiro, para não fazerem leitura, até que o primeiro seja acionado.
agradecido.
Guilherme
Tags:
Isso deve ocorrer sempre OU somente uma única vez? Se o 1º fez uma leitura, a partir deste momento o 2º e 3º podem ser independentes do 1º OOOU o 2º e 3º somente serão lidos sempre após o 1º ter recebido algo ?
após fazer a leitura do 1º modulo, fica apenas o 2º esperando receber algo, travando o 1º e continuando travado o 3º. Após fazer a leitura do 2º, destrava o 3º Módulo e trava o 2º .
Cada fototransistor compõem um módulo que, ao receber um sinal infrared, emite um pulso que é detectado por um pino digital, certo? Porém, os 3 recebem esse pulso simultaneamente mas precisa que eles sejam mutuamente exclusivos e na ordem 1, 2 e 3 ?
Já tentou com simples condicionais? Algo desse tipo:
//VARIÁVEIS GLOBAIS
bool recep1 = true;
bool recep2 = false;
bool recep3 = false;
//NO LOOP
if(recep1 && leituraPinRecep1)
{
//COD relacionado ao receptor 1
recep1 = false; //bloqueia a execução do bloco referente ao Recptor 1
recep2 = true; //libera o bloco do receptor 2
}
if(recep2 && leituraPinRecep2)
{
//COD relacionado ao receptor 2
recep2 = false; //bloqueia a execução do bloco referente ao Recptor 2
recep3 = true; //libera o bloco do receptor 3
}
if(recep3 && leituraPinRecep3)
{
//COD relacionado ao receptor 3
recep3 = false; //bloqueia a execução do bloco referente ao Recptor 3
recep1 = true; //libera o bloco do receptor 1
}
#include <LiquidCrystal_I2C.h>
boolean salvar1 = false;
boolean salvar2 = false;
boolean salvar3 = false;
boolean salvar4 = false;
int numero ;
int receptor1 = 7;
int receptor2 = 6;
int receptor3 = 5;
int valoreceptor1;
int valoreceptor2;
int valoreceptor3;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup(){
lcd.init();
lcd.init();
lcd.backlight();
pinMode(receptor1,INPUT);
pinMode(receptor2,INPUT);
pinMode(receptor3,INPUT);
digitalWrite(receptor1,LOW);
digitalWrite(receptor2,LOW);
digitalWrite(receptor3,LOW);
}
void loop(){
valoreceptor1 = digitalRead(receptor1);
valoreceptor2 = digitalRead(receptor2);
valoreceptor3 = digitalRead(receptor3);
if(valoreceptor1 !=1 && valoreceptor2 !=1 && valoreceptor3 !=1 && salvar4 == false)
{ numero = 1;
}
if(valoreceptor1 !=0 &&valoreceptor2 != 1 && valoreceptor3 !=1 )
{numero = 2;
salvar1 = true;
salvar2 = false;
salvar3 = false;
salvar4 = false;
}
if(valoreceptor1 !=1 && valoreceptor2 !=1 && valoreceptor3 !=1 && salvar1 == true)
{numero = 3;
}
if(valoreceptor1 !=1 &&valoreceptor2 != 0 && valoreceptor3 !=1)
{numero = 4;
salvar1 = false;
salvar2 = true;
salvar3 = false;
salvar4 = false;
}
if(valoreceptor1 !=1 && valoreceptor2 !=1 && valoreceptor3 !=1 && salvar2 == true)
{numero = 5;
}
if(valoreceptor1 !=1 &&valoreceptor2 !=1 && valoreceptor3 !=0)
{numero = 6;
salvar1 = false;
salvar2 = false;
salvar3 = true;
}
if(valoreceptor1 !=1 && valoreceptor2 !=1 && valoreceptor3 !=1 && salvar3 == true)
{numero = 7;
salvar1 = false;
salvar2 = false;
salvar3 = false;
salvar4 = true;
}
if(valoreceptor1 !=0 && salvar1 == false && salvar4==true)
{numero = 8;
}
switch (numero) {
case 1:
lcd.setCursor(0,0);
lcd.print("Coloque o peso");
lcd.setCursor(0,1);
lcd.print("na posicao O");
break;
case 2:
lcd.setCursor(0,0);
lcd.print("Ponto inicial ");
lcd.setCursor(0,1);
lcd.print(" ");
break;
case 3:
lcd.setCursor(0,0);
lcd.print(" Movendo A ");
break;
case 4:
lcd.setCursor(0,0);
lcd.print("Ponto A ");
break;
case 5:
lcd.setCursor(0,0);
lcd.print(" Movendo B ");
break;
case 6:
lcd.setCursor(0,0);
lcd.print("Ponto B ");
break;
case 7:
lcd.setCursor(0,0);
lcd.print("Movendo inicial");
break;
case 8:
lcd.setCursor(0,0);
lcd.print("asdasdasdasd");
break;
}
}
Esté é o codigo que fiz
Poste como um anexo. Fica melhor para análise em arquivo do que no corpo da resposta.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por