Error de codigos.

Hola amigos,estoy haciendo otro proyecto y e visto por la red uno que me gusta,e copiado los códigos me da error de compilación,como ya saben ustedes estoy muy verde y pido ajuda que poco a poco voy aprendiendo mas de vosotros el error es el siguiente al compilar,pues de donde lo saque la web esta muerta y no deja regístrate ni hacer comentario.

Arduino:1.6.0 (Windows 7), Placa:“Arduino Uno”

_project4.ino:6:20: fatal error: Keypad.h: No such file or directory

compilation terminated.

Error de compilación

This report would have more information with

“Show verbose output during compilation”

activala desde Archivo > Preferencias

y no se que hay que hacer

y este es el código:

/////////////////////////////
//       segundo           //
//      proyecto           //
/////////////////////////////

#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Tone.h>
#define pound 14

Tone tone1;

int Scount = 12; // count seconds
int Mcount = 10; // count minutes
int Hcount = 0; // count hours
int DefuseTimer = 0; // set timer to 0

long secMillis = 0; // store last time for second add
long interval = 1000; // interval for seconds

char password[4]; // number of characters in our password
int currentLength = 0; //defines which number we are currently writing
int i = 0; 
char entered[4];

int ledPin = 4; //red led
int ledPin2 = 3; //yellow led
int ledPin3 = 2; //green led

LiquidCrystal lcd(7,8,10,11,12,13); // the pins we use on the LCD

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {5, A5, A4, A2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A1, A0, A3}; //connect to the column pinouts of the keypad

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


void setup(){
  pinMode(ledPin, OUTPUT); // sets the digital pin as output
  pinMode(ledPin2, OUTPUT); // sets the digital pin as output
  pinMode(ledPin3, OUTPUT); // sets the digital pin as output
  tone1.begin(9);
  lcd.begin(16, 2);
  Serial.begin(9600);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Enter Code: ");
  while (currentLength < 4)
  {
    lcd.setCursor(currentLength + 6, 1);
    lcd.cursor();
    char key = keypad.getKey();
    key == NO_KEY;
    if (key != NO_KEY)
    {
      if ((key != '*')&&(key != '#'))
      { 
      lcd.print(key);
      password[currentLength] = key;
      currentLength++;
      tone1.play(NOTE_C6, 200);
      }
    }
  }

  if (currentLength == 4)
  {
    delay(500);
    lcd.noCursor();
    lcd.clear();
    lcd.home();
    lcd.print("You've Entered: ");
    lcd.setCursor(6,1);
    lcd.print(password[0]);
    lcd.print(password[1]);
    lcd.print(password[2]);
    lcd.print(password[3]);

    tone1.play(NOTE_E6, 200);
    delay(3000);
    lcd.clear();
    currentLength = 0;
  }
}

void loop()
{
  timer();
  char key2 = keypad.getKey(); // get the key
  
  if (key2 == '*')
    {
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Code: ");
      
      while (currentLength < 4)
        {
          
          timer();
          
          char key2 = keypad.getKey(); 
          if (key2 == '#')
            {
              currentLength = 0;
              lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("Code: ");
            }
          else                  
          if (key2 != NO_KEY)    
            {
              
              lcd.setCursor(currentLength + 7, 0);
              lcd.cursor();
              
              lcd.print(key2);
              entered[currentLength] = key2;
              currentLength++;
              tone1.play(NOTE_C6, 200);
              delay(100);
              lcd.noCursor();
              lcd.setCursor(currentLength + 6, 0);
              lcd.print("*");
              lcd.setCursor(currentLength + 7, 0);
              lcd.cursor();
            }
        }

      if (currentLength == 4) 
        {
          if (entered[0] == password[0] && entered[1] == password[1] && entered[2] == password[2] && entered[3] == password[3])
            {
              lcd.noCursor();
              lcd.clear();
              lcd.home();
              lcd.print("Bomb Defused");
              currentLength = 0;
              digitalWrite(ledPin3, HIGH);
              delay(2500);
              lcd.setCursor(0,1);
              lcd.print("Reset the Bomb");
              delay(1000000);
            }
      else
        {
          lcd.noCursor();
          lcd.clear();
          lcd.home();
          lcd.print("Wrong Password!");
    
          if (Hcount > 0)
            {
              Hcount = Hcount - 1;
            }
    
          if (Mcount > 0)
            {
              Mcount = Mcount - 59;
            }
          if (Scount > 0)
            {
              Scount = Scount - 59;
            }
        delay(1500);
        currentLength = 0;
  
        }
      }  
    }
}

