Welcome, Guest
Username: Password: Remember me

TOPIC: Example Asymmetric Distortion Video and Code

Example Asymmetric Distortion Video and Code 4 years 1 month ago #1373

  • Ray
  • Ray's Avatar
  • Moderator
  • Posts: 702
  • Thank you received: 152
  • Karma: 44
The video is here:

The code is here:
// Licensed under a Creative Commons Attribution 3.0 Unported License.
// Based on rcarduino.blogspot.com previous work.
// www.electrosmash.com/pedalshield
int in_ADC0, in_ADC1;  //variables for 2 ADCs values (ADC0, ADC1)
int POT0, POT1, POT2, out_DAC0, out_DAC1; //variables for 3 pots (ADC8, ADC9, ADC10)
const int LED = 3;
const int FOOTSWITCH = 7; 
const int TOGGLE = 2; 
int upper_threshold, lower_threshold;
void setup()
  //ADC Configuration
  ADC->ADC_MR |= 0x80;   // DAC in free running mode.
  ADC->ADC_CR=2;         // Starts ADC conversion.
  ADC->ADC_CHER=0x1CC0;  // Enable ADC channels 0,1,8,9 and 10  
  //DAC Configuration
  analogWrite(DAC0,0);  // Enables DAC0
  analogWrite(DAC1,0);  // Enables DAC1
  //pedalSHIELD pin configuration
  pinMode(LED, OUTPUT);  
void loop()
  //Turn on the LED if the effect is ON.
  if (digitalRead(FOOTSWITCH)) digitalWrite(LED, HIGH); 
    else  digitalWrite(LED, LOW);
  //Read the ADCs
  while((ADC->ADC_ISR & 0x1CC0)!=0x1CC0);// wait for ADC 0, 1, 8, 9, 10 conversion complete.
  in_ADC0=ADC->ADC_CDR[7];               // read data from ADC0
  in_ADC1=ADC->ADC_CDR[6];               // read data from ADC1  
  POT0=ADC->ADC_CDR[10];                 // read data from ADC8        
  POT1=ADC->ADC_CDR[11];                 // read data from ADC9   
  POT2=ADC->ADC_CDR[12];                 // read data from ADC10     
  if(in_ADC0>upper_threshold)  in_ADC0=upper_threshold;
  if(in_ADC0<lower_threshold)  in_ADC0=lower_threshold;
  if(in_ADC1<upper_threshold) in_ADC1=upper_threshold;
  if(in_ADC1>lower_threshold)  in_ADC1=lower_threshold;
  //adjust the volume with POT2
//flip the signal with the toggle switch
  if (digitalRead(TOGGLE)) {out_DAC0=4095 - out_DAC0; out_DAC1=4095 - out_DAC1; }
  //Write the DACs
  dacc_set_channel_selection(DACC_INTERFACE, 0);       //select DAC channel 0
  dacc_write_conversion_data(DACC_INTERFACE, out_DAC0);//write on DAC
      dacc_set_channel_selection(DACC_INTERFACE, 1);       //select DAC channel 1
  dacc_write_conversion_data(DACC_INTERFACE, out_DAC1);//write on DAC
Last Edit: 4 years 1 month ago by Ray.
The administrator has disabled public write access.
Time to create page: 0.143 seconds
Powered by Kunena Forum
Joomla SEF URLs by Artio