collapse

* Links de Robótica

* Posts Recentes

Alfândega / Taxas Alfandegárias / Portes por TigPT
[Hoje às 10:25]


Ontem pequei... por Hugu
[Ontem às 21:55]


Wamp Server por TigPT
[Ontem às 18:51]


Tipo de conectores são ou onde arranjá-los? por Hugu
[28 de Setembro de 2016, 00:34]


Carro telecomandado atraves do PC por artur36
[27 de Setembro de 2016, 20:10]


Escolher Multimetro por filjoa
[27 de Setembro de 2016, 14:46]


Qual a melhor técnica? por dropes
[27 de Setembro de 2016, 14:30]


TV Avariou - Sanyo por almamater
[26 de Setembro de 2016, 13:54]


Ligar telefone fixo a arduino por helderjsd
[26 de Setembro de 2016, 11:07]


Procuro cristal de 30.875 Mhz? por Hugu
[25 de Setembro de 2016, 17:20]

Autor Tópico: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....  (Lida 2161 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
[AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« em: 21 de Dezembro de 2011, 17:29 »
Olá, criei um codigo pro meu arduino mas não quer funcionar corretamente:
Código: [Seleccione]
/**
 * Controle Industrial de Reles
 *
 * @author  Luis Henrique Justin
 * @website [url=http://www.j1host.com.br]www.j1host.com.br[/url]
 */
 
/**
 * Define Pinos Digitais a serem usados para a placa
 */
 
 int a = 2;
 int b = 3;
 int c = 4;
 int d = 5;
 int e = 6;
 int f = 7;
 int g = 8;
 int h = 9;
 int i = 10;
 int j = 11;
 int ledPin = 13;
 char Leitura=0;
 
 void setup(){
   Serial.begin(9600);
   pinMode(ledPin, OUTPUT);
 }
 
void loop()
{
  if (Serial.available() > 0) {
    Leitura = Serial.read();
    }
    if (Leitura == '1'){
      digitalWrite(ledPin, HIGH);
    }
    else if (Leitura == '2'){
      digitalWrite(ledPin, LOW);
    }
}


mas eu fiz um teste para ver se não entrava em conflito mas entrou se eu coloco 12 via serial ele liga e desliga o Led, por que a ideia é fazer 10 RELES ligarem mas se eu digitar 12 Liga um rele dai tambem vai ligar e desligar outro entende, minha vontade era usar letras Ex: "A" = Liga Rele 1 e "a" = e a minisculo desliga o rele como posso fazer isso ?
« Última modificação: 21 de Dezembro de 2011, 17:39 por TigPT »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.132
    • Tiago Rodrigues
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #1 em: 21 de Dezembro de 2011, 17:39 »
Talvez pretendas algo como:

Código: [Seleccione]
void loop()
{
  if (Serial.available() > 0) {
    Leitura = Serial.read();
    }
    if (Leitura == 'A'){
      digitalWrite(a, HIGH);
    }
    else if (Leitura == 'a'){
      digitalWrite(a, LOW);
    }
    else if (Leitura == 'B'){
      digitalWrite(b, HIGH);
    }
    else if (Leitura == 'b'){
      digitalWrite(b, LOW);
    }
   //(etc)
}

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #2 em: 21 de Dezembro de 2011, 17:44 »
Sim, mas se eu coloco assim eu ligo e digito "a" minusculo e ele não desliga o rele
Talvez pretendas algo como:

Código: [Seleccione]
void loop()
{
  if (Serial.available() > 0) {
    Leitura = Serial.read();
    }
    if (Leitura == 'A'){
      digitalWrite(a, HIGH);
    }
    else if (Leitura == 'a'){
      digitalWrite(a, LOW);
    }
    else if (Leitura == 'B'){
      digitalWrite(b, HIGH);
    }
    else if (Leitura == 'b'){
      digitalWrite(b, LOW);
    }
   //(etc)
}

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.132
    • Tiago Rodrigues
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #3 em: 21 de Dezembro de 2011, 17:51 »
Experimenta primeiro com um led e por exemplo com o pin 13, para ver se com 'A' liga e com 'a' desliga.

Depois o mesmo noutro pin, exemplo no pin 3 com 'B' e 'b' (com um led).

Se o led estiver a ligar e desligar bem então é do resto do circuito do relê.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #4 em: 21 de Dezembro de 2011, 17:59 »
Sim descobri o que era as variaveis la encima tavam entrando em conflito com as letras, locura mas é, e tem algum jeito de eu fazer o arduino toda vez que receber um codigo 123 suponhamos ele enviar uma menssagem Dizendo A=1, B=0, etc para saber que reles estão ligados

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.132
    • Tiago Rodrigues
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #5 em: 21 de Dezembro de 2011, 18:16 »
Sim, tudo isso pode ser feito, mas para tal tens que fazer variáveis de estado para gravar em que estado deixaste cada pin quando os afectas para depois poderes devolver o valor do pin.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #6 em: 21 de Dezembro de 2011, 19:22 »
Sim, tudo isso pode ser feito, mas para tal tens que fazer variáveis de estado para gravar em que estado deixaste cada pin quando os afectas para depois poderes devolver o valor do pin.

sim, entendi vc quer que eu crie uma variavel pra cada rele vamos dizer, e depois coloque no codigo desse jeito :

Código: [Seleccione]
void loop()
{
  if (Serial.available() > 0) {
    Leitura = Serial.read();
    }
    if (Leitura == 'A'){
      Status1 = digitalWrite(a, HIGH);
    }
    else if (Leitura == 'a'){
      Status1 = digitalWrite(a, LOW);
    }
    else if (Leitura == 'B'){
      Status2 = digitalWrite(b, HIGH);
    }
    else if (Leitura == 'b'){
      Status2 = digitalWrite(b, LOW);
    }
   //(etc)
}

isso que vc quiz dizer ?
 

Offline zordlyon

  • Mini Robot
  • *
  • Mensagens: 1.661
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #7 em: 21 de Dezembro de 2011, 19:47 »
Em vez de ter uma variavel para cada relé use um Array ou Vector...

 ;)

Cumprimentos,
André Carvalho.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #8 em: 21 de Dezembro de 2011, 20:08 »
Em vez de ter uma variavel para cada relé use um Array ou Vector...

 ;)

Cumprimentos,
André Carvalho.

Prefiro usar varias variaveis se não eu me enrrolo usando array, e eu teria que usar o Serial.println("Oi"); tambem, mas como uso ele sem ele repetir um milhao de vezes ?

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #9 em: 21 de Dezembro de 2011, 20:40 »
tentei usar o codigo desse jeito e ele da erro na hora de compilar:

Código: [Seleccione]
 
if (Serial.available() > 0) {
    Leitura = Serial.read();
    }
    if (Leitura == 'A'){
      Status1 = digitalWrite(a1, HIGH);
    }
    else if (Leitura == 'a'){
      Status1 = digitalWrite(a1, LOW);
    }
    if (Leitura == 'B'){
      Status2 = digitalWrite(b1, HIGH);
    }
    else if (Leitura == 'b'){
      Status2 = digitalWrite(b1, LOW);
    }

Status1 é  variavel que garda se o rele ta 1 ou 0 mas ele da erro na hora de compilar

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.948
  • Helpdesk do sitio
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #10 em: 21 de Dezembro de 2011, 21:50 »
Que erro é que dá?
E outra coisa, como é que o Status guarda alguma coisa se estás a usar Writes e não reads?
E tendo em conta que a unica coisa que altera o estado dos relés é o próprio programa fazer reads a pinos que já escreveste é contra produtivo.
Avr fanboy

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #11 em: 21 de Dezembro de 2011, 22:34 »
Que erro é que dá?
E outra coisa, como é que o Status guarda alguma coisa se estás a usar Writes e não reads?
E tendo em conta que a unica coisa que altera o estado dos relés é o próprio programa fazer reads a pinos que já escreveste é contra produtivo.

eu tento fazer de outra forma mas o que me aparece é geramente A ou o no console:

Código: [Seleccione]
/**
 * Controle Industrial de Reles
 *
 * @author  Luis Henrique Justin
 * @website [url=http://www.j1host.com.br]www.j1host.com.br[/url]
 */
 
