Go Down

Topic: Need help with reading keyboard into an array (Read 1 time) previous topic - next topic

doulos24

that didnt work either  :0

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

Code: [Select]
/*  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);
   }
 }
}

PaulS

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?

HazardsMind

My GitHub:
https://github.com/AndrewMascolo?tab=repositories

doulos24

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

HazardsMind

Great! What did you change? Could you post your working code, with comments so others can see too?
My GitHub:
https://github.com/AndrewMascolo?tab=repositories

doulos24

#20
Feb 04, 2013, 05:10 pm Last Edit: Feb 04, 2013, 10:16 pm by doulos24 Reason: 1
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: [Select]
// 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
 
   }
 }
}

doulos24

#21
Feb 04, 2013, 05:25 pm Last Edit: Feb 04, 2013, 05:28 pm by doulos24 Reason: 1
And here is the code to go with it  

Code: [Select]
/* 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
     }
   }
 }
}


doulos24

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

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

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview