Galera,

Estou desenvolvendo um projeto de uma "Roupa Candelabro" para o Teatro Popular de Ilhéus. Basicamente são um conjunto de leds vermelhos e amarelos que são acionados aleatoriamente pelas portas 12 e 12 do arduino e outro led (vermelho) que vai pulsar como um coração (pino 9). Os acionamentos são feitos por uma chave (para os leds piscantes) no pino 10 e um pot que regula a velocidade do pulsar do coração (A0). E um APP no android que simula os mesmos controles usando uma conexão bluetooth com o módulo HC-06. Fiz a montagem, testes etc.. usando uma placa arduino e funcionou tudo beleza. Fiz uma pequena placa para colocar o circuito e não funcionou. Passei a fazer alguns testes para tentar localizar o problema, colocando o circuito em uma protoboard mas continua não funcionando. Usei alimentação com pilha 9V e também testei com fonte externa. Só funciona com a placa do arduino, com a "protoino" não. O chip do atmega é o mesmo retirado do arduino, o protoino está funcionando, pois quando uso o controle dda chave e do pot funciona, só não recebe a informaç~so da serial pelo bluetooh.

Alguem tem alguma ideia do que pode ser?

segue fotos:Esta é a versão no protoboard

Exibições: 4491

Responder esta

Respostas a este tópico

coloca o codigo pra analisarmos questao de velocidade ou algum erro do sketch

Ai vai o código.

/*
 PROJETO: Medida por Medida - Roupa Candelabro
 PROGRAMADOR: Hermilo Cruz Menezes
 DATA: out 2014

*/

/* conexoes
IN  candelabro   = 10 (pino 16)
OUT candelabro   = 11 (amarelo)(pino 17)
                   12 (vermelo)(pino 18)
IN  coracao  =     A0 (pino 23)
OUT coracao =       9 (pino 15)

servo       =       6 (pino



*/

#include <Servo.h>

int pinCoracao     =  9;
int pinVelaVermelha= 11;
int pinVelaAmarela = 12;
int btCandelabro   = 10;
boolean candelabroBotao = false;
boolean candelabroBluetooth  = false;
int valor1 = 0;
int valor2 = 0;
int pulso = 0;
 
Servo myservo;  // create servo object to control a servo

void setup(){  
  pinMode(pinCoracao,OUTPUT);  
  pinMode(pinVelaVermelha,OUTPUT);  
  pinMode(pinVelaAmarela,OUTPUT);  
  pinMode(btCandelabro,INPUT);
  Serial.begin(9600);
  myservo.attach(6);  
}

void loop(){
  // testa se botao candelabro foi acionado
  if(digitalRead(btCandelabro)==1){
    candelabroBotao=true;
  }else{
    candelabroBotao=false;
  }
  // lê potenciometro do coracao
  int leitura = analogRead(0);
  pulso = map(leitura,0,1024,0,200);

 
 
  if(Serial.available()){
      int c;
      c = Serial.read();
      if ((c>='0') && (c<='9')) {
          valor1 = 10*valor1 + c - '0';
         // Serial.println(c);
      }else{
         if (c=='V'){
        //   Serial.print("Botao: ");
        //   Serial.println(valor1);
               if(valor1==1){
                 candelabroBluetooth=true;
               }else{
                 candelabroBluetooth=false;
               }
               valor1=0;
         }else if(c=='A'){
        //   Serial.print("dimmer: ");
        //+  Serial.println(valor1);
          valor2 = constrain(valor1,0,200);
          valor1 = 0;
         
       }
      }
  }
 
   // Serial.print(pulso);
   // Serial.print("  ");
   // Serial.println(valor2);

  // testa se coracao bate
  if(pulso > 50){
        pulsar(pulso);
  }else if(valor2>50){
        pulsar(valor2);
  }else{
     digitalWrite(pinCoracao, LOW);
     if(candelabroBotao==true || candelabroBluetooth==true){
         velas();
     }
  }
  // teste se acende as velas

}

