olá peço ajuda a vcs pois preciso fazer um projeto que
? A intensidade das lâmpadas de LED devem ser controladas por apenas um
potenciômetro;
? As lâmpadas de LED devem poder assumir valores de intensidade diferentes entre
si.
? Para ajuste da intensidade de cada uma das lâmpadas de LED o circuito deverá
possuir dois botões, cada um representa o ajuste de uma das lâmpadas.
? Ao pressionar o botão que representa uma das lâmpadas de LED o ajuste de
intensidade poderá ser feito até que o outro botão seja pressionado.
fiz o codigo porem que quero que quando o botão for pressionado, seja possível ajustar a intensidade do led até que o outro botão seja pressionado, e ai o segundo led terá sua intensidade controlada.
no atual codigo é preciso ficar com o botão pressionado para alterar sua intensidade.
esté é o atual codigo peço a ajuda de vcs
const int potenciometro = A5;
int led1 = 10;
int led2 = 11;
int Bled1 = 6; //botão led 1
int Bled2 = 7; //botão led 2
int statuB1 = 0; //armazena estado do botão ligado ou desligado do botão1
int statuB2 = 0; // armazena estado do botão ligado ou desligado do botão 2
int potenciometro = analogRead(A5);
statuB1=digitalRead(Bled1);
statuB2=digitalRead(Bled2);
if (statuB1==1) {
analogWrite(led1,potenciometro/4);
}
if (statuB2==1) {
analogWrite(led2,potenciometro/4);
Isso parece trabalho de escola, ou estou errado? rs
você pode fazer isso de duas formas, guardando o estado anterior e usar o loop http://arduino.cc/en/Tutorial/ButtonStateChange
ou usando interrupts http://arduino.cc/en/Reference/AttachInterrupt
Dentro do método da interrupção você verifica a variável statuB1 e statuB2 e altera quando ocorre o evento change, pois no loop só funcionará se o botão estiver pressionado enquanto você ajusta o potenciômetro mesmo.
Podes sempre tentar usar um "Switch" para o código ficar mais bonito e persetivel.
Assim por alto deve ser algo assim.Nao testei o codigo pois nao tenho o meu arduino proximo.
const int potenciometro = A5;
int led1 = 10;
int led2 = 11;
int Bled1 = 6; //botão led 1
int Bled2 = 7; //botão led 2
uint8_t botaoSelecionadoActualmente;
void setup (){
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(Bled1, INPUT);
pinMode(Bled2, INPUT);
digitalWrite(Bled1,0);//Seta os pull-downs internos
digitalWrite(Bled2,0);//Seta os pull-downs internos
}
void loop()
{
Serial.println(devolveBotaoPressionado());
processaPWMLeds(devolveBotaoPressionado());
}
//Tens de prever o debounge dos botoes na mesma
uint8_t devolveBotaoPressionado()
{
if(digitalRead(Bled1) == HIGH){botaoSelecionadoActualmente = 1; return botaoSelecionadoActualmente;}
if(digitalRead(Bled2) == HIGH){botaoSelecionadoActualmente = 2; return botaoSelecionadoActualmente;}
}
void processaPWMLeds(uint8_t botao)
{
int valordoADC;
switch (botao) {
case 1:
valordoADC = analogRead(A5);
valordoADC = map(valordoADC, 0, 1023, 0, 255);
analogWrite(led1, valordoADC);
break;
case 2:
valordoADC = analogRead(A5);
valordoADC = map(valordoADC, 0, 1023, 0, 255);
analogWrite(led2, valordoADC);
break;
default:
Serial.print("Nao detectei nada nos botoes");
}
}
Sim a tua sugestao fica com o codigo mais legivel, poupa se uns bytes, uns ciclos de codigo e é mais eficaz.
Olhando bem nem sei pk é que coloquei assim