ARDUINO COM MÓDULO BLUETOOTH


pessoal o seguinte,

estou desenvolvendo um projeto de automação residencial via bluetooth, para isso estou utilizando o arduino uno com o módulo bluetooth e o celular.

quando realizo acionamentos dos leds pelo celular o programa logo responde, mas ao tentar girar um motor simulando o portão automático, o motor começa funcionar mas não obedece parada no sensor de fim de curso, e continua acionado sem deixar o programa fazer mais nada.

segue meu código:

int controlevelocidade = 3;//variável que irá controlar o motor pwm
int readbluetooth;//variável que irá receber o valor enviado celular para o bluetooth
int lamp1 = 7;
int lamp2 = 6;
int lamp3 = 5;
int lamp4 = 4;
int motor1 = 8;
int motor2 = 9;
int sensor1 = 10;
int sensor2 = 11;
int estado_motor1;
int estado_motor2;
int e;
int f;

boolean statelamp1 = false;
boolean statelamp2 = false;
boolean statelamp3 = false;
boolean statelamp4 = false;
void fechar (void);
void abrir  (void);
void setup() {
  serial.begin(9600);//inicia comunicação serial e velocidade de comunicação.
  pinmode(lamp1, output);
  pinmode(lamp2, output);
  pinmode(lamp3, output);
  pinmode(lamp4, output);
  pinmode(controlevelocidade, output);
  pinmode(motor1, output);
  pinmode(motor2, output);
  pinmode(sensor1, input);
  pinmode(sensor2, input);

}

void loop()
{

  int velocidade = 500;
  analogwrite(controlevelocidade, velocidade);
  estado_motor1 = digitalread(sensor1);
  estado_motor2 = digitalread(sensor2);

  if (serial.available() > 0) {                      //obtém o número de bytes disponíveis para leitura na porta serial
    readbluetooth = serial.read();                 //valor lido na serial será guardado na variável readbluetooth
    if (readbluetooth == 'a') {
      if (statelamp1) {
        digitalwrite(lamp1, low);
        statelamp1 = false;
      }
      else {
        digitalwrite(lamp1, high);
        statelamp1 = true;
      }
    }

    if (readbluetooth == 'b') {
      if (statelamp2) {
        digitalwrite(lamp2, low);
        statelamp2 = false;
      }
      else {
        digitalwrite(lamp2, high);
        statelamp2 = true;
      }
    }
    if (readbluetooth == 'c') {
      if (statelamp3) {
        digitalwrite(lamp3, low);
        statelamp3 = false;
      }
      else {
        digitalwrite(lamp3, high);
        statelamp3 = true;
      }
    }
    if (readbluetooth == 'd') {
      if (statelamp4) {
        digitalwrite(lamp4, low);
        statelamp4 = false;
      }
      else {
        digitalwrite(lamp4, high);
        statelamp4 = true;
      }
    }

    if (readbluetooth == 'e') {
      e = readbluetooth;

    }

    if (readbluetooth == 'f') {
      f = readbluetooth;

    }
  }


  if (e == 'e')
  {
    abrir();
  }

  if (f == 'f')
  {
    fechar();
  }

}


void abrir() {

  while (!estado_motor1 == high)
  {
    digitalwrite(motor1, low);
    digitalwrite(motor2, high);
  }
    digitalwrite(motor1, low);
    digitalwrite(motor2, low);
  }


void fechar() {

  while (!estado_motor2 == high)
  {
    digitalwrite(motor1, high);
    digitalwrite(motor2, low);
  }
    digitalwrite(motor1, low);
    digitalwrite(motor2, low);
  }







o teu problema é que colocas o teu código dentro dum while até que variável estado_motor mude. no entanto, não tens código nenhum para mudar o estado dessa variável...

já se fizesses algo como:

code: [select]

void abrir() {

  while (( estado_motor1 = digitalread(sensor1)) == low)
  {
    digitalwrite(motor1, low);
    digitalwrite(motor2, high);
  }
    digitalwrite(motor1, low);
    digitalwrite(motor2, low);
  }


void fechar() {

  while ((estado_motor2 = digitalread(sensor2)) == low)
  {
    digitalwrite(motor1, high);
    digitalwrite(motor2, low);
  }
    digitalwrite(motor1, low);
    digitalwrite(motor2, low);
  }


no entanto, eu acho que essa maneira de programar o que pretendes não é boa.

porque não chamar função abrir que apenas muda o estado das saídas e activa uma variável notificar que o motor está ligado e depois meteres uma condição que se o motor estiver activado e o fim de curso também, o motor pára.


Arduino Forum > International > Portugues > ARDUINO COM MÓDULO BLUETOOTH


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts