Ir ao conteúdo

Posts recomendados

Postado

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);
      }
    }
  }
}

 

Postado

@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
Postado

@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

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!