A PWM RGB colour changer using WiringPi : projects.drogon.net/raspberry-pi/wiringpi/ and it’s software PWM handler.
Ooh pretty colours! This is an old ‘mood cube’ bought years ago because I quite liked the perspex box and have a thing for shiny cubes. It has 8 sets of red, green and blue LEDs along with some electronics to randomly change the colours. I gutted it, leaving just the LEDs. Wired together; all R+ to pin 15, G+ to pin 9, B+ to pin 7 on the Raspberry Pi.
A simple C program loops forever reading RGB values (0 to 100) from a text file and sends PWM signals via WiringPi’s library to pins 7,15,9.
Web front end (running from lighttpd on the RPi). Displays R, G and B jquery sliders; on change posts to php script that saves the RGB values to the mentioned text file.
/* * mood_cube.c * Simple PWM test program to read RGB values from a text file and send as PWM * */ #include <stdio.h> #include <errno.h> #include <string.h> #include <wiringPi.h> #include <softPwm.h> int main () { int fr,fg,fb; char line[80]; FILE *fbuf; /* declare the file pointer */ printf ("Raspberry Pi PWM test program.\n") ; if (wiringPiSetup () == -1) { fprintf (stdout, "oops: %s\n", strerror (errno)) ; return 1 ; } softPwmCreate(7,0,100); // set pin 7 as pwm range 0 - 100 softPwmCreate(15,0,100); // set pin 15 as pwm range 0 - 100 softPwmCreate(9,0,100); // set pin 9 as pwm range 0 - 100 for(;;) { fbuf = fopen ("/var/www/rgb/rgb.txt", "rt"); /* open the file for reading */ while(fgets(line, 80, fbuf) != NULL) { /* get a line */ sscanf (line, "%d %d %d", &fr,&fg,&fb); printf ("%d %d %d\n", fr,fg,fb); } fclose(fbuf); /* close the file */ softPwmWrite (7, fb); softPwmWrite (15, fr) ; softPwmWrite (9, fg) ; delay(20); } return 0 ; }
This is amazing! What would i need to do to get hold of one of these?