LusoRobótica - Robótica em Português
Robótica => Iniciantes => Tópico iniciado por: Skilgannon 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?
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
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 =)
-
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.
-
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?
-
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.