Pages: [1]   Go Down
Author Topic: Meu projeto nao esta dando certo, é simples  (Read 1027 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boa noite, vou mandar o codigo do meu projeto, nao esta funcionando, a ideia é, primeiro verificar se presica de mais luz e avisar caso precise (no led), além de um buzzer tocar, após isso, exibir um menu no lcd, e calculando o tempo que eu fiquei apertando o botao, eu devo ou nao acender um outro led nao usado ainda

Quote
#include<LiquidCrystal.h>
const int BUTTON=1;
const int LEDL=8;
const int LEDH=13;
const int SENSOR=0;
const int BUZZER=7;
int statelight,statebutton=0,option,cont=0,untilhere,time;
LiquidCrystal lcd(12,11,5,4,3,2);
void turnBuzzer()
{
  digitalWrite(BUZZER,HIGH);
  delay(800);
  digitalWrite(BUZZER,LOW);
}
void showMenu()
{
  lcd.setCursor(0,0);
  lcd.print("1s para acender");
  lcd.setCursor(0,1);
  lcd.print("5s para apagar");
}
void modifyLights()
{
  statelight=analogRead(SENSOR);
  if(statelight<=250)
  {
    turnBuzzer();
    digitalWrite(LEDH,HIGH);
    lcd.setCursor(0,0);
    lcd.print("Luz de emergencia ativado");
    lcd.setCursor(0,1);
    lcd.print("Problema de luz resolvido");
    delay(2000);
    showMenu();
  }
  else{
    digitalWrite(LEDH,LOW);}
}
int readButton()
{
  while(statebutton!=HIGH)
  {
  modifyLights();
  statebutton=digitalRead(BUTTON);
  if(statebutton==HIGH)
  {
    untilhere=millis();
    while(statebutton==HIGH)
    {
       statebutton=digitalRead(BUTTON);
    }
    time=millis()-untilhere;
  }
  }
  if(time>=800 && time <=1200)
  {
    return 1;}
  else if(time>=4000 && time<=6000){
    return 2;}
  else if(time>8000){
    return 3;}
}
void setup ()
{
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("INICIO PROJETO VENTO DE CORES ");
  delay(5000);
  pinMode(BUTTON,INPUT);
  pinMode(LEDL,OUTPUT);
  pinMode(LEDH,OUTPUT);
  pinMode(BUZZER,OUTPUT);

void loop()
{
  showMenu();
  option=readButton();
  if(option==1)
  {
     turnBuzzer();
     lcd.setCursor(0,0);
     lcd.print("Led aceso");
     digitalWrite(LEDL,HIGH);
  }
  else if(option==2)
  {
     turnBuzzer();
     lcd.setCursor(0,0);
     lcd.print("Led apagado");
     digitalWrite(LEDL,LOW);
  }
  else if(option==3)
  {
     turnBuzzer();
     lcd.setCursor(0,0);
     lcd.print("xxx"); // aqui é só uma brincadeira que eu fiz, ignorem a opção 3
  }
}
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sem dizeres exactamente o que não está a funcionar é difícil de conseguir resolver o teu problema... não achas?

Explica bem o que não está a acontecer, ou está a acontecer erradamente para podermos ajudar melhor.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Então... o led não acende quando eu apago a luz...( e a função que acende ou nao o led esta em um loop até o botao ser pressionado) e o buzzer também nao toca... e quando mostra o menu no lcd e eu pressiono o botão, nada acontece
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3216
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Acho que tens de rever a função readButton...

Enquanto o stateButton for igual a zero, tu chamas a função modifyLights... essa função tem um delay lá dentro que vai deitar por terra toda a lógica que pretendes implementar com a temporização. Tu carregas no botão, mas o chip ainda está a processar o delay, deixando o sistema muito pouco funcional ou só funcionando de quando em vez quando tiveres a sorte de carregar no botão no momento certo. :\

Também estás a prender o programa em muitos sítios... o que nem sempre é bom, mas não me parece que esteja a ser o problema aqui.

Já pensaste em resolver isto com uma máquina de estados?

A tua variável time está definida como um int. O millis retorna unsigned long. Eu compreendo que não tencionas usar 66 segundos no programa... mas se alguém o decidir fazer estoura com o sistema. Muda a variável time para unsigned long para evitar também problemas com isso.

Coloca uns serial print para teres uma ideia do valor que sai do sensor de luz... talvez isso também não esteja a sair como pretendes.

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pois é, voce tinha razão quanto a readbutton... ja corrigi ja, FUNCIONOU!
Problema resolvido, brigadao
Logged

Pages: [1]   Go Up
Jump to: