collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Dois leds  (Lida 4017 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.733
  • 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.733
  • 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.733
  • 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.248
  • David Teles
    • Site Pessoal
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  ;)
Engenharia Electrotécnica e Computadores (IST)
Analyst in a Big 4