Fév 092013
 

This time lets play with Arduino and a ps2 keyboard.

For the record here comes the ps2 male connectors :

ps2_male

A quick schema :

ps2_keyboard_bb

The sketch :

#include 

#define KBD_CLK_PIN  3
#define KBD_DATA_PIN 4

PS2Keyboard keyboard;

void setup ( )
{
keyboard.begin(KBD_DATA_PIN);
  Serial.begin(9600);
  delay(1000);
}

void loop ( )
{
  if(keyboard.available()) {
    // reading the "extra" bits is optional
    byte   extra = keyboard.read_extra(); // must read extra before reading the character byte
    char c = keyboard.read();
    boolean ctrl = extra & 1;  //  is bit 0
    boolean  alt = extra & 2;  //   is bit 1
    if (ctrl) Serial.print('^');
    if (alt)  Serial.print('_');
    //if      (c==PS2_KC_UP)      Serial.print("up\n");
    //if (c==PS2_KC_DOWN)    Serial.print("down\n");
    //if (c==PS2_KC_BKSP)    Serial.print("backspace\n");
    //if (c==PS2_KC_ESC)   { Serial.print("escape and reset\n"); keyboard.reset(); }
    Serial.print(c);   //lets print last input char to our serial monitor
  }   
}

(the PS2Keyboard library : PS2Keyboard)

A picture (i used female – male proto wires so that I did not have to cut out my ps2 keyboard wire).

ps2

 Posted by at 22 h 04 min
Fév 042013
 

Last time we have seen how to use an arduino and a 16*2 lcd screen.
Now lets see to use an arduino and a tvout to a small display screen (2.5 inches) using a RCA connector.

First the wiring

tvout_bb

Then the code

#include 

TVout TV;
unsigned char x, y;

void setup ( )
{
  TV.start_render( _PAL );
}

void loop ( )
{
  TV.clear_screen ( );
  TV.print_str ( 10, 10, "Hello World!!!" );
  TV.delay ( 60 );
}

TvOut lib can be found here

And finally a picture
IMG_3544

 Posted by at 21 h 43 min
Jan 242013
 

I got my arduino for a few days now and here comes my first adventure :
use an arduino + a lcd + a RTC to display a clock.

First lets go with the wiring :

lcd_keypad_bb

Then the code :

// ds1302 library can be found here : http://www.henningkarlsen.com/electronics
//
// DS1302: RST / CE pin - Arduino Digital 12
// I/O / DAT pin - Arduino Digital 11
// SCLK pin - Arduino Digital 10
// LCD: DB7 - Arduino Digital 7
// DB6 - Arduino Digital 6
// DB5 - Arduino Digital 5
// DB4 - Arduino Digital 4
// RS - Arduino Digital 8
// E - Arduino Digital 9
// RW to ground?


//seems it is better to NOT plug VCC when setting the clock...

#include 
#include 

// Init the DS1302
//DS1302(ce, data, clock);
DS1302 rtc(12,11,10);

// Init the LCD
LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 );

void set_time() {
rtc.setDOW(SUNDAY); // Set Day-of-Week to FRIDAY
rtc.setTime(19, 2, 0); // Set the time to 12:00:00 (24hr format)
rtc.setDate(13, 1, 2013); // Set the date to August 6th, 2010
}

void setup()
{
Serial.begin(9600);
// Set the clock to run-mode, and disable the write protection
rtc.halt(false);
rtc.writeProtect(false);
// Setup LCD to 16x2 characters
lcd.begin(16, 2);

// The following lines can be commented out to use the values already stored in the DS1302
//set_time();
}

void loop()
{
// Display time centered on the upper line
lcd.setCursor(4, 0);
lcd.print(rtc.getTimeStr());

// Display abbreviated Day-of-Week in the lower left corner
lcd.setCursor(0, 1);
lcd.print(rtc.getDOWStr(FORMAT_SHORT));

// Display date in the lower right corner
lcd.setCursor(6, 1);
lcd.print(rtc.getDateStr());

Serial.print(rtc.getTimeStr());
Serial.print(" ");
Serial.print(rtc.getDOWStr(FORMAT_SHORT));
Serial.print(" ");
Serial.println(rtc.getDateStr());

// Wait one second before repeating :)
delay (1000);
}

And finally a nice picture to illustrate it :

Hope you’ll enjoy it as much as I did 🙂

/Erwan

 Posted by at 21 h 52 min