void timer()
{
  Serial.print(Scount);
  Serial.println();
  
  if (Hcount <= 0)
  {
    if ( Mcount < 0 )
    {
      lcd.noCursor();
      lcd.clear();
      lcd.home();
      lcd.print("The Bomb Has ");
      lcd.setCursor (0,1);
      lcd.print("Exploded!");
      
      while (Mcount < 0) 
      {
        digitalWrite(ledPin, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100); 
        digitalWrite(ledPin, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100); 
        digitalWrite(ledPin2, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100); 
        digitalWrite(ledPin2, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100); 
        digitalWrite(ledPin3, HIGH); // sets the LED on
        tone1.play(NOTE_A2, 90);
        delay(100); 
        digitalWrite(ledPin3, LOW); // sets the LED off
        tone1.play(NOTE_A2, 90);
        delay(100);
      }
    } 
  }

  lcd.setCursor (0,1); // sets cursor to 2nd line
  lcd.print ("Timer:");

  if (Hcount >= 10)
    {
      lcd.setCursor (7,1);
      lcd.print (Hcount);
    }
  if (Hcount < 10) 
    {
      lcd.setCursor (7,1);
      lcd.write ("0");
      lcd.setCursor (8,1);
      lcd.print (Hcount);
    }

  lcd.print (":");

  if (Mcount >= 10)
    {
      lcd.setCursor (10,1);
      lcd.print (Mcount);
    }
  if (Mcount < 10) 
    {
      lcd.setCursor (10,1);
      lcd.write ("0");
      lcd.setCursor (11,1);
      lcd.print (Mcount);
    }
    
  lcd.print (":");

  if (Scount >= 10) 
    {
      lcd.setCursor (13,1);
      lcd.print (Scount);
    }
  if (Scount < 10) 
    {
      lcd.setCursor (13,1);
      lcd.write ("0");
      lcd.setCursor (14,1);
      lcd.print (Scount);
    }

  if (Hcount <0) 
    {
      Hcount = 0; 
    }

  if (Mcount <0) 
    {
      Hcount --; 
      Mcount = 59; 
    }

  if (Scount <1) // if 60 do this operation
    {
      Mcount --; // add 1 to Mcount
      Scount = 59; // reset Scount
    }

  if (Scount > 0) // do this oper. 59 times
    {
      unsigned long currentMillis = millis();
  
      if(currentMillis - secMillis > interval) 
        {
          tone1.play(NOTE_G5, 200);
          secMillis = currentMillis;
          Scount --; // add 1 to Scount
          digitalWrite(ledPin2, HIGH); // sets the LED on
          delay(10); // waits for a second
          digitalWrite(ledPin2, LOW); // sets the LED off
          delay(10); // waits for a second
          //lcd.clear();
        }
    }
}

Ufffff has subido el código a trozos. eso es peor que no subirlo con el tag de código.

Por favor, edita el post y pon todo el código con un solo tag.

Por el error, parece que no tienes instalada la libreria keypad. Posiblemente, se ha borrado al actualizar la versión del ide de arduino.

Yo siempre recomiendo instalar las librerias en "C:\Users\nombreusuario\Documents\Arduino\libraries" donde nombreusuario es el nombre de usuario de windows. De esta forma, las librerias que instalemos, no sepierden al actualizar la version del ide.

Con otros sistemas operativos, supongo que la carpeta de usuario estará en una ubicación semejante.

muchas gracias carmeloco, ya lo e modificado,si creo que falta la librería del keypad,aun asi creo que la tengo ,es el archivo que acaba en h? me baje tb un archivo de la web de los códigos y contiene la librería,pero no se donde ni como se puede poner junto a todo el código,,no sabia subir los códigos y ya se gracias a todos por vuestra ayuda.

Flecho.

pon la libreria, dentro de su carpeta, con su nombre, que seguramente sera keypad, dentro de la carpeta que te dije antes.

Quiza esto te sirva:

byte rowPins[ROWS] = {5, A5, A4, A2}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A1, A0, A3}; //connect to the column pinouts of the keypad

Filas 5, A5,A4,A2
Columnas A1,A0,A3

porque semejante locura?
Quien elije esas entradas teniendo todo el arduino dispoinble?
Las teclas se eligen consecutivamente 2,3,4,5 para filas
y si quieres las A3,A4 y A5 para columnas sino te quedan 6, 7, 8 y aun mas para otras cosas.
pero CONSECUTIVAS

¿De verdad no te dice nada la foto que he puesto con el esquema de los 7 pins que comentas?

Pues por mas vueltas que le e dado sinceramente no,como se cual es cual en 14 pins,disculpame pero quizas no vea mas alla de donde no quiera y no sera por ganas,y por mas que e jumpeado no salgo de ai,si fuera de 7 pins el teclado hasta llego,pero bien en 14 no lo veo tan claro,estare ciego de tanto dar vueltas al asunto.

Flecho.

Flecho, camerloco te puso el esquema del teclado para que entiendas su distribución. Yo he resaltado como estan conectadas en tu sketch.

Vamos a compenzar de nuevo ya que tienes un protoboard y puedes reubicar los pines. Saca todos los cables del teclado y vamos a hacerlo de nuevo. las filas 0,1,2,3 van a A0, A1, A2, A3

Las columnas 2,3,4 estan siendo usados por los leds? porque no los conectas al teclado y los leds que son individuales lo conectas a 5,6,9

entonces los cambios serían

int ledPin   = 9; //red led        Cambiar este cable de 4 a 9
int ledPin2 = 6; //yellow led    Cambiar 3 con 6
int ledPin3 = 5; //green led    Cambiar 2 con 5

