(Ajuda ) Projeto para Iluminação

Boa noite pessoal, sou iniciante em arduino e estou tentando criar um projeto para acender luzes com devidos pulsos no botão.

Exemplo
1 pulso - acender luz 1
2 pulsos - acender luz 2
3 pulsos - acender luz 3
4 pulsos - apagar todas as luzes

Estou com dificuldades em definir a contagem de pulsos no botão.

alguem para me ajudar ?? qualquer dica será bem vinda.

Att.

Hola

Puedes hacer un código usando los pines digitales de arduino, tanto para los pulsadores como para los LED.

En Youtube encuentras muchos ejemplos ya que ese es un circuito básico con el que todos empiezan.

Si quieres ir más allá puedes encender y apagar los LED con el teléfono por medio de un módulo Bluetooth.

Que tal, podrías usar Interrupciones en un pin de tu placa que lo soporte, con la función attachInterrupt(digitalPinToInterrupt(pin)), el link la página: attachInterrupt() - Arduino Reference

Sería hacer algo como:

int contador = 0;

void setup()
{
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);  //Pone los pines 11, 12, 13 como salidas
  pinMode(13, OUTPUT);

pinMode(2, INPUT_PULLUP);
                 //pin de interrupcion: 2 //funcion a ejecutar
  attachInterrupt(digitalPinToInterrupt(2), aumentarContador, CHANGE); // CHANGE: si el voltaje cambia en el pin 2, se activa la funcion
}

void loop()
{
  switch(contador)  //revisa los casos posibles 
  {
    case 1: // 1 pulso
      digitalWrite(13, LOW);
      digitalWrite(11, HIGH);   //se apaga el led anterior y se enciende el pin 10
    break;
    case 2: // 2 pulsos
      digitalWrite(11, LOW);    //se apaga el led anterior y se enciende el pin 11
      digitalWrite(12, HIGH);
    break;
    case 3:// 3 pulsos
      digitalWrite(12, LOW);    //se apaga el led anterior y se enciende el pin 13
      digitalWrite(13, HIGH);
    break;
    case 4:// 4 pulsos
      digitalWrite(13, LOW);
      digitalWrite(12, LOW);    //se apagan todos
      digitalWrite(11, LOW);    
    break;
    case 0: //si no se pulsa nada
    
    break;
  }

}

void aumentarContador()
{
  contador++;  //aumenta +1
  if(contador > 4)  //si supera 4 pulsos, se pone a 0
  { 
    contador = 0;
  }
}

debes poner el botón entre el pin 2 de Arduino y tierra o GND (0V)
Espero haberte ayudado.

Bom dia.

Explique melhor o que seria esse pulso.
Apertar o botão uma vez e vai mudando os processos é mais simples.
Basta ler o botão e incrementar uma variável toda vez que ler.
Agora se quiser por exemplo que se caso apertar 3 vezes em seguida ir no processo 3, deve fazer algo como se o tempo entre a ultima apertada e a atual for menor que 800 ms incrementar se o tempo for maior atribui 1 para a variável.
Algo nessas linhas.
Explique melhor e diga o quanto vc consegue programar sozinho e o quanto precisa de ajuda com o código.

Exemplos para te ajudar
unsigned long tempoUltimaLeituraBotaoProcesso = 0;

void lerBotaoProcesso(){
if (millis() - tempoUltimaLeituraBotaoProcesso >= 500){
if (digitalRead(botaoProcesso) == LOW) {
tempoUltimaLeituraBotaoProcesso = millis();
processo++;
if (processo > 5)
processo = 1;
acendeerLED(processo);
}
}
}

void acenderLed(int i) {
if (i == 0) {
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
if (i == 1) {
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led1, HIGH);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
if (i == 2) {
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
if (i == 3) {
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
}
if (i == 4) {
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led4, HIGH);
digitalWrite(led5, LOW);
}
if (i == 5) {
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, HIGH);
}
}