1
2
14
15#include <NewPing.h>
16#include <TonePlayer.h>
17#define MIN_DISTANCIA 35
18TonePlayer tone1(TCCR1A, TCCR1B, OCR1AH, OCR1AL, TCNT1H, TCNT1L);
19
20NewPing sonar(10, 11, 35);
21
22
23int echo = 12;
24int trigger = 13;
25int INC = 2;
26int UD = 3;
27int distancia;
28int actual, anterior;
29
30unsigned long tiempoRespuesta;
31float distancia2;
32float tono1;
33
34void setup() {
35
36Serial.begin(9600);
37pinMode(trigger, OUTPUT);
38pinMode(echo, INPUT);
39pinMode(2, OUTPUT);
40pinMode(3, OUTPUT);
41
42
43for(int j=0; j<90; j++){
44 decremento();
45 }
46
47}
48
49void loop() {
50
51 digitalWrite(trigger, HIGH);
52 delayMicroseconds(10);
53 digitalWrite(trigger, LOW);
54 tiempoRespuesta = pulseIn(echo, HIGH);
55 distancia2 = tiempoRespuesta/58;
56
57 if (distancia2 < MIN_DISTANCIA) {
58
59 tono1 = 50.0*pow(2,(distancia2/12.0));
60 pinMode(9, OUTPUT);
61 tone1.tone(tono1);
62 delay(10);
63 }
64
65distancia = sonar.ping_cm();
66Serial.print(distancia);
67
68actual = map(distancia, 0, 35, 0, 200);
69
70
71if(actual > anterior){
72 for(int i = 0; i< (actual - anterior); i++){
73 decremento();
74 }
75}
76
77else{
78 for(int i = 0; i <= (anterior - actual); i++)
79 {
80 aumento();
81 }
82}
83
84anterior = actual;
85delay(1);
86
87
88}
89
90
91
92
93
94void aumento(){
95digitalWrite(UD, HIGH);
96digitalWrite(INC, LOW);
97digitalWrite(INC, HIGH);
98delay(10);
99digitalWrite(INC, LOW);
100}
101
102void decremento(){
103digitalWrite(UD, LOW);
104digitalWrite(INC, LOW);
105digitalWrite(INC, HIGH);
106delay(10);
107digitalWrite(INC, LOW);
108}
109