aboutsummaryrefslogtreecommitdiffstats
path: root/src/audio_test/audio_test.pde
blob: f52d84a558dd7e1de3f3b35c87c3980396c7965c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
 * SQRLS Audio Test
 */

int speakerOnePin = 5;
int speakerTwoPin = 6;
int volumePin = 9;
int motionSensorPin = 7;
int b = 0;
int bb = 0;

void setup() {

  pinMode(motionSensorPin, INPUT);
  pinMode(speakerOnePin, OUTPUT);
  pinMode(speakerTwoPin, OUTPUT);
  pinMode(volumePin, OUTPUT);
  // Set pins 5&6 to a 62500Hz PWM clock
  TCCR0B = TCCR0B & 0b11111000 | 0x01;
  TCCR1B = TCCR1B & 0b11111000 | 0x01;

}

void loop(){
  //THIS IS THE ACTUAL LOOP OF THE SQUIRREL APPARATUS
  //barker(random(3));
  analogWrite(volumePin,12);
  caw(300);
}

// Caw sound. eg, 
// caw(1000);
// delay(200000);
void caw(int ll) {
  for(int j=1800; j<1900; j+=1000/ll) {
    if(j<1816){
      analogWrite(volumePin,(j-1815)*4/5+12);
    }
    if(j>1875){
      analogWrite(volumePin,(1875-j)/4+12);
    }
    b++;
    if (b==10){
      bb=1;
      b=0;
    }
    sawWave(j/8+500*bb+random(10));
    bb=0;
  }
}


// Bark sound. eg, 
// barker(random(3));
void barker(int num) {
 for(int u=0;u<num;u++){
 bark(random(50,80)^2/100);
 delay(random(50000,200000)^2/100000);
 }
}
void bark(int ll) {
  
  for(int j=500; j>200; j-=3000/ll) {
    sawWave(j+random(50));
  }

}

// Generic triangle wave sound
void triangleWave(int len) {
  
  for(int i = 0; i < len; i++)  {
    analogWrite(speakerOnePin, i*255/len);
  }
  for(int i = 0; i < len; i++)  {
    analogWrite(speakerOnePin, 255 - i*255/len);
  }
}

// Generic saw wave sound
void sawWave(int len) {
  for(int i = 0; i < len; i++)  {
    analogWrite(speakerOnePin, i);
  }
}