LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: kerwac em 29 de Novembro de 2014, 18:43

Título: Dois leds
Enviado por: kerwac 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;
    }
  }
}

 
Título: Re: Dois leds
Enviado por: senso 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
Título: Re: Dois leds
Enviado por: kerwac 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 .
Título: Re: Dois leds
Enviado por: senso 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.
Título: Re: Dois leds
Enviado por: kerwac 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;
    }
  }
}

Título: Re: Dois leds
Enviado por: kerwac em 29 de Novembro de 2014, 22:26
É o que eu fiz mas dá erro.... dai o meu pedido de ajuda senso
Título: Re: Dois leds
Enviado por: senso 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!
Título: Re: Dois leds
Enviado por: kerwac 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
Título: Re: Dois leds
Enviado por: dvdt 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  ;)