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

Exibições: 336

Responder esta

Respostas a este tópico

       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.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço