Pages: [1]   Go Down
Author Topic: Orden de pulsación de botones  (Read 750 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas tardes:

Estoy comenzando con Arduino y quisiera encender un led solamente si se han pulsado una serie de botones en un orden concreto, es decir, que el led se encienda si he pulsado el boton 1 y luego el 2 pero si pulso el 2 y después el 1 no pase nada.

Hasta ahora he llegado a encender el led al pulsar los dos botones,  pero soy incapaz de establecer el orden, ¿alguién puede darme alguna orientación sobre que tema podría mirar al respecto?

Muchas gracias y saludos.
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

los botones estan conectados a pines digitales,no? es decir, no son botones del teclado que envias por puerto de serie.

bueno pues no se si sera la mejor opcion pero se me ocurre en plan rapido que podrias convertir cada boton en un numero. y luego crear una especie de contraseña.
es decir,
el boton1 -> 1
el boton2 -> 2
etc.

cuando pulsas un boton se añade ese numero a un String.
Este String lo puedes comparar con otro String que contenga la contraseña.

String contraseñaguardada = "1823"
String contraseñaintroducida

if (boton 1 apretado) contraseñaintroducida = contraseñaintroducida + "1"
por lo que contraseñaintroducida == "1"
if boton 8 apretado contraseñaintroducida =contraseñaintroducida + "8"
por lo que contraseñaintroducida  == "18"

igual no es la mejor opcion, o no funciona, pero es un principio.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
/#include <Password.h>

#include <Keypad.h>

Password password = Password( "1234" );

const byte ROWS = 4; // Four rows
const byte COLS = 3; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {'1','2','3',},
  {'4','5','6',},
  {'7','8','9',},
  {'*','0','#',}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 2, 3, 4, 5, };// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 6, 7, 8 };


// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#define ledPin 13

void setup(){

  digitalWrite(ledPin, LOW);   // sets the LED on
  Serial.begin(9600);
  keypad.addEventListener(keypadEvent); //add an event listener for this keypad
  keypad.setDebounceTime(250);
}

void loop(){
  keypad.getKey();
}

//take care of some special events
void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
    case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
  case '#': guessPassword(); break;
   default:
   password.append(eKey);
  }
}}

void guessPassword(){
     Serial.print("Guessing password... ");
     if (password.evaluate()){
     digitalWrite(ledPin,HIGH); //activates garaged door relay
             delay(500);               
             digitalWrite(ledPin,LOW); //turns off door relay after .5 sec
     Serial.println("VALID PASSWORD "); //
              password.reset(); //resets password after correct entry
     }else{
     digitalWrite(ledPin,LOW);
     Serial.println("INVALID PASSWORD ");
              password.reset(); //resets password after INCORRECT entry
     }
}
Logged

Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

Pages: [1]   Go Up
Jump to: