I make a Arduino Signal Generator that build on protoshield.
The principle of this signal generator is like a 8bit DAC, so just need some resistors everyone can build it on Arduino . I make a prototype on the Arduino prototype shield :
The schematic is very sample .Note that one thing, the higher precision resistors you used , the better effect.
How to write the code ? On the contrary of using a ADC , the same 8bit for a voltage express, 0xFF means 5V(Depend on your I/0 voltage level) and 0×00 means 0V, VCC divided into 256 , each represents a voltage value.
For the sine wave , we could build a voltage table for the waveform , divided a cycle into 256 :
unsigned char sin_tab [256] = {
127,130,133,136,139,142,145,148,151,154,157,160,164,166,169,172,175,178,181,184,187,189,192,195,
197,200,202,205,207,210,212,214,217,219,221,223,225,227,229,231,232,234,236,237,239,240,242,243,
244,245,246,247,248,249,250,251,251,252,252,253,253,253,253,253,254,253,253,253,253,252,252,251,
251,250,249,249,248,247,246,245,243,242,241,239,238,236,235,233,231,230, 228,226,224,222,220,218,
215,213,211,209,206,204,201,199,196,193,191,188,185,182,180,177,174,171,168,165,162,159,156,153,
150,147,144,141,137,134,131,128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,79,76,
73,71,68,65,62,60,57,54,52,49,47,44,42,40,38,35,33,31,29,27,25,23,22,20,18,17,15,14,
12,11,10,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,0,0,1,1,2,2,3,4,5,6,7,8,9,10,11,13,14,16,17,19,21,22,24,
26,28,30,32,34,36,39,41,43,46,48,51,53,56,58,61,64,66,69,72,75,78,81,84,87,89,93,96,
99,102,105,108,111,114,117,120,123,127};
Of cause , it can be divided it into 512,1024, the more subdivision the better effect.
void setup()
{
DDRD =0xFF;
}
void loop()
{
for (int i=0;i<256;i++)
PORTD=sin_tab[i]
}
void setup()
{
DDRD =0xFF;
}
void loop()
{
for (int i=0;i<256;i++)
PORTD=i;
}
void setup()
{
DDRD =0xFF;
}
void loop()
{
PORTD=0xFF;
delayMicroseconds(100);
PORTD=0;
delayMicroseconds(100);
}
Another Interesting waveform generated by this shield
More about this gadgets :
http://iteadstudio.com/application-note/arduino-signal-generator-build-on-protoshield
http://iteadstudio.com/iforum/viewtopic.php?f=18&t=19&p=34#p34