Ir ao conteúdo
  • Cadastre-se
Boladoloko

C Analisem esse programa Pfv e digam se funcionara de acordo com o necessitado

Recommended Posts

Oi pessoal fiz esse programa para um teto solar, que vai utilizar um sensor LDR e um sensor de Chuva
Sou iniciante nesse mundo estou aprendendo por causa do meu tcc,(não manjo muito mesmo,aprendi esse pouco de algumas aulas do YT e ajuda em fórum). 

Por favor analisem ele e digam se vai funcionar de acordo com o planejado.
Bom, quando o LDR captar a luz envia sinal pro Arduíno abrir o teto, quando estiver escuro o teto fecha, o sensor de chuva vai ser como suporte 
quando ele captar os pingos, fecha o teto, quando não tiver sinal de chuva abre o teto.(também tem a questão dos fim de cursos que vão dizer se o teto estar aberto ou fechado, quero saber se eles não vão bugar e não fechar ou abrir quando acionados).

 

/*pinos usados*/
#define pinSensorChuva A1
#define pinMotor 5
#define ldr_pin_sensor_light A4
//************************************************************************************
// correct these so they use valid Arduino pin numbers

#define sunroof_open_switch   7   //pinos sensor fim de curso as portas nn foram definidas   
#define sunroof_closed_switch 8   // pinos sensor fim de curso as portas nn foram definidas
//************************************************************************************


/*variaveis globais*/
int pino_passo = 5;
int pino_direcao = 4;

/*direção do giro*/
int direcao = 1;

// Volta completa pra formar 1 giro
// Ajuste de acordo com o seu motor
int passos_motor = 360;

int sunroof_open_switch_value;
int sunroof_closed_switch_value;

void setup()
{

  Serial.begin(9600);
  pinMode(pino_passo, OUTPUT);
  pinMode(pino_direcao, OUTPUT);

  pinMode(sunroof_open_switch, INPUT_PULLUP);
  pinMode(sunroof_closed_switch, INPUT_PULLUP);
}