/**
 * Define Pinos Digitais a serem usados para a placa
 */
 
 int a1 = 2;
 int b1 = 3;
 int c1 = 4;
 int d1 = 5;
 int e1 = 6;
 int f1 = 7;
 int g1 = 8;
 int h1 = 9;
 int i1 = 10;
 int j1 = 11;
 int ledPin = 13;
 
 /**
  * Variaveis tipo Char
  */
 
 char Leitura=0; //Char que faz a leitura da Porta Serial
 
/**
* Grupo de Variaveis que indica o Status do rele
*/
 
 char Status[] = {0,0,0,0,0,0,0,0,0,0};
 
  /**
  * Faz configura??o do Microcontrolador
  */
 
 void setup(){
   Serial.begin(9600);
   //pinMode(ledPin, OUTPUT);
 }

  /**
  * Codigo do Sistema de reles
  */
 
void loop()
{
    if (Serial.available() > 0) {
    Leitura = Serial.read();
    }
    if (Leitura == 'A'){
      digitalWrite(a1, HIGH);
      Status[0] = 'A Ativo';
    }
    else if (Leitura == 'a'){
      digitalWrite(a1, LOW);
      Status[0] = 'A Desativado';
    }
    if (Leitura == 'B'){
      digitalWrite(b1, HIGH);
    }
    else if (Leitura == 'b'){
      digitalWrite(b1, LOW);
    }
    if (Leitura == 'C'){
      digitalWrite(c1, HIGH);
    }
    else if (Leitura == 'c'){
      digitalWrite(c1, LOW);
    }
    if (Leitura == 'D'){
      digitalWrite(d1, HIGH);
    }
    else if (Leitura == 'd'){
      digitalWrite(d1, LOW);
    }
    if (Leitura == 'E'){
      digitalWrite(e1, HIGH);
    }
    else if (Leitura == 'e'){
      digitalWrite(e1, LOW);
    }
    if (Leitura == 'F'){
      digitalWrite(f1, HIGH);
    }
    else if (Leitura == 'f'){
      digitalWrite(f1, LOW);
    }
    if (Leitura == 'G'){
      digitalWrite(g1, HIGH);
    }
    else if (Leitura == 'g'){
      digitalWrite(g1, LOW);
    }
    if (Leitura == 'H'){
      digitalWrite(h1, HIGH);
    }
    else if (Leitura == 'h'){
      digitalWrite(h1, LOW);
    }
    if (Leitura == 'I'){
      digitalWrite(i1, HIGH);
    }
    else if (Leitura == 'i'){
      digitalWrite(i1, LOW);
    }
    if (Leitura == 'J'){
      digitalWrite(j1, HIGH);
    }
    else if (Leitura == 'j'){
      digitalWrite(j1, LOW);
    }
    if (Leitura == 'S'){
      statusExibir();
    }   
}

int statusExibir(){
  Serial.print(Status);
  delay(1000);
}



Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 8.948
  • Helpdesk do sitio
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #12 em: 21 de Dezembro de 2011, 22:41 »
Esta linha:
Status[0] = 'A Ativo';
Está a fazer coisas épicas e nem acredito que isso compile.
Um caracter com ' ' á volta dele é lido/interpretado como um char e só pode ser um caracter dentro das ' ', mas tu tens texto e texto é com " ", e depois estás a meter vários caracteres na posição 0 de um array de char's ou seja vários caracters no sitio de um.
Avr fanboy

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 128
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #13 em: 21 de Dezembro de 2011, 22:54 »
Esta linha:
Status[0] = 'A Ativo';
Está a fazer coisas épicas e nem acredito que isso compile.
Um caracter com ' ' á volta dele é lido/interpretado como um char e só pode ser um caracter dentro das ' ', mas tu tens texto e texto é com " ", e depois estás a meter vários caracteres na posição 0 de um array de char's ou seja vários caracters no sitio de um.


fiz uma solução simples e rapida:

Código: [Seleccione]
/**
 * Controle Industrial de Reles
 *
 * @author  Luis Henrique Justin
 * @website [url=http://www.j1host.com.br]www.j1host.com.br[/url]
 */
 
