Go Down

Topic: Ayuda con Switch Contador Case (Read 3926 times) previous topic - next topic

victor495

Hola necesito ayuda para aclarar un par de dudas que tengo en cuanto a un pequeño codigo que necesito incluir en un sketch.

Este es el asunto: Quiero agregar un Switch a mi circuito pero no logro idear como lograr el codigo.
Entonces..

Cuando presiono este switch me lleva a CASE 1 (led no hace nada y configuro unos parametros de envio midi)
Cuando vuelvo a presionar este switch me lleva a CASE 2 (led parpadea y cambio los parametros midi)
Cuando vuelvo a presionar este switch me lleva a CASE 3 (led fijo y vuelvo a cambiar parametros midi)
Cuando vuelvo a presionar que vuelva a CASE 1

Los parametros Midi los tengo claro pero como estructurar el contador de pulsaciones y en base a eso llevar a los CASE no lo tengo muy claro.

En cuanto a mi proyecto les cuento: He construido un Controlador midi, pero quiero agregar este switch para cambiar el comportamiendo de los 3pdt del proyecto.

chiva

Utiliza un contador que aumente 1 cada vez que pulsas el contador y si es mayor que 3 lo cargas con 1

Code: [Select]

int i = 1;
...
void pulsadorActivado(){
    i++
    if (i>3) i = 1;
    switch(i){
        case 1:
            bla;
            break;
        case 2:
            blabla;
            break;
    }
}

PepeChorva

O utilizando el módulo de 3 para que te de el valor del case deseado (0, 1 o 2)
Code: [Select]
int i = 0;
...
void pulsadorActivado(){
    i = i %3;
    switch(i){
        case 0:
            Configurar parámetros MIDI;
            i++;
            break;
        case 1:
            led parpadea y cambio los parametros midi;
            i++;
            break;
        case 2:
            led fijo y vuelvo a cambiar parametros midi;
            i++;
            break;
    }
}
---
Saludos,
José Chorva
www.pepechorva.com
@pepechorva on twitter

victor495

mmm podrian decirme que esta mal en este codigo, es solo una prueba pero no logra contar.
ayer pude hacer un contador con case pero creo que el codigo era muy extenso para tan basico funcionamiento asi que he seguido con los ejemplos que me dan y logre entender como funciona esa funcion, pero aun asi tengo este pequeño problema.

Code: [Select]

const int  buttonPin = 2;
const int ledPin = 13;
int i = 1;
int buttonState = 0;   

void setup() {
 
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);

}

void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) (Contador);
}

void Contador(){
  (i++);
  if (i>3) i = 1;
 
  switch(i){
   case 1:
   Serial.print("Caso 1");
   digitalWrite(13, HIGH);
   delay(500);
   digitalWrite(13, LOW);
   delay(500);
   break;
   
   case 2:
   Serial.print("Caso 2");
   digitalWrite(13, HIGH);
   delay(1000);
   digitalWrite(13, LOW);
   delay(1000);
   break;
   
   case 3:
   Serial.print("Caso 1");
   digitalWrite(13, HIGH);
   delay(250);
   digitalWrite(13, LOW);
   delay(250);
   digitalWrite(13, HIGH);
   delay(250);
   digitalWrite(13, LOW);
   delay(250);
   break;
   }}

chiva

if (buttonState == HIGH) (Contador());

_RuL_

Wola, quizas es una tonteria pero mita tambien lo de los rebotes en el pulsador.

Go Up