collapse

* Links de Robótica

* Posts Recentes

Sensores de distância e temperatura por metRo_
[Hoje às 12:24]


Ligar -VCC em LM741 directamente à massa por Tech_JA
[Hoje às 10:28]


Ligar 2 sensores na mesma porta de 5v por brunus
[26 de Maio de 2017, 01:16]


Dimensionar um 555 em monoestável (Temporizador) por SerraCabo
[26 de Maio de 2017, 00:29]


Muitas placas pequenas numa grande placa pcb - Ter ideia de preços por edeweld
[25 de Maio de 2017, 14:31]


Kit de condensadores que dá jeito ter por edeweld
[25 de Maio de 2017, 13:32]


Compras Aliexpress por dio123
[24 de Maio de 2017, 21:01]


É possivel construir automaticamente a pcb? - isis proteus por edeweld
[24 de Maio de 2017, 10:23]


BOMER (2017) por msr
[22 de Maio de 2017, 17:11]


Apagar E2PROM X28C64P-25 por LVirtual
[22 de Maio de 2017, 16:43]

Autor Tópico: 3 LED's  (Lida 1418 vezes)

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

Offline Skilgannon

  • Mini Robot
  • *
  • Mensagens: 37
3 LED's
« em: 02 de Fevereiro de 2010, 20:17 »
olá a todos,

Ainda me estou a acostumar com o arduino e quero levar as coisas devagar para aprender como deve ser.
Estava a tentar desenvolver código para que o arduino receba ordens via serial. O que ele tem que fazer é receber um numero, 1,2 ou 3, e acender o LED correspondente.
Liguei tres LED, aos pinos 13,12,11.
Pois bem o problema é que o switch para o case 1, funciona, mas para os outros dois cases não funciona. ( independentemente da ordem que eu os coloque o LED não liga).
Será que alguém consegue ver o meu erro?

Código: [Seleccione]
char sensorValue;
 void setup(){
    Serial.begin(9600);
 }
 
void loop(){
 
    if(Serial.available() > 0){
      sensorValue=Serial.read();
      Serial.println(sensorValue);
      sensorValue = sensorValue - '0';
      switch(sensorValue){
        case 1:
          Serial.print("LED 1\n");
          digitalWrite(13,HIGH);
          break;
        case 2:
          Serial.print("LED 2\n");
        digitalWrite(12,HIGH);
          break;
        case 3:
          Serial.print("LED 3\n");
          digitalWrite(11,HIGH);
          break;
        }
     }
}

edit:

problema resolvido.
tinha-me esquecido do
Código: [Seleccione]
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
não sabia que era preciso quando se estava a uzar outro pino que não o 13.
Obrigado =)
« Última modificação: 02 de Fevereiro de 2010, 20:40 por Skilgannon »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.725
Re: 3 LED's
« Responder #1 em: 02 de Fevereiro de 2010, 23:30 »
Código: [Seleccione]
void setup()                   
{
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
}

void loop()                   
{
  digitalWrite(13, HIGH);
  digitalWrite(12, HIGH); 
  digitalWrite(11, HIGH); 
  delay(1000);                 
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  digitalWrite(11, LOW);     
  delay(1000);
  digitalWrite(13, HIGH);
  delay(1000);
  digitalWrite(12, HIGH);
  delay(1000);
  digitalWrite(11, HIGH);
  delay(1000);
  digitalWrite(13, LOW);
  digitalWrite(12, LOW);
  digitalWrite(11, LOW);
  delay(1000);
}

Para vermos que tudo o resto está a funcionar corre este código, os led's 13,12 e 11 devem ligar durante 1 segundo, desligar todos durante 1segundo, e depois de 1 em 1 segundo ligar o 13, 12 e 11 e apagarem novamente para efectuar o mesmo ciclo.
Se isto funcionar assim diz.

Offline roggermg

  • Mini Robot
  • *
  • Mensagens: 1
Re: 3 LED's
« Responder #2 em: 18 de Agosto de 2012, 08:38 »
Comecei nesse mundo arduino agora e ainda estou tentando aprender o básico da programação.
Tenho uma dúvida: Usando esse projeto 3 LEDS, como eu adicionaria mais 1 led (por exemplo na porta10) com o efeito FADE e podendo alterar o delay desse Fade?

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 525
Re: 3 LED's
« Responder #3 em: 18 de Agosto de 2012, 12:35 »
Código: [Seleccione]
void ligarled(int pino, int intervalo) {
  for (int i=0;i<=255;i++) {
    analogWrite(pino,i);
    delay(intervalo);
  }
}

void desligarled(int pino, int intervalo) {
  for (int i=255;i>=0;i--) {
    analogWrite(pino,i);
    delay(intervalo);
  }
}
Experimenta, mas só dá nos pinos pwm. Experimenta intervalos até atingires o fade que queres.
« Última modificação: 18 de Agosto de 2012, 16:23 por rglove »