Estou tentando montar um projeto, mas estou com dificuldade. O projeto é o seguinte:
Eu tenho que acender 5 leds com um botão, cada vez que eu aperto o botão um led se acende e o outro se apaga. Estou com dificuldade de desenvolver o código no arduino.
Tags:
Boa tarde, fiz esse projeto alguns meses atras , usava um botao pra selecionar e outro pra confirmar , refiz a programação pra ficar como seu projeto.
Programção:
#define Sel1 6
#define led1 8
#define led2 9
#define led3 10
#define led4 11
char Array[20];
unsigned char Contagem;
boolean flag,flagBotao;
void setup()
{
Serial.begin(9600);
vw_setup(2000); // Bits per sec
pinMode(Sel1, INPUT_PULLUP);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
Serial.println("selecione o led");
{
if(digitalRead(Sel1)==0&&flagBotao==0) //se a chave sel1 for pressionada
{
flagBotao=1;
//while(digitalRead(Sel1)==0); //enquanto Sel1 estiver pressiona...
flag=0;
Contagem=Contagem+1; //Incrementa Contagem
if(Contagem==5)Contagem=0;
Serial.print("Contagem = ");
Serial.println(Contagem);
delay(500);
}
else if(digitalRead(Sel1)==1)flagBotao=0;
if(Contagem==1&&flag==0){
flag=1;
digitalWrite(led1, HIGH);
digitalWrite(led4, LOW);
}
else if(Contagem==2&&flag==0){
flag=1;
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
}
else if(Contagem==3&&flag==0){
flag=1;
digitalWrite(led3, HIGH);
digitalWrite(led2, LOW);
}
else if(Contagem==4&&flag==0){
flag=1;
digitalWrite(led4, HIGH);
digitalWrite(led3, LOW);
}
}
Serial.println("OK Pressionado");
Serial.print("led escolhido =");
}
byte count = 1;
void loop()
{
;
}
introduzi seu programa porem nao funcionou, mas valeu msm assim
Olá, boa tarde!
Você pode criar uma variável INT e atribuir um valor para cada LED.
Veja um exemplo básico abaixo:
Este trecho de código eu fiz em um PIC, mas você pode adaptar a sintaxe para o Arduino...
...
...
int opc = 0;
...
while (opc != 0) //Continua enquanto a variável "opc" for diferente de "0"
{
if (!input(pin_b0)) opc++; //Cada vez que pressionar o Botão do Pino B0, incrementa "1" na variável int
switch(opc)
{
case 1: //Caso opc == 1
output_high(pin_b1); //Acende Led do Pino B1
delay_ms (1500); //Aguarda 1,5 segundos
output_low(pin_b1); //Apaga Led do Pino B1
break;
case 2: //Caso opc == 2
output_high(pin_b2); //Acende Led do Pino B2
delay_ms (1500); //Aguarda 1,5 segundos
output_low(pin_b2); //Apaga Led do Pino B2
break;
case 3: //Caso opc == 3
output_high(pin_b3); //Acende Led do Pino B3
delay_ms (1500); //Aguarda 1,5 segundos
output_low(pin_b3); //Apaga Led do Pino B3
break;
} //fim do case
...
...
}// fim do while
Obs.: Você também pode trocar o "switch/case" pelo "if..else.."
Obs. 2: Você também vai precisar acertar um dos "cases" pra voltar pra "1" a variável "opc" quando chegar em "5", senão, só vai passar uma vez pela rotina de acender os leds.
Não é um código pronto para sua aplicação, mas imagino que pode lhe servir de base para resolver sua questão.
Abraço e boa sorte!
Feliz Natal!
obrigado, valeu
vou adaptar aqui pra ver como fica
Boa noite! segue o codigo do projeto em anexo para teste.
Otimo, funcionou pra mim aqui, mas eu gostaria de aumentar para 16 leds (o que ate consigo) porem estou na dúvida de como colocar um contador de 2 digitos para contar cada vez que o botão é pressionado.
Oi F, bom dia.
Como a definição da variavel ledState é byte " byte ledState = 0; ", a contagem já permite ter
256 valores (2 digitos), mas se quiser pode escrever assim: unsigned int ledState = 0; e poderá ter
32.000 valores diferentes.(2 bytes)
ou seja 4 digitos.
Rui
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por