/**
 * Define Pinos Digitais a serem usados para a placa
 */
 
 int a1 = 2;
 int b1 = 3;
 int c1 = 4;
 int d1 = 5;
 int e1 = 6;
 int f1 = 7;
 int g1 = 8;
 int h1 = 9;
 int i1 = 10;
 int j1 = 11;
 int ledPin = 13;
 
 /**
  * Variaveis tipo Char
  */
 
 char Leitura=0; //Char que faz a leitura da Porta Serial
 
/**
* Grupo de Variaveis que indica o Status do rele
*/
 
 char Status[] = {0,0,0,0,0,0,0,0,0,0};
 
  /**
  * Faz configura??o do Microcontrolador
  */
 
 void setup(){
   Serial.begin(9600);
   //pinMode(ledPin, OUTPUT);
 }

  /**
  * Codigo do Sistema de reles
  */
 
void loop()
{
    if (Serial.available() > 0) {
    Leitura = Serial.read();
    }
    if (Leitura == 'A'){
      digitalWrite(a1, HIGH);
      Status[0] = '1';
    }
    else if (Leitura == 'a'){
      digitalWrite(a1, LOW);
      Status[0] = '0';
    }
    if (Leitura == 'B'){
      digitalWrite(b1, HIGH);
      Status[1] = '1';
    }
    else if (Leitura == 'b'){
      digitalWrite(b1, LOW);
      Status[1] = '0';
    }
    if (Leitura == 'C'){
      digitalWrite(c1, HIGH);
      Status[2] = '1';
    }
    else if (Leitura == 'c'){
      digitalWrite(c1, LOW);
      Status[2] = '0';
    }
    if (Leitura == 'D'){
      digitalWrite(d1, HIGH);
      Status[3] = '1';
    }
    else if (Leitura == 'd'){
      digitalWrite(d1, LOW);
      Status[3] = '0';
    }
    if (Leitura == 'E'){
      digitalWrite(e1, HIGH);
      Status[4] = '1';
    }
    else if (Leitura == 'e'){
      digitalWrite(e1, LOW);
      Status[4] = '0';
    }
    if (Leitura == 'F'){
      digitalWrite(f1, HIGH);
      Status[5] = '1';
    }
    else if (Leitura == 'f'){
      digitalWrite(f1, LOW);
      Status[5] = '0';
    }
    if (Leitura == 'G'){
      digitalWrite(g1, HIGH);
      Status[6] = '1';
    }
    else if (Leitura == 'g'){
      digitalWrite(g1, LOW);
      Status[6] = '0';
    }
    if (Leitura == 'H'){
      digitalWrite(h1, HIGH);
      Status[7] = '1';
    }
    else if (Leitura == 'h'){
      digitalWrite(h1, LOW);
      Status[7] = '0';
    }
    if (Leitura == 'I'){
      digitalWrite(i1, HIGH);
      Status[8] = '1';
    }
    else if (Leitura == 'i'){
      digitalWrite(i1, LOW);
      Status[8] = '0';
    }
    if (Leitura == 'J'){
      digitalWrite(j1, HIGH);
      Status[9] = '1';
    }
    else if (Leitura == 'j'){
      digitalWrite(j1, LOW);
      Status[9] = '0';
    }
    if (Leitura == 'S'){
      statusExibir();
    }   
}

int statusExibir()
{
  Serial.print(Status[0]);
  Serial.print(",");
  Serial.print(Status[1]);
  Serial.print(",");
  Serial.print(Status[2]);
  Serial.print(",");
  Serial.print(Status[3]);
  Serial.print(",");
  Serial.print(Status[4]);
  Serial.print(",");
  Serial.print(Status[5]);
  Serial.print(",");
  Serial.print(Status[6]);
  Serial.print(",");
  Serial.print(Status[7]);
  Serial.print(",");
  Serial.print(Status[8]);
  Serial.print(",");
  Serial.print(Status[9]);
 
  delay(1000);
}

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.132
    • Tiago Rodrigues
Re: [AJUDA] Olá, criei um codigo pro meu arduino mas não quer....
« Responder #14 em: 22 de Dezembro de 2011, 10:10 »
Boa, a ideia é essa, compreender e ir aprendendo a estruturar e implementar.