Vagner, boa noite!!
Como posso utilizar o estado de uma saída para controlar funções em todo meu programa
por exemplo se ela esta sendo executada em um determinado void e eu preciso
do seu estado em outro?/
Segue codigo
No caso eu quero usar o estado da saida flipflop_B que esta no void contador dentro do void tempoOn ou vice versa
int pinoBotao_A = 2; // Flip flop que é acionado pelo botão de partida
int flipflop_A = 8; // Flip flop que envia feedback de tempo esgotado desabilitando alimentação do botão de partida
int leitura_A; // Armazena o valor do temporizador
int valor_A = 1; // Variável tempo On que deverá vir através do bluetooth
int contador_A = 0; // inicia contador em 0
int pinoBotao_B = 3; // Flip flop que é acionado pelo botão de partida
int flipflop_B = 7; // Flip flop que envia feedback de acionamentos esgotado
int leitura_B; // Armazena o valor do contador
int valor_B = 5; // Variável de comparação
int contador_B = 0; // inicia contador em 0
// Declaração do LCD e LM35 para tmperatura
#include <LiquidCrystal.h>
// Biblioteca para cristal liquido
LiquidCrystal lcd(12, 11, 17, 16, 15, 14);
float temp; // Variável futuante
int tempPin = 4; // Memória de leitura analógica
int ledPin = 4; // Pino de saída para led que indica by pass ativo
String readString;
int ledPinState = LOW;
void setup()
{
// Declaração para Temporizador On
pinMode(pinoBotao_A, INPUT); // Entrada de pino 2 que recebe acionamento do flipflop botão de partida
pinMode(flipflop_A, OUTPUT); // Saída de pino 8 que desabilita alimentação do flipflop
// Declaração para contador de impulsos
pinMode(pinoBotao_B, INPUT); // Entrada de pino 2 que recebe acionamento do flipflop botão de partida
pinMode(flipflop_B, OUTPUT); // Saída de pino 8 que desabilita alimentação do flipflop
// Declaração para LM35
lcd.begin(16, 2);
lcd.print(“TEMPERATURA”); // Mensagem principal
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
TempoOn();
Contador();
LM35 ();
Led_Bluetooth();
}
void Contador()
{
if (ledPinState == HIGH )
{
contador_B = 0;
}
leitura_B = digitalRead(pinoBotao_B);
if (leitura_B == HIGH)
{
contador_B = contador_B++; //Incrementa o valor do contador
Serial.print("Contador_B : ");
Serial.println(contador_B);
if (contador_B == valor_B)
{
digitalWrite (flipflop_B, HIGH);
delay (500);
digitalWrite (flipflop_B, LOW);
;
contador_B = 0;
}
}
}
void LM35 ()
{
lcd.setCursor(1, 1);
temp = analogRead (tempPin);
temp = temp * 0.48828125;
lcd.print (temp);
lcd.print (" C ");
delay (1000);
}
void Led_Bluetooth()
{
while ( Serial.available() )
{ // Indica que ha dados no buffer de transferencia
delay( 3 );
char c = Serial.read();
readString += c; // Constroi uma string - “on” or “off”
}
if ( readString.length() >0 )
{
Serial.println( readString );
if ( readString == “on” )
{
ledPinState = HIGH;
}
if ( readString == “off” )
{
ledPinState = LOW;
}
readString="";
digitalWrite(ledPin, ledPinState);
}
}
void TempoOn()
{
if (ledPinState == HIGH)
{
contador_A = 0;
}
leitura_A = digitalRead(pinoBotao_A);
if (leitura_A == 1 )
{
contador_A = contador_A++; //Incrementa o valor do contador
Serial.print("Contador_A : ");
Serial.println(contador_A);
if (contador_A == valor_A*60)
{
digitalWrite (flipflop_A, HIGH);
delay (500);
digitalWrite (flipflop_A, LOW);
contador_A = 0;
}
}
}