-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMusic Library.ino
106 lines (90 loc) · 2.63 KB
/
Music Library.ino
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <TFT.h> // Arduino LCD library
#include <SPI.h>
// pin definition for the Uno/nano
#define cs 10
#define dc 9
#define rst 8
// create an instance of the library
TFT TFTscreen = TFT(cs, dc, rst);
// char array to print to the screen
char rc_Printout[4];
void setup()
{
servo.attach(6); //D6 pin as Servo signal
pinMode( 2, OUTPUT );
pinMode( 3, INPUT );
Serial.begin( 9600 );
TFTscreen.begin();
TFTscreen.background(0, 0, 0);
}
void loop()
{
int r_beam = 100; //D6 pin as Servo signal
TFTscreen.stroke(255, 255, 255);
TFTscreen.circle(80,128,r_beam+2);
TFTscreen.setTextSize(2);
TFTscreen.text("Dist(cm)", 0, 0);
//Right rotation
for (int i=0;i<180;i=i+1){
servo.write(i);
measure_dist();
Serial.print(i);
Serial.print("\n");
delay(20);
int r = distance*2;
String r_Printout = String(r/2);
TFTscreen.stroke(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text(rc_Printout, 100, 0);
r_Printout.toCharArray(rc_Printout, 4);
TFTscreen.stroke(255, 255, 255);
TFTscreen.setTextSize(2);
TFTscreen.text(rc_Printout, 100, 0);
TFTscreen.stroke(70, 70, 70);
TFTscreen.line(80,128,80+r_beam*cos((360-i)*3.14/180), 128+r_beam*sin((360-i)*3.14/180));
TFTscreen.stroke(0, 255, 0);
TFTscreen.circle(80+r*cos((360-i)*3.14/180), 128+r*sin((360-i)*3.14/180), 2);
}
TFTscreen.background(0, 0, 0);
TFTscreen.stroke(255, 255, 255);
TFTscreen.circle(80,128,r_beam+2);
TFTscreen.setTextSize(2);
TFTscreen.text("Dist(cm)", 0, 0);
//Left rotation
for (int i=180;i>0;i=i-1){
servo.write(i);
measure_dist();
Serial.print(i);
Serial.print("\n");
delay(20);
int r = distance*2;
String r_Printout = String(r/2);
TFTscreen.stroke(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text(rc_Printout, 100, 0);
r_Printout.toCharArray(rc_Printout, 4);
TFTscreen.stroke(255, 255, 255);
TFTscreen.setTextSize(2);
TFTscreen.text(rc_Printout, 100, 0);
TFTscreen.stroke(70, 70, 70);
TFTscreen.line(80,128,80+r_beam*cos((360-i)*3.14/180), 128+r_beam*sin((360-i)*3.14/180));
TFTscreen.stroke(0, 255, 0);
TFTscreen.circle(80+r*cos((360-i)*3.14/180), 128+r*sin((360-i)*3.14/180), 2);
}
TFTscreen.background(0, 0, 0);
}
void measure_dist()
{
Serial.read();
// pulse !
digitalWrite( 2, HIGH );
delayMicroseconds( 100 );
digitalWrite( 2, LOW );
// mesure the interval
interval = pulseIn( 3, HIGH );
distance = interval * 0.017; // cm
Serial.print( interval, DEC );
Serial.print( "\t" );
Serial.print( distance, 1 );
Serial.print( "\n" );
}