collapse

* Links de Robótica

* Posts Recentes

Medir Agua que está no Poço por jm_araujo
[Hoje às 00:36]


URGENTE - display de 7 segmentos com backpack por helderjsd
[Ontem às 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Palavras Cruzadas por Njay
[19 de Setembro de 2017, 02:24]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


Apresentação por TigPT
[17 de Setembro de 2017, 07:31]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]


Preparar bancada de testes por jm_araujo
[14 de Setembro de 2017, 10:24]

Autor Tópico: Dois leds  (Lida 1668 vezes)

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

Offline kerwac

  • Mini Robot
  • *
  • Mensagens: 101
Dois leds
« em: 29 de Novembro de 2014, 18:43 »
Estou a fazer um programa em java em que tenho que acender um led verde ou led vermelho. Ao clicar  num programa no botão verde ou vermelho o led acende.
Não consigo fazer o código para os dois leds. Para um já consegui fazer, alguém me ajuda a finalizar o código para os dois?
Obrigado


Para um led:

int ledPin = 4; //atribui o pino 4 a variável ledPin

int dado; //variável que receberá os dados da porta serial

void setup(){
  Serial.begin(9600);//frequência da porta serial
  pinMode(ledPin,OUTPUT); //define o pino o ledPin como saída
}

void loop(){
  if(Serial.available() > 0){ //verifica se existe comunicação com a porta serial
      dado = Serial.read();//lê os dados da porta serial
      switch(dado){
        case 1:
           digitalWrite(ledPin,HIGH); //liga o pino ledPin
        break;
        case 2:
           digitalWrite(ledPin,LOW); //desliga o pino ledPin
         break;
    }
  }
}

 
Podemos não voltar.Mas vamos a todas.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.390
  • Helpdesk do sitio
Re: Dois leds
« Responder #1 em: 29 de Novembro de 2014, 19:50 »
É arduino, logo é C++, e não Java..

Depois, quando escreves 1 num terminal o que é enviado é a representação do caracter 1 em ASCII, que no caso do caractér 1 é o valor 0x31 ( ou decimal 49).
Se queres usar case 1 e case 2 tens de subtrair 48 ao valor recebido, ou simplesmente assim subtraindo o valor do caracter ascii 0 para ficares com uma gama de valores de 0 a 9 e não de 48 a 57.

Código: [Seleccione]
dado = Serial.read() - '0';//lê os dados da porta serial
Avr fanboy

Offline kerwac

  • Mini Robot
  • *
  • Mensagens: 101
Re: Dois leds
« Responder #2 em: 29 de Novembro de 2014, 22:06 »
Peço desculpa se não me fiz entender...
O programa que já fiz está feito em java e está a comunicar com o arduino.
O código que eu fiz para o arduino funciona com um led só. Neste caso eu queria ter 2 leds e no programa em java ter 2 botões independentes para ligar cada um deles. Para um led já funciona.
Mas não estou a conseguir fazer o código para os dois leds em c++, mas em java já tenho o código feito .
Podemos não voltar.Mas vamos a todas.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.390
  • Helpdesk do sitio
Re: Dois leds
« Responder #3 em: 29 de Novembro de 2014, 22:21 »
Não entendo como é que pode haver duvidas, é só replicar o código que já tens.
Se sabes usar um led, tambem sabes usar dois, declaras mais uma variavel para o pino do outro led e usas mais dois cases.
Avr fanboy

Offline kerwac

  • Mini Robot
  • *
  • Mensagens: 101
Re: Dois leds
« Responder #4 em: 29 de Novembro de 2014, 22:23 »
O senso..... pois eu tb imaginei ser fácil... consegues dar me uma ajuda?

int ledPin = 4; //atribui o pino 4 a variável ledPin
int ledPin = 3;
int dado; //variável que receberá os dados da porta serial

void setup(){
  Serial.begin(9600);//frequência da porta serial
  pinMode(ledPin,OUTPUT); //define o pino o ledPin como saída
}

void loop(){
  if(Serial.available() > 0){ //verifica se existe comunicação com a porta serial
      dado = Serial.read();//lê os dados da porta serial
      switch(dado){
        case 1:
           digitalWrite(ledPin4,HIGH); //liga o pino ledPin
        break;
        case 2:
           digitalWrite(ledPin4,LOW); //desliga o pino ledPin
         break;
         case 3:
           digitalWrite(ledPin3,HIGH); //liga o pino ledPin
        break;
        case 4:
           digitalWrite(ledPin3,LOW); //desliga o pino ledPin
        break;
    }
  }
}

Podemos não voltar.Mas vamos a todas.

Offline kerwac

  • Mini Robot
  • *
  • Mensagens: 101
Re: Dois leds
« Responder #5 em: 29 de Novembro de 2014, 22:26 »
É o que eu fiz mas dá erro.... dai o meu pedido de ajuda senso
Podemos não voltar.Mas vamos a todas.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.390
  • Helpdesk do sitio
Re: Dois leds
« Responder #6 em: 29 de Novembro de 2014, 22:28 »
Podias ser um bocadito mais explicito nos teus posts...
Dá erro, mas está nublado e a bola de cristal tambem dá erro.

Mas que erro é que dá?
Não compila?
Não funciona?
Aparecem unicórnios?

Mais conteudo, mais informação!
Avr fanboy

Offline kerwac

  • Mini Robot
  • *
  • Mensagens: 101
Re: Dois leds
« Responder #7 em: 29 de Novembro de 2014, 22:42 »
Senso já está. Penso que assim está correcto certo?
int ledPin4 = 4; //atribui o pino 4 a variável ledPin
int ledPin3 = 3;
int dado; //variável que receberá os dados da porta serial

void setup(){
  Serial.begin(9600);//frequência da porta serial
  pinMode(ledPin4,OUTPUT); //define o pino o ledPin como saída
  pinMode(ledPin3,OUTPUT);
}


void loop(){
  if(Serial.available() > 0){ //verifica se existe comunicação com a porta serial
      dado = Serial.read();//lê os dados da porta serial
      switch(dado){
        case 1:
           digitalWrite(ledPin4,HIGH); //liga o pino ledPin
        break;
        case 2:
           digitalWrite(ledPin4,LOW); //desliga o pino ledPin
         break;
         case 3:
           digitalWrite(ledPin3,HIGH); //liga o pino ledPin
        break;
        case 4:
           digitalWrite(ledPin3,LOW); //desliga o pino ledPin
        break;
    }
  }
}


Obrigado
Podemos não voltar.Mas vamos a todas.

Offline dvdt

  • Mini Robot
  • *
  • Mensagens: 1.234
  • David_@@@_Teles
Re: Dois leds
« Responder #8 em: 30 de Novembro de 2014, 01:43 »
Pronto isto nao vai servir de nada mas como deste conta se declares duas variaveis com o mesmo nome e lhes deres valores diferentes dá asneira bem como se tens duas saidas tens que declarar dois outputs  ;)
David Teles