Arduino + Winamp vu meter
by Dave Johnson
This is one of the pieces of code that I’ve delayed posting for a long time. For those that wanted it I’m deeply sorry that it has taken me this long.
This is a Script that really only works is you have all the pieces.
So first you need the plugin for winamp that Maceger provided to me.
http://www.macetech.com/wa502_sdk.zip
also my version is available on my download page
** for this to work you need to download and open the project in visual studio and do a search for “COM” and change it to your COM port of your computer. Then compile the dll, and put it into the C:\Program Files\Winamp\Plugins folder ***
second you need softPWM (optional)
http://arduino.cc/forum/index.php/topic,19451.0.html
if you chose not to use it you will need to change SoftPWMSet to digitalWrite, and remove all SoftPWM code.
support topics on my project can be found at the fallowing links.
http://arduino.cc/forum/index.php/topic,40078.msg293360.html#msg293360
http://arduino.cc/forum/index.php/topic,27482.msg203610.html#msg203610
UPDATE:: source code.zip
/*#################################################
### --- Winamp + arduio vu meter ---- ###
### --- Copyright 2010 - Dave Johnson --- ###
###--- Dave@SilverCG.com - www.SilverCG.com --- ###
###_____________________________________________###
### --- this code includes a vu meter based off ###
### data from winamp and converts it to 3 rows ###
### of multiplexed leds. ---- ###
#################################################*/
#include
#define DELAY 80
int colpins[] = {2,3,4,5,6,7,8,9,10};
int rowpins[] = {11,12,13};
int power = 1;
//---------------------------------------------
long timer;
const long muxInterval = 10;
int mux = 0;
int full[27];
float lvl;
void setup() {
Serial.begin(57600);
// for (int pin=0; pin<9; pin++) {
// pinMode( colpins[pin], OUTPUT );
// }
for (int pin=0; pin<3; pin++) {
pinMode( rowpins[pin], OUTPUT );
}
timer = millis();
SoftPWMBegin();
for (int i = 0; i < 9; i++){
SoftPWMSet(colpins[i], 0);
}
}
void loop(){
int divide = 5;
//------------------------------------------------------------
float total; // for calculations below. <>
int data[9]; // raw serial data <>
if (Serial.available() >10) {
byte i = Serial.read();
if (int(i) == 255) {
for (int c = 0; c < 9; c++){
data[c] = int(Serial.read());
}
}
}
// some math -------------
lvl = (data[0] + data[1] + data[2] + data[3] + data[4] + data[5] + data[6] + data[7] + data[8]) / 9;
//lvl = (data[1] + data[2] + data[3]) / divide;
//lvl2 = (data[0] + data[7] + data[8]) / divide;
//lvl3 = (data[4] + data[5] + data[6]) / divide;
// math end -----------------
// reset leds ---------------
for (int i = 0; i < 27; i++){ full[i] = 0; }
int length = 5; // sets how long the tail is, so as the meter goes up there is 9 or less leds on at a times...
// feel free to change this to what you like.
// -------------------------------
int mapvalue2;
int mapvalue = map(lvl, 0, 255, 0, 27);
if (mapvalue >= length){
mapvalue2 = mapvalue - length + 1;
}
if (mapvalue < length) {
mapvalue2 = 0;
}
for (int x = mapvalue2; x <= mapvalue; x++){
full[x] = 1;
}
// set leds end--------------
// patterns feel free to change these to what ever you want the posiblities are endless. 0 - 26 is equel to 27 leds..
// int meterlist[9]= {full[0], full[1], full[2], full[13], full[14], full[15], full[16], full[17], full[26]};
// int meterlist2[9] = {full[5], full[4], full[3], full[12], full[11], full[20], full[19], full[18], full[25]};
// int meterlist3[9] = {full[6], full[7], full[8], full[9], full[10], full[21], full[22], full[23], full[24]};
//
//int meterlist[9]= {full[0], full[1], full[2], full[3], full[4], full[5], full[6], full[7], full[8]};
//int meterlist2[9] = {full[17], full[16], full[15], full[14], full[13], full[12], full[11], full[10], full[9]};
//int meterlist3[9] = {full[18], full[19], full[20], full[21], full[22], full[23], full[24], full[25], full[26]};
int meterlist[9]= {full[2], full[3], full[8], full[9], full[14], full[15], full[20], full[21], full[26]};
int meterlist2[9] = {full[1], full[4], full[7], full[10], full[13], full[16], full[19], full[22], full[25]};
int meterlist3[9] = {full[0], full[5], full[6], full[11], full[12], full[17], full[18], full[23], full[24]};
//int meterlist[9]= {full[0], full[6], full[12], full[18], full[5], full[11], full[17], full[23], full[26]};
//int meterlist2[9] = {full[1], full[7], full[13], full[19], full[4], full[10], full[16], full[22], full[26]};
//int meterlist3[9] = {full[2], full[8], full[14], full[20], full[3], full[9], full[15], full[21], full[26]};
//map to 9
//int meterlist[9]= {full[0], full[1], full[2], full[3], full[4], full[5], full[6], full[7], full[8]};
//int meterlist2[9]= {full[0], full[1], full[2], full[3], full[4], full[5], full[6], full[7], full[8]};
//int meterlist3[9]= {full[0], full[1], full[2], full[3], full[4], full[5], full[6], full[7], full[8]};
//int meterlist[9]= {full[26], full[16], full[14], full[4], full[2], full[8], full[10], full[20], full[22]};
//int meterlist2[9] = {full[24], full[18], full[12], full[6], full[0], full[6], full[12], full[18], full[24]};
//int meterlist3[9] = {full[22], full[20], full[10], full[8], full[2], full[4], full[14], full[16], full[26]};
//multiplex drawing.
if (millis() - timer < muxInterval) { timer = millis(); mux++; if (mux > 2){
mux = 0;
}
for (int i = 0; i <=8; i++){
SoftPWMSet(colpins[i], 0);
} digitalWrite(rowpins[0], LOW);
digitalWrite(rowpins[1], LOW);
digitalWrite(rowpins[2], LOW);
if (mux == 0) { for (int i = 8; i >= 0; i--) {
if (meterlist[i] == 1){
SoftPWMSet(colpins[i], power, true);
digitalWrite(rowpins[0], HIGH);
}
}
}
if (mux == 1) {
for (int i = 8; i >= 0; i--) {
if (meterlist2[i] == 1){
SoftPWMSet(colpins[i], power, true);
digitalWrite(rowpins[1], HIGH);
}
}
}
if (mux == 2) {
for (int i = 8; i >= 0; i--) {
if (meterlist3[i] == 1){
SoftPWMSet(colpins[i], power, true);
digitalWrite(rowpins[2], HIGH);
}
}
}
}
}
Adjusting Your Mouse Sensitivity
by Dave Johnson
Before we get started, it’s a good idea to backup your Windows registry. To do this click Start >> Run. Enter “regedit” without quotes into the box and select ok. When the Registry Editor Window opens, make sure “My Computer” is selected and click File >> Export. Name and save the file in case you have to restore it.
Now let’s edit the Sensitivity of your mouse.
Navigate to HKEY_CURRENT_USER\Control Panel\Desktop
Find the values DragHeight and DragWidth. If they are not there then go ahead and create them as a “New String Value” (REG_SZ). The default values should be set to 4. To reduce the sensitivity, change the number to a higher value like 10. To increase sensitivity, change the number to a smaller value like 1.
How to: Make an animated GIF from a video
by Dave Johnson
Making an animated gif is not as hard as it looks to do this you’re going to need a few things. The first thing you’re going to need is Photoshop. In my tutorial I’ll be using Photoshop CS4. Next you’re going to need a video of some sort and you’re going to need QuickTime player for testing purposes. Also some Photoshop knoledge would be helpful.
[singlepic=131,500,425,,center]
1. You’re going to need to find out if your video will play in QuickTime. Why you ask? Well Photoshop uses QuickTime as its video player if your video won’t play in QuickTime then you may need a codec for it or the file might be a proprietary format (i.e., avi, wmp). In that case you will most likely need to convert the video to a .mov. I’ll explain how to do that in a later post. (more…)
Do you have USB 2.0?
by Dave Johnson
Do you have USB 2.0? There is a few ways to find out. If you plug in a new USB device and a message pops up saying “this device can perform faster” then you probably have USB 1.1, but that doesn’t mean all your USB ports are 1.1. To find out for sure if you have USB 2.0 fallow these steps
Select Start >> Control Panel >> System >> Hardware tab >> Device Manager
[singlepic=125,500,,center]