byte rowPins[ROWS] = {A0, A1, A2, A3}; // filas
byte colPins[COLS] = {2,3,4};                  // columnas

Probaste el LCD, imprime todo lo que le envías?

Saludos.

Según puedo notar en la imagen este teclado no es una matriz de teclas. Son tres arreglos de 4 teclas con un común.

La libreria Keypad.h no le va a servir. Practicamente tienes el común en el pin 1. Y luego doce teclas que al presionarlas harás contacto con el común.

Eso es lo que puedo notar por la imagen. Y "sii" es así a que loco se le ocurrió este modelo?

cada dia me doy cuenta que mucha gente no tiene los mas mínimos conocimientos eléctricos. Que dificiil se hace ayudar cuando la gente no se ayuda estudiando!! Hay que leerse un buen libro de electricidad y Arduino, comprarse un multimetro aprender lo básico de electricidad y luego si aventurarse.

Gracias al fin es lo que dije desde un principio es el teclado el problema,creo que la gente por mucho que sabe no lee los posts, y no lo digo por ti ,si soy novato lo pone bien claro desde el primer post,quizas el que quiera dar clases de lectura aprenda primero a leer,estoy en mi derecho de preguntar tenga idea o no eso es mi problema,quien quiera ayudar o participar tb esta en su derecho o no de hacerlo tus comentarios estan fuera de lugar surbyte.

Mis comentarios no estan fuera de lugar. Tu asumiste un keypad no yo.

Tu usas un teclado que el post sugiere o supone inicialmente que es matricial (por el uso del sketch que copiaste de la pagina web tal como tu dijiste) y por eso camerloco te sugiere como son las conexiones. Si tuvieras conocimientos básicos de electricidad, tomabas el multimetro y probabas a ver si la imagen coincidia con esa distribución. Asi que crees que mi comentario esta fuera de lugar? Con conocimientos básicos de electricidad te hubiera surgido la duda si el teclado era una cosa o la otra.

Y por supuesto que estas en tu derecho de preguntar. Puedes preguntar lo que gustes, las veces que gustes. También yo puedo aconsejarte que tomes un libro y estudies algo para tu bien no para el mio. Yo puedo optar por no responderte mas y listo.

ya se cual será tu respueta, que eres novato... o que estas verde. Verde no está nadie que toma un libro y estudia. Al final quien esta fuera de lugar?

De todas formas dejalo aca. Yo respondo de esta forma para hacerte ver que conviene tomar un libro porque te ahorra tiempo y dolores de cabeza, pero no para tener una discusión al punto de una enemistad. Si te sientes ofendido te pido disculpas, el recomendar a otro que estudie nunca fue una ofensa.

Surbyte Te demuestras tal y como eres,discutir contigo me ofende pero tu siempre tienes que quedar por encima de los demas vease un "verde" contra un "ingeniero"quien serA el ganador......solo con un post me han dicho lo que ocurre cosa que tu no as sabido desde un principio decirlo ...un keypad de 14 pins ! Y quererlo hacerlo con una matrix de 3x4 Tu que sabes si yo ya lo tenia y e querido aprovecharlo?te recomiendo un gran libro " leer muy bien la pregunta ,antes de contestar"

Simpre tienes la opcion de :

A- no contestar a novatos como otros muchos y pasar del tema. B-ayudar dentro de lo posible sin desestimar a nadie. C-ayudar y colaborar como otros hacen sin poner objeciones. D- ayudar como otros muchos logrando lo que uno necesita sin medallitas.

Con esto termino contigo "maestro" y te recuerdo sin practica no hay teoria cosa que no tengo disponibilidad para ello.

Flecho.

Esta entendido.
Yo no soy para nada superior a nadie, porque puedo saber algo mas de esto pero no de aquello.

Yo pedí disculpas si te ofendí, esta claro que así fue, pero no leo que las aceptes, entonces no tiene caso seguir respondiendo.

Suerte con tus cosas.

Nadie, absolutamente nadie, te podía dar una respuesta a tu problema, antes de haber puesto la foto trasera del keypad, ya que ese keypad, no es muy normal, de forma que tampoco nos vengas ahora con que si alguien te dió la respuesta en un solo post. Cuando pedimos todo tipo de documentación sobre lo que se pregunta, es para evitar dar rodeos y solucionar las cosas lo antes posible.

Podemos entender que seas novato y lo aceptamos, pero surbyte tiene parte de razón en que, alguien que se mete a manejar cosas de electrónica, debe también intentar tener unos mínimos conocimientos de electricidad, ya que mirando la foto trasera del keypad, es evidente que no se corresponde a un keypad normal, como el del esquema que puse yo.

Saludos. Yo realmente no había aportado en este post ya que gente con mas experiencia, como surbyte y carmeloco, estaban haciéndolo, fue cuando vi la imagen que pude notar que no era un keypad matricial.

Realmente este es otro problema de no colocar la informacion completa al postear un problema. Y no se trata de no leer el problema se trata de no dar informacion correcta de los elementos usados. Hay que colocar los links de cada modulo o hardware que se compra.