Ajuda para programa - Uma situação, interrompe a outra, e depois retorna a situação anterior.

Oi Amigos, obrigado pela boa vontade, Eu gostaria de saber de vocês. Estou precisando de ajuda na programação.  

Preciso fazer um programa assim;

Uma situação, interrompe a outra, e depois retorna a situação anterior.

Acho que usando  IF ELSE e talvez o interrup

É QUE, eu tenho um projeto, em que tem uma resistência elétrica de fio crome de 400v e uma ventoinha, pensei em acrescentar um sensor de movimento, para que quando alguém se aproximar do projeto ligado e muito quente, esse sensor detecte e o programa desliga a resistência, mas deixa ligado apenas a ventoinha, para esfriar mais rápido a resistência, e ai quando a pessoa sair de perto, tudo volta a ligar novamente. 

E pensei também, em manter sempre a temperatura desse projeto em uma temperatura fixa máxima.

Podem me ajudar?

Aos que pensam que queremos tudo prontinho sem esforço, digo que estou sim em busca, olhando vários programas, mas esta difícil.

Obrigado

Exibições: 315

As respostas para este tópico estão encerradas.

Respostas a este tópico

Creio que seria algo como a logica abaixo:

SE (sensor detectar movimento) E (temperatura >= XX) ENTAO

  Desliga resistencia

  Liga ventoinha

SENAO

  Liga Resistencia

  Desliga Ventoinha

OBRIGADO, mas graças aos meus poucos conhecimentos, não foi suficiente para eu conseguir fazer o programa. 

vamos lá, não sei como está o seu codigo, se puder disponibilizá-lo ficaria mais facil, mas vamos lá a um exemplo básico de como ler o status de um pino arduino.

dentro da função  void setup()

defina o tipo que será o pino entrada ou saida, vamos dizer que o seu sensor de movimento está ligado ao pino digital 2 do arduino:

pinMode(2, INPUT); //defino o pino 2 como entrada

digitalWrite(2, HIGH); //Gosto de trabalhar escrevendo uma tensão com nivel alto na porta logica para evitar disparos falsos causados por ruidos, neste caso ligue seu sensor para o terra

dentro da função void loop() 

int sensor = digitalRead(A0); //faço a leitura do status do pino e armazeno na variavel sensor

Agora só comparar os dados

if (sensor==LOW){

 //Aqui dentro você desliga a sua resistencia e liga a ventoinha (ou ao contrario vai depender de como ligou o sensor)

}

else

{

//Aqui vou volta a ligar a resistencia e desliga a ventoinha (ou ao contrario vai depender de como ligou o sensor)

}


O MEU CODIGO, NÃO É MEU, É DO RENATO ALOI, POIS ELE FEZ UM TUTORIAL SOBRE DIMMER, CONTROLE DE UMA LAMPADA, e eu quero controlar uma resistência de fio crome de 400 vatz, mas já sei que o triar usado, dá sim. o código que esta abaixo, é só incluir a parte que controla o sensor que vou usar o PIR HC-SR501  ou o Sensor Ultrasônico HC-SR04  e quanto ao de temperatura, que ainda não escolhi. ( TEM alguma sugestão? )  AI é só incluir os sensores, vou fazer um teste com PIR HC-SR501, mas gostei mais da precisão do  Ultrasônico HC-SR04, mas ele é grande e meio carinho ( apesar que comprando direto do fabricante deve cair pacas ) obrigado e desculpe o incomodo. 

Curso Arduino Advanced - Aula 14 (TRIAC)  

Código Dimmer Digital AC - Aula 14 Pessoal,  Conforme prometido na Aula 14 do Curso Arduino Advanced, segue o código do Dimmer Digital AC com TRIAC

 

int UP = 7;

int DOWN = 8;

int LAMP = 3;  

int dimming = 128;

int counts = 7;

int dimmer[7] = { 1, 105, 100, 75, 50, 25, 10 };    EM 44:00 – CONFORME APERTA O BOTÃO UP, ELE VAI DECREMENTANDO, APAGANDO A LUZ - OBS

int i = 0;

 

void setup()

{

  //Serial.begin(9600);

  //delay(1000);

  pinMode(UP, INPUT);

  pinMode(DOWN, INPUT);

  pinMode(LAMP, OUTPUT);

  digitalWrite(UP, HIGH);

  digitalWrite(DOWN, HIGH);

  attachInterrupt(0, zero_crosss_int, RISING);

}

 

void loop()

{

  if (!digitalRead(UP) || !digitalRead(DOWN))

  {

    if (verifica_botao(UP))

    {

      if (i < (counts - 1)) i++;

      //Serial.print("UP: ");

      //Serial.println(i, DEC);

    }

    else if (verifica_botao(DOWN))

    {

      if (i > 0) i--;

      //Serial.print("DOWN: ");

      //Serial.println(i, DEC);

    }

  }

  //Serial.print("VALOR: ");

  //  Serial.println(i, DEC);

  dimming = dimmer[i];

  delay(100);

}

 

void zero_crosss_int()

{

  int dimtime = (65 * dimming);    

  delayMicroseconds(dimtime);  

  digitalWrite(LAMP, HIGH); 

  delayMicroseconds(8.33);       

  digitalWrite(LAMP, LOW);  

}

 

byte verifica_botao(byte botao)

{

  if (!digitalRead(botao))

  {

    unsigned long tempo = millis() + (150 - dimming);

    while(tempo > millis())

    {

     if (digitalRead(botao)) return LOW;

    }

    return HIGH;

  }

  else

    return LOW;

}

Usa um timer para fazer em esse isso.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço