Pages: 1 [2]   Go Down
Author Topic: Need help with reading keyboard into an array  (Read 1332 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

that didnt work either  smiley-mad

here is the example code stripped Ill re add my code wen this works!

Code:
/*  PS2Keyboard library example
  
  PS2Keyboard now requries both pins specified for begin()

  keyboard.begin(data_pin, irq_pin);
  
  Valid irq pins:
     Arduino:      2, 3
     Arduino Mega: 2, 3, 18, 19, 20, 21
     Teensy 1.0:   0, 1, 2, 3, 4, 6, 7, 16
     Teensy 2.0:   5, 6, 7, 8
     Teensy++ 1.0: 0, 1, 2, 3, 18, 19, 36, 37
     Teensy++ 2.0: 0, 1, 2, 3, 18, 19, 36, 37
     Sanguino:     2, 10, 11
  
  for more information you can read the original wiki in arduino.cc
  at http://www.arduino.cc/playground/Main/PS2Keyboard
  or http://www.pjrc.com/teensy/td_libs_PS2Keyboard.html
  
  Like the Original library and example this is under LGPL license.
  
  Modified by Cuninganreset@gmail.com on 2010-03-22
  Modified by Paul Stoffregen <paul@pjrc.com> June 2010
*/
  
#include <PS2Keyboard.h>

const int DataPin = 3;
const int IRQpin =  2;

PS2Keyboard keyboard;

void setup() {
  delay(1000);
  keyboard.begin(DataPin, IRQpin);
  Serial.begin(9600);
  
}

void loop() {
  if (keyboard.available()) {
    
    // read the next key
    char c = keyboard.read();
    
    // check for some of the special keys
    if (c == PS2_ENTER) {
      Serial.println();

    } else if (c == PS2_DELETE) {
      Serial.print("[Del]");
    } else {
      
      // otherwise, just print all normal characters
      Serial.print(c);
    }
  }
}
Logged

Seattle, WA USA
Offline Offline
Brattain Member
*****
Karma: 610
Posts: 49086
Seattle, WA USA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
that didnt work either
It did so. It just didn't do what you wanted.

So, what did you want it to do, and what did it do?
Logged

Queens, New York
Offline Offline
Faraday Member
**
Karma: 98
Posts: 3576
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

What library are you using from here? http://playground.arduino.cc//Main/PS2Keyboard
Logged

Created Libraries:
NPV2 (NewPasswordV2),  TFT_Extension, OneWireKeypad, SerialServo.
Will provide libraries if asked in PM or forum.

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

it Works I had to change some stuff but it works You guys rock thanks!
Logged

Queens, New York
Offline Offline
Faraday Member
**
Karma: 98
Posts: 3576
"Of all the things I've ever lost, I miss my mind the most" -Ozzy Osbourne
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Great! What did you change? Could you post your working code, with comments so others can see too?
Logged

Created Libraries:
NPV2 (NewPasswordV2),  TFT_Extension, OneWireKeypad, SerialServo.
Will provide libraries if asked in PM or forum.

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

here is the working code. Only thing I'd like to be able to also read  PS2_DELETE
but I couldn't get that working but this works for now.

Code:
// arduino serial terminal  

#include <PS2Keyboard.h>
#include "Wire.h"
#include "LiquidCrystal.h"

LiquidCrystal lcd(0); // set lcd i2c adress
int reset_pin = 13;  // reset pin on the arduino mega
const int DataPin = 3; // data pin for ps/2
const int IRQpin =  2; // clock pn for ps/2
char line[16]; // store char array
int count = 0; // counter
unsigned long time = 60000; // 1 minuite delay

PS2Keyboard keyboard;

void setup() {

  pinMode(reset_pin, OUTPUT); // set pin 13 to output
  digitalWrite(reset_pin, HIGH);  // set pin High
  delay(1000); // delay 1 second
  keyboard.begin(DataPin, IRQpin); // start keyboard
  Serial.begin(9600); // start serial
  delay(1000);  // delay 1 second
  lcd.begin(16, 2);  // begin lcd
  lcd.setBacklight(HIGH); // turn backlight on
  lcd.setCursor(0, 0); // set cursor
  lcd.print(":"); // print a prompt
}

void loop() {

  if (keyboard.available() ){
    char kb = keyboard.read();  // read the ps2 keyboard input


    if(kb != PS2_ENTER){ // if input does not equal enter
      lcd.print(kb); // print char to lcd
      delay(20); // delay 20 ms
      line[count++] = kb; // add chars
      delay(50);  // delay 50 ms


    }
    else{
      line[count++] ='\0';  // line = line + count = terminate
      Serial.print(line);  // print the added chars
      delay(1000);  // dealy 1 second
      count = 0;  // reset count
      lcd.clear();  // clear lcd
      delay(50);  // delay 50ms
      lcd.print ("sending"); // print sending to lcd
      delay(5000); // delay 5 seconds
      lcd.clear();  // clear lcd
      delay(50); // delay 50ms
      lcd.print(":"); // print prompt  
      delay(time); // delay 1 minuite
      lcd.print("reset");  // print reset to lcd
      delay(1000); // delay 1 second
      digitalWrite(reset_pin , LOW); // send a reset to the arduino mega
      delay(2000); // delay 2 seconds
      digitalWrite(reset_pin , HIGH);  // finish reset  
      lcd.clear();     // clear lcd
  
    }
  }
}
« Last Edit: February 04, 2013, 04:16:41 pm by doulos24 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

And here is the code to go with it  

Code:
/* max 24 relay controller and pump pulser simulator  
 
 this program takes a serial string like this "12.900.14.14"  and parses it up into variables
 for relay count 1-12, number of pulses, pulse width, and delay beween pulses.
 Then it prints that to the serial port like this "Relays 12 Pulses 900 Length 14ms Delay 14ms"
 
 created 1/7/13
 last edit 2/1/13
 by Will Meyers  
 
 */

unsigned long counter =0; // set counter to 0
int pulse =52; // pin thats connected to the pulse simulator
int led = 13; // status led
int dly= 150; // delay between relay functions

int relay[]={
  14, 15, 16, 17, 18, 19, 20, 21, 30, 31,\
32, 33, 34, 35, 36, 36, 38, 39, 40, 41, 42, 43, 44, 45}; // relay array with all 24 pins

int pinCount = 24;  // the number  index for the array



void setup() // setup arduino functions
{

  pinMode (pulse, OUTPUT);  // set pin 52 to an output
  pinMode (led, OUTPUT); // set pin 13 to an output

  Serial.begin(9600);    // start serial connection                                                                                                                                                                                                              
  Serial.println("reset");

  for(int n=0; n<pinCount;n++){  // for loop
    pinMode(relay[n],OUTPUT);  // set all relay pins as output
    digitalWrite(relay[n], HIGH); // write all relay pins high SETS THEM TO OFF
  }
}

void loop()  // run main loop
{
  if (Serial.available() > 0)  // wait for data
  {

    int w = Serial.parseInt();   // this is the relay selection variable from 1 -12
    unsigned long x = Serial.parseInt();  // this is for the pulse counter
    int y = Serial.parseInt(); // this sets how long you want to hold the pulse high  
    int z = Serial.parseInt(); // delay between pulses
    delay(1); // neccesary delay to use Serial.parseint() ;
    Serial.print("relays "); // print "relays " to serial port
    Serial.print (w * 2);   // print the w x 2 or relay pins to the serial port
    Serial.print(" Pulses "); // print "pulses "to the serial port
    Serial.print(x); // print the var value of x to the serial port
    Serial.print(" Length "); // print "length " to the serial port
    Serial.print(y);
    Serial.print( "ms"); // print the value of y then "ms"  to the serial port
    Serial.print(" delay " );  // print "delay"  to the serial port
    Serial.print(z); // print the value of z  to the serial port
    Serial.println("ms");  //print "ms" to the serial port

    for(int n=0; n < (w * 2); n++){  // for loop relay counter * 2
      digitalWrite(relay[n], LOW); // set all selected pins low  or ON
      delay(dly); // delay for variable
    }
    delay(dly * w );  // max delay needed  to turn on all pumps the var dly * relay selection 1-12  

    while(counter<(x)) // while counter is less the x do this loop
    {
      PORTB = 0b10000010; // port adress of the pulse pin 52 pull it HIGH
      delay(y) ;       // delay by y  or how long to hold the pin high
      PORTB = 0b00000000; // pull everything on this port LOW  
      delay(z);   // delay by z delay between pulses
      counter++; // increment counter by 1

      while(counter==(x)) // after counter equals x do this loop
      {
        delay(10); // delay by the value of 10ms
        PORTB = 0b00000000; // set all pins in this port LOW
        delay(1000); // delay by the value of 1 second

        for(int n=0; n < (w * 2); n++){ // for loop  relay counter * 2
          digitalWrite(relay[n], HIGH);// write n # of relay pins HIGH or OFF
          delay(dly); // delay by variable dly

        }
        Serial.println("done");  // print "done" to the serial port on a new line
        return; // fin
      }
    }
  }
}

« Last Edit: February 04, 2013, 11:28:08 am by doulos24 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

thanks guys for helping me make this possible my work is very pleased

http://www.youtube.com/watch?v=TyJvdAa4VKQ&feature=youtu.be
Logged

Pages: 1 [2]   Go Up
Jump to: