Paso 3: Código para los botones
1. Copie y pegue el código siguiente en un nuevo boceto.
2. compilar, cargar y luego el Monitor serie.
3. Pulse los botones y anote los valores devueltos.
4. Vuelva a colocar mis valores con la suya.
5. comentar la linea: #define DEBUG_ON
/*********************
Este código se basa en:
Código por Doug LaRue
desde noviembre de 2008
publicado bajo
Creative Commons Attribution-Noncommercial-Share Alike 3.0
**********************/
#define ERROR_WINDOW 50
#define intervalo 100
#define DEBUG_ON
int whichButton;
variable para limitar el botón conseguir controlar cada ciclo de
lastChecked largo = 0;
void setup() {}
Serial.Begin(9600);
}
void loop() {}
Si (millis() - lastChecked > intervalo) {}
Si (int buttNum = buttonPushed(0)) {}
{if(whichButton!=buttNum)}
Serial.Print ("botón");
Serial.println(buttNum);
interruptor (buttNum) {}
caso 1:
Serial.println ("hacer algo para el botón 1");
rotura;
caso 2:
Serial.println ("hacer algo para el botón 2");
rotura;
caso 3:
Serial.println ("hacer algo para el botón 3");
rotura;
caso 4:
Serial.println ("hacer algo para 4 botón");
rotura;
caso 5:
Serial.println ("hacer algo para 5 botón");
rotura;
}
whichButton = buttNum;
}
}
lastChecked = millis(); restablecer el valor de lastChecked
}
}
int buttonPushed (int pinNum) {}
variable para almacenar el valor leído
int val = 0;
habilitar el pullup interna de 20 k
digitalWrite((14+pinNum), HIGH);
Val = analogRead(pinNum); leer la entrada de pin
#ifdef DEBUG_ON
Serial.println(Val);
#endif
/ * No use la posición superior ya que es lo mismo que el valor de todos los abiertos interruptor cuando está habilitado el interno 20K ohm pullup.
Para los 5 botones, la ERROW_WINDOW es de 50 * /
Si (val > = 923 y val < = 1023)
Serial.println ("switch 0 presionado/activado");
Si (val > = 780 y val < = 880) {/ / 830
retorno 1;
}
else if (val > = (630-ERROR_WINDOW) y val < = (630 + ERROR_WINDOW)) {/ / 630
retorno 2;
}
else if (val > = (430-ERROR_WINDOW) y val < = (430 + ERROR_WINDOW)) {/ / 430
retorno 3;
}
else if (val > = (230-ERROR_WINDOW) y val < = (230 + ERROR_WINDOW)) {/ / 230
retorno 4;
}
else if (val > = 0 y val < = (20 + ERROR_WINDOW)) {}
Retorno 5;
}
otra cosa
return 0;
}