void loop()
{
  /*monitoramento*/
  Serial.print("  SensorChuva:");
  Serial.print(analogRead(pinSensorChuva));
  Serial.print(" sensor chegada: ");
  Serial.print(digitalRead(ldr_pin_sensor_light));
  Serial.print(" ");
  Serial.print("  Atuador:");
  Serial.println(" ");
  /* Programa */

if (analogRead(pinSensorChuva)  >  700 || analogRead(ldr_pin_sensor_light)  >= 100 )
  {
    // if the sunroof is not full open
    sunroof_open_switch_value = digitalRead(sunroof_open_switch);
    if (sunroof_open_switch_value == 1)    // switch not closed, prepare to run motor
    {
      Serial.println("TETO ABERTO");
      direcao = 1;
      digitalWrite(pino_direcao, direcao);
      for (int p = 0 ; p < passos_motor; p++)
      {
        sunroof_open_switch_value = digitalRead(sunroof_open_switch);
        if (sunroof_open_switch_value == 0)   // switch is closed, DO NOT make motor run
          break;
        digitalWrite(pino_passo, 1);
        delay(1);
        digitalWrite(pino_passo, 0);
        delay(1);
      }
    }
  }
  else
  {
    // if the sunroof is not full closed
    sunroof_closed_switch_value = digitalRead(sunroof_closed_switch);
    if (sunroof_closed_switch_value == 1)     // switch not closed, prepare to run motor
    {
      Serial.println("TETO FECHADO");
      direcao = 0;
      digitalWrite(pino_direcao, direcao);
      for (int p = 0 ; p < passos_motor; p++)
      {
        sunroof_closed_switch_value = digitalRead(sunroof_closed_switch);
        if (sunroof_closed_switch_value == 0)   // switch is closed, DO NOT make motor run
          break;
        digitalWrite(pino_passo, 1);
        delay(1);
        digitalWrite(pino_passo, 0);
        delay(1);
      }
    }
  }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Boladoloko ,

 

Aí forçou, meu amigo ....

 

Tente você mesmo, e se não rodar, poste o que aconteceu para que possa ser ajudado, ok ?

 

Afinal, é o SEU TCC.

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

@aphawk  Verdade, desculpe. :(
Mas segui o conselho. eu testei (o programa do motor sem os outros complementares) e funcionou hehe, deu ate orgulho kkk:cool:, o único problema que deu foi... Quando juntei os outros programas (complementares) que tinha feito, O motor ficou rodando e parando como se tivesse com um delay quando trocava as funções pelo loop.
alguma ideia do que seja ? não sei se preciso postar o programa mais ta aqui!
 

/*livrarias usadas*/
#include "DHT.h"

/*pinos usados sensores*/
#define pinSensorA0 A0
#define pinSensorChuva A1

#define DHTPIN A3
#define ldr_pin_sensor_light A4

/*pinos usados Atuadores*/
#define pinSolenoide 4
#define COOLER 3
#define pinMotor 5

/*PINOS FIM DE CURSO */
#define sunroof_open_switch   11
#define sunroof_closed_switch 12

/*Declaração do Dht e do tipo*/
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

/*Variaveis globais*/
int pino_passo = 5;
int pino_direcao = 4;
int direcao = 1; //direção do giro
int passos_motor = 700; // Ajuste de acordo com o seu motor

int sunroof_open_switch_value; //fim de curso teto aberto
int sunroof_closed_switch_value; //fim de curso teto fechado

void setup()
{
  pinMode(COOLER, OUTPUT);
  pinMode(pinSolenoide, OUTPUT);
  pinMode(pino_passo, OUTPUT);
  pinMode(pino_direcao, OUTPUT);
  pinMode(sunroof_open_switch, INPUT_PULLUP);
  pinMode(sunroof_closed_switch, INPUT_PULLUP);
  Serial.begin(9600);
  dht.begin();
}
void loop() {

  /*declaraçao de variavel*/
  float t = dht.readTemperature();
  float ht = analogRead(pinSensorA0);

  /*monitoramento temperatura*/
  Serial.println("  ");
  Serial.print("TempDHT: ");
  Serial.print(t);
  Serial.println(" *C");
  Serial.print("  Atuador1:");
  Serial.println("     ");
  Serial.print(ht);
  Serial.print("  umidade:");
  Serial.print("  ");
  delay(500);// delay de 1 seg para atualizaçao de dados

  /*Monitoramento da parte do motor e sensores do motor*/
  Serial.print("  SensorChuva:");
  Serial.print(analogRead(pinSensorChuva));
  Serial.print(" sensor chegada: ");
  Serial.print(analogRead(ldr_pin_sensor_light));
  Serial.print(" ");
  Serial.print("  Atuador:");
  Serial.println(" ");
  
/*Controle do teto*/
  void Controle_teto();

  if (analogRead(ldr_pin_sensor_light) >= 500 || analogRead(pinSensorChuva)  >  700)
  {
    // if the sunroof is not full open
    sunroof_open_switch_value = digitalRead(sunroof_open_switch);
    if (sunroof_open_switch_value == 1)    // switch not closed, prepare to run motor
    {
      Serial.println("TETO FECHADO");
      direcao = 0;
      digitalWrite(pino_direcao, direcao);
      for (int p = 0 ; p < passos_motor; p++)
      {
        sunroof_open_switch_value = digitalRead(sunroof_open_switch);
        if (sunroof_open_switch_value == 0)   // switch is closed, DO NOT make motor run
          break;
        digitalWrite(pino_passo, 1);
        delay(1);
        digitalWrite(pino_passo, 0);
        delay(1);
      }
    }
  }
  else
  {
    // if the sunroof is not full closed
    sunroof_closed_switch_value = digitalRead(sunroof_closed_switch);
    if (sunroof_closed_switch_value == 1)     // switch not closed, prepare to run motor
    {
      Serial.println("TETO ABERTO");
      direcao = 1;
      digitalWrite(pino_direcao, direcao);
      for (int p = 0 ; p < passos_motor; p++)
      {
        sunroof_closed_switch_value = digitalRead(sunroof_closed_switch);
        if (sunroof_closed_switch_value == 0)   // switch is closed, DO NOT make motor run
          break;
        digitalWrite(pino_passo, 1);
        delay(1);
        digitalWrite(pino_passo, 0);
        delay(1);
      }

      /*configuração do cooler*/
      void controle_Atuadores();

      if (t >= 25.00)
      {
        Serial.println("Cooler ON");
        digitalWrite(COOLER, LOW);
      }
      else
      {
        (t <= 24.00);
        Serial.println("Cooler OFF");
        digitalWrite(COOLER, HIGH);
      }

      /*configuração da solenoide*/
      if (ht > 600) {
        Serial.println ("Aberta solenoide");
        digitalWrite (pinSolenoide, HIGH);
      } else {
        Serial.println ("Fechadao solenoide");
        digitalWrite (pinSolenoide, LOW);
      }
    }
  }
}


 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Boladoloko ,

 

É isso aí !

Eu sei que só se aprende quando nós mesmos ficamos em cima, tentando, tentando, tentando.... mesmo que você não tenha conseguido ainda, você aprendeu muita coisa e isso fixou em sua cabeça !

 

Muitas pessoas acham que eu sou muito duro quando respondo para fazerem por sí só antes de ajudarmos, mas ao longo de tanto tempo sabemos que esse é o melhor jeito.

 

No seu caso, infelizmente não entendo nada de nada dessa linguagem, só sei Basic e Assembler... mas logo deve aparecer alguém que te ajude.

 

Sempre poste o programa, ainda não conseguimos comprar bola de cristal kkkkkk !

 

Paulo

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×