// Sample code for ICStation.com's PS2 Keyboard Interface Module
// For the Arduino Uno, using the UART (serial)
// by Ido Gendel, 2015
// Share and enjoy!
// This is adapted to a common-anode RGB LED, so everything is in negative logic.
// The Red, Green and Blue legs of the LED are connected to pin 9, 10 & 11
// Make sure to disconnect the module from the Arduino while uploading this sketch!
byte color[3] = {255, 255, 255};
byte *ref = NULL;
void red() { ref = &color[0]; }
void green() { ref = &color[1]; }
void blue() { ref = &color[2]; }
void update() {
for (byte j = 0; j < 3; j++) analogWrite(j + 9, color[j]);
}
// Common Anode - Negative logic!
void less() {
if (ref && (*ref < 255)) (*ref)++;
update();
}
// Common Anode - Negative logic!
void more() {
if (ref && (*ref > 0)) (*ref)--;
update();
}
void keyState() {
digitalWrite(13, digitalRead(2));
}
void setup() {
for (byte j = 9; j <= 13; j++) pinMode(j, OUTPUT);
pinMode(2, INPUT);
attachInterrupt(0, keyState, CHANGE);
digitalWrite(13, LOW);
update();
Serial.begin(19200);
}
void loop() {
while (!Serial.available());
char c = Serial.read();
switch (c) {
case 45: red(); break;
case 52: green(); break;
case 50: blue(); break;
case 121: more(); break;
case 123: less(); break;
}
Serial.println(c, DEC);
}
Comments