void velas(){
        int chama = random(2);
        digitalWrite(pinVelaAmarela, chama);
      //  Serial.println(tempo);
        delay(20);
        chama = random(2);
        digitalWrite(pinVelaVermelha, chama);
      //  Serial.println(tempo);
        delay(20);
        digitalWrite(pinVelaAmarela, LOW);
        digitalWrite(pinVelaVermelha, LOW);
}  


void pulsar(int _pulso){
 
 
 
  _pulso =300 -  _pulso;
//   Serial.println(_pulso);  
  digitalWrite (pinCoracao, HIGH);
  myservo.write(180);
  delay(_pulso);
 
  digitalWrite(pinCoracao, LOW);
  myservo.write(90);
  delay(_pulso);

  digitalWrite (pinCoracao, HIGH);
  myservo.write(180);
  delay(_pulso);
  digitalWrite(pinCoracao, LOW);
   myservo.write(90);

  delay(_pulso * 3);
}

testei seu sketch aqui funcionou vc verificou se esta chegando as tensoes corretas no seu atmega? ja tentou rodar um blink nele? esta um pouco confuso esses jumpers que vc fez pra interligar as linhas positivo e negativo

O atmega está funcionando bem, pois na primeira parte do loop eu testo a chave e o pot:

// testa se botao candelabro foi acionado
  if(digitalRead(btCandelabro)==1){
    candelabroBotao=true;
  }else{
    candelabroBotao=false;
  }
  // lê potenciometro do coracao
  int leitura = analogRead(0);
  pulso = map(leitura,0,1024,0,200);

Isto funciona independente do sinal do bluetooth. Ou um ou outro:

     if(candelabroBotao==true || candelabroBluetooth==true){
         velas();  // funcao que aciona os leds das "velas"
     }

e esta tudo funcionando ok.

Mas como eu disse o chip só recebe a informação do bluetooth se estiver ligado na placa do arduino. E funciona legal. No app tem um botão liga/desliga, se ele ou o chave física estiver ligado, os leds piscam.

MAS quando migro o circuito para a protoboard só funciona o modo físico (a chave e o pot). Ele não lê o no RX os comandos do android (via bluetooth)

Com licença, mas já aproveitando o post, estou com o mesmo problema. Estou usando o arduino para comandar um módulo rele de 2 canais através de um App com o há 06, e funcionou normalmente na placa, porém quando vou testar na protoboard o a há 06 parece não se comunicar com o arduino através dos pinos rx tx, liguei corretamente o pino tx do há 06 ao pino 2 do atmega e o rx ao 3 do atmega, e ambos estão con alimentação correte . (Obs: já testei o efeito blink e funcionou normalmente na protoboard, porém o problema está sendo o mesmo que o do Herlio, caso alguém possa ajudar ficarei muito grato valeu, fiquem com Deus.
Hc 06 (corretor :xx)

Está inserindo o RX no pino correto do Atmega ? 

Sim, fiz as ligações corretas, o Atemega está funcionando normalmente, porem o modulo HC 06 so recebe os comandos quando o Atmega está conectado na placa.

vc ligou o rx de no tx de outro e vice-versa?

José, eu fiz uma experiência aqui em casa e me parece que o Tx do Arduino liga no Rx do bluethoot e o Rx do Arduino no Tx do blue. É inverso não lembro. confirma aí.

Valeu

 

Opa, liguei o TX do modulo na entrada 2 do Atemega, que corresponde ao pino RX, e o RX do modulo na entrada 3 do Atemega que corresponde ao pino TX

Pergunta boba porém inteligente.kkkk

Já conferiu se o baud rate do modulo bluetooth está igual ao baud rate da serial do protuino?

Se seu HC-06 estiver configurado pra trabalhar a 115200 bps e a serial do protuino for programada pra trabalhar a 9600 bps var dar conflito mesmo.

Sugiro seguir esse tutorial, ligando apenas o seu ATmega ao modulo bluetooth para testar se as conexões do ATmega ao HC-06 estão corretas, depois refaça as ligações de acordo com seu projeto.

http://www.arduinoecia.com.br/2013/03/modulo-bluetooth-jy-mcu-confi...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço