From dc007bceb5c3ca56af2aad1c346033d3801d1c76 Mon Sep 17 00:00:00 2001 From: Mike Lynch Date: Sun, 6 Oct 2024 16:01:04 +1100 Subject: [PATCH] Added 06 --- 06Degrading/06Degrading.ino | 116 ++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 06Degrading/06Degrading.ino diff --git a/06Degrading/06Degrading.ino b/06Degrading/06Degrading.ino new file mode 100644 index 0000000..bbac5ff --- /dev/null +++ b/06Degrading/06Degrading.ino @@ -0,0 +1,116 @@ +//waveform generator + +// hacked from https://www.instructables.com/Arduino-Waveform-Generator-1/ + +#include +#include + +Adafruit_MCP4728 mcp; + +#define nsamp 16 +#define dacmax 256 + +const byte nclk = 200; // a guess +long int freq; //frequency in Hz +long unsigned int phase; +long unsigned int phase_inc; + +int note = 0; +int d = 0; + +float pattern[16]; + +long unsigned int pattern_inc[4]; + +void setup() { + TIMSK0 &= ~_BV(TOIE0); // disable timer0 overflow interrupt + + cli(); + +//set timer1 interrupt at 1Hz + TCCR1A = 0;// set entire TCCR1A register to 0 + TCCR1B = 0;// same for TCCR1B + TCNT1 = 0;//initialize counter value to 0 + // set compare match register for 1hz increments + //OCR1A = 3905;// = (16*10^6) / (1*1024) - 1 (must be <65536) + OCR1A = 9000;; + // turn on CTC mode + TCCR1B |= (1 << WGM12); + // Set CS10 and CS12 bits for 1024 prescaler + TCCR1B |= (1 << CS12) | (1 << CS10); + // enable timer compare interrupt + TIMSK1 |= (1 << OCIE1A); + + sei(); + + + Serial.begin(115200); + + if (!mcp.begin(0x64)) { + while (1) { + delay(100); + } + } + +// mcp.setSpeed(400000L); +// mcp.setSpeed(800000L); + mcp.setSpeed(800000L); + + freq=440; + phase=0; + + pattern[0] = 220.0; + pattern[1] = 220.0 * 4.0 / 3.0; + pattern[2] = 220.0 * 3.0 / 2.0; + pattern[3] = 220.0 * 5.0 / 4.0; + + + for( int i = 0; i < 4; i++ ) { + pattern_inc[i] = pattern[i] * 975592.231884058; + } + randomSeed(analogRead(1)); + setwave(); +} + +const float pi=3.14159265; +byte waveform[nsamp]; +byte phaseb = 0; +void setwave(){ + for (int isamp=0; isamp> 27; + mcp.fastWrite(waveform[redphase] << 4, 0, 0, 0); +} +