Ok so I am making an RGB colour mixer by typing RGB values into a keyboard it will show the colour (in theory)
This code doesn't want to quite work and I'm not sure why, currently it is sending the RGB values via serial to the pc (or should be) but it doesn't want to work properly
I'm probably doing something stupid, anyway here is my messy code:
#include "binary.h"
typedef uint8_t boolean;
typedef uint8_t byte;
#include <PS2Keyboard.h>
#define DATA_PIN 4
PS2Keyboard keyboard;
int LEDR = 9;
int LEDG = 10;
int LEDB = 11;
int r1 = 0;
int r2 = 0;
int r3 = 0;
int g1 = 0;
int g2 = 0;
int g3 = 0;
int b1 = 0;
int b2 = 0;
int b3 = 0;
void setup() {
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
keyboard.begin(DATA_PIN);
Serial.begin(9600);
Serial.println("RGB colour Mixer");
delay(500);
}
void loop() {
if(keyboard.available()) {
byte dat = keyboard.read();
byte val = dat - '0';
digitalWrite(LEDR, HIGH);
delay(10);
digitalWrite(LEDR, LOW);
delay(10);
digitalWrite(LEDR, HIGH);
delay(10);
digitalWrite(LEDR, LOW);
Serial.print("Type R value 0-255");
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
r1 = val, DEC;
}
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
r2 = val, DEC;
}
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
r3 = val, DEC;
}
digitalWrite(LEDG, HIGH);
delay(10);
digitalWrite(LEDG, LOW);
delay(10);
digitalWrite(LEDG, HIGH);
delay(10);
digitalWrite(LEDG, LOW);
Serial.print("Type G value 0-255");
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
g1 = val, DEC;
}
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
g2 = val, DEC;
}
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
g3 = val, DEC;
}
digitalWrite(LEDB, HIGH);
delay(10);
digitalWrite(LEDB, LOW);
delay(10);
digitalWrite(LEDB, HIGH);
delay(10);
digitalWrite(LEDB, LOW);
Serial.print("Type B value 0-255");
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
b1 = val, DEC;
}
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
b2 = val, DEC;
}
while(digitalRead(DATA_PIN) != LOW) {}
if(val >= 0 && val <= 9) {
b3 = val, DEC;
}
delay(500);
Serial.print(r1);
Serial.print(r2);
Serial.println(r3);
Serial.print(g1);
Serial.print(g2);
Serial.println(g3);
Serial.print(b1);
Serial.print(b2);
Serial.println(b3);
}
}
Thanks in advance,
Mowcius