1
2
3
4
5
6
7
8 *
9 */
10
11#include <NewTone.h>
12#include <NewPing.h>
13#include <SPI.h>
14#define MIN_DISTANCE 35
15
16NewPing sonar(5, 6, 35);
17
18
19
20
21
22byte address = 0x00;
23int CS= 10;
24
25int echo = 3;
26int trigger = 4;
27
28int distance;
29int PotValue;
30
31unsigned long TimeResponse;
32float distance2;
33float tone1;
34
35void setup() {
36
37Serial.begin(9600);
38pinMode(trigger, OUTPUT);
39pinMode(echo, INPUT);
40pinMode (CS, OUTPUT);
41SPI.begin();
42
43
44digitalPotWrite(255);
45for (int i = 50; i <= 400; i++)
46{
47pinMode(9, OUTPUT);
48 NewTone(9,i);
49 delay(10);
50}
51delay(500);
52for (int i = 400; i >= 50; i--)
53{
54pinMode(9, OUTPUT);
55 NewTone(9,i);
56 delay(10);
57}
58
59
60}
61
62void loop() {
63
64 digitalWrite(trigger, HIGH);
65 delayMicroseconds(10);
66 digitalWrite(trigger, LOW);
67 TimeResponse = pulseIn(echo, HIGH);
68 distance2 = TimeResponse/58;
69
70
71 if (distance2 < MIN_DISTANCE) {
72
73 tone1 = 50.0*pow(2,(distance2/12.0));
74 pinMode(9, OUTPUT);
75 NewTone(9,tone1);
76 }
77 else {
78 pinMode(9, OUTPUT);
79 NewTone(9,400);
80 }
81
82distance = sonar.ping_cm();
83
84
85
86int PotValue = map(distance, 0, 35, 240, 255);
87
88if (distance == 0)
89{
90 PotValue = 255;
91}
92
93digitalPotWrite(PotValue);
94delay(10);
95
96
97}
98
99int digitalPotWrite(int value)
100{
101digitalWrite(CS, LOW);
102SPI.transfer(address);
103SPI.transfer(value);
104digitalWrite(CS, HIGH);
105
106
107}
108