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);
}
}