Show Posts
Pages: 1 2 [3]
31  Forum 2005-2010 (read only) / Exhibition / Re: Graphic LCD shield with EA DOGS102W display on: November 28, 2010, 02:51:00 pm
Can you make the analog gauge code available?
32  Forum 2005-2010 (read only) / Exhibition / Re: My first project - Christmas Light Controller on: December 25, 2010, 02:02:48 am
I built it as you described with two channels of a cn4pc.com relay board and it worked just fine. Thanks.
33  Forum 2005-2010 (read only) / Exhibition / Re: 1khz Sine Wave Generator on: December 29, 2008, 12:15:00 pm
Richard Cappels explains how this work pretty well on the web site referenced at the beginning of my original post.
34  Forum 2005-2010 (read only) / Exhibition / 1khz Sine Wave Generator on: April 14, 2008, 12:07:23 pm
At  http://www.projects.cappels.org Mr. Cappels has many AVR based projects. I was interested in his latest, a  1khz sine wave generator. I ported his C version to the AVR and was able to achieve a nice digital sine wave with 6 bit resolution and a 1.007khz frequency. I used a 6 bit R2R DAC off of PORTD to make it easier. I used his basic schematic http://www.isarapix.org/pix95/1208149627.gif for the DAC. His project is at http://www.cappels.org/dproj/1_kHz_Signal_Source/1_KHz_Sine_Wave_Generator.html
Timer2 interrupts are used to cycle through the sine table at the frequency of interest.


 /*
  Copyright 2007 Richard Cappels used with his permission
  www.projects.cappels.org
  This assumes an R/2R DAC (or other DAC) connected to PORTD, and
  Arduino 16mhz clock
  The frequency measured at the output of the DAC is 1.007 kHz.
  ported to arduino by hotcarrier
  output to pd7-pd2 with 6 bits- needs high order pd7 to work
  correctly
  */

 #include <avr/interrupt.h>
 #include <stdlib.h>

 char sinetable [32];
 int  i ;

 void ioinit (void)
 {
   //Initialize output ports
   PORTD = B11111111;
   DDRD  = B11111111;

 }

 void timer_setup(){
   TCCR2A = 0;
   TCNT2=455;    //455 outputs 1.007khz
   TCCR2B = B00000010;
   //Timer2 Overflow Interrupt Enable
   TIMSK2 = 1<<TOIE2;
 }
 void setup(){          

   ioinit();
   arraysetup();
   cli();
   timer_setup();
   i = 0;
   sei();

}


 ISR(TIMER2_OVF_vect) {

   PORTD=(sinetable[i++]);
   TCNT2=455;
   if(i==32){
     i=0;
   }

 }
 void arraysetup(void){
   sinetable[0]=127;  // Put 32 step 8 bit sine table into array.
   sinetable[1]=152;
   sinetable[2]=176;
   sinetable[3]=198;
   sinetable[4]=217;
   sinetable[5]=233;
   sinetable[6]=245;
   sinetable[7]=252;
   sinetable[8]=254;
   sinetable[9]=252;
   sinetable[10]=245;
   sinetable[11]=233;
   sinetable[12]=217;
   sinetable[13]=198;
   sinetable[14]=176;
   sinetable[15]=152;
   sinetable[16]=128;
   sinetable[17]=103;
   sinetable[18]=79;
   sinetable[19]=57;
   sinetable[20]=38;
   sinetable[21]=22;
   sinetable[22]=10;
   sinetable[23]=3;
   sinetable[24]=0;
   sinetable[25]=3;
   sinetable[26]=10;
   sinetable[27]=22;
   sinetable[28]=38;
   sinetable[29]=57;
   sinetable[30]=79;
   sinetable[31]=103;
 }
void loop()
 {

   while (1)
   {

   }

}
35  Forum 2005-2010 (read only) / Exhibition / Re: My stab at an Arduino Synth on: October 01, 2007, 05:21:55 pm
Hi Paul;

I looked at your synth code but it does not compile as listed. It appears to me that in  several places you call functions which are not there. Could you elucidate on this listing a little?
36  Forum 2005-2010 (read only) / Exhibition / Re: Performance on: April 02, 2008, 07:43:41 pm
True, but what is so nice, at least to my eyes,  is to be able to achieve this performance with just the Arduino programming environment as it is offered.
37  Forum 2005-2010 (read only) / Exhibition / Performance on: April 02, 2008, 04:54:35 pm
While working on a disciplined clock, I decided to check the interrupt response times. I was amazed. With the following code, which does not do a lot of work in either the loop or the interrupt service routine, I was  able to send interrupts at a 10Khz input rate and see the loop run fine. Much superior performance to what I expected. I enjoy this environment.


//works to 20khz interrupt rate and still services the loop

#include <avr/interrupt.h>  
int state = LOW;

void setup()
{
  pinMode(7,OUTPUT);
  pinMode(13,OUTPUT);
  attachInterrupt(0, intin, FALLING);
  Serial.begin(9600);
}

void loop()
{
  delay(200);
  state=!state;
  digitalWrite(13,state);
  Serial.println("through the loop");
}

void intin()
{
  state=!state;      
  digitalWrite(7,state);    //pin 7 toggles at half input frequency

}  
38  Forum 2005-2010 (read only) / Frequently-Asked Questions / Re: Mood Light on: May 03, 2008, 07:07:18 pm
It seems to me that you are randomly selecting a maximum of two pins to vary their pwm value in your loop and then looping again. As in the CrossFader program you tried, don't randomize the pin you select, but randomize  a different pwm value on all three pins consecutively in each loop to get the effect you are looking for.
Pages: 1 2 [3]