Skip to content

Commit f0e766b

Browse files
Added buzzer and led diagnostics
1 parent e5ad454 commit f0e766b

File tree

8 files changed

+261
-186
lines changed

8 files changed

+261
-186
lines changed

beachRover-v1-arduino/beachRover-v1-arduino.ino

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
#include "motor_driver.h"
21
#include<SR04.h>
2+
#include<Wire.h>
3+
4+
#include "motor_driver.h"
35
#include "robot.h"
46
#include "QMC5883L-offset.h"
5-
#include<Wire.h>
67

78
#define TRIG_PIN 8
89
#define ECHO_PIN 7
@@ -13,6 +14,7 @@
1314

1415
SR04 sr04 = SR04(ECHO_PIN, TRIG_PIN);
1516

17+
1618
//MechaQMC5883 qmc;
1719
QMC5883L compass;
1820

@@ -47,34 +49,38 @@ void right_encoder_update() {
4749

4850
void setup() {
4951

52+
// Initialize I2C and Serial port
5053
Wire.begin();
51-
// Serial.begin(9600);
54+
Serial.begin(9600);
5255

5356
// Magnetometer
5457
compass.init(2666,120,0);
5558
compass.setMode(Mode_Continuous,ODR_100Hz,RNG_2G,OSR_512);
5659

57-
5860
//pinModes
5961
pinMode(LEFT_INPUT_1, OUTPUT);
6062
pinMode(LEFT_INPUT_2, OUTPUT);
6163
pinMode(RIGHT_INPUT_1, OUTPUT);
6264
pinMode(RIGHT_INPUT_2, OUTPUT);
63-
// pinMode(17,OUTPUT);
64-
pinMode(14,OUTPUT);
65+
pinMode(GREEN_LED,OUTPUT);
66+
pinMode(YELLOW_LED,OUTPUT);
6567
pinMode(LED_BUILTIN, OUTPUT);
68+
6669
//encoder interrupts
6770
attachInterrupt(digitalPinToInterrupt(2), left_encoder_update, RISING);
6871
attachInterrupt(digitalPinToInterrupt(3), right_encoder_update, RISING);
6972

73+
// test buzzer and LED
74+
run_diagnostics();
75+
7076
}
7177

7278
double kalman(double prev_value, double new_value, double ratio) {
7379
return (prev_value * ratio) + (new_value * (1 - ratio));
7480
}
7581

7682
void loop() {
77-
// test_leds();
83+
7884
int x, y, z;
7985
compass.read(&x, &y, &z);
8086
float heading = atan2(y, x);

beachRover-v1-arduino/pitches.h

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*************************************************
2+
* Pitches
3+
*************************************************/
4+
5+
#define NOTE_B0 31
6+
#define NOTE_C1 33
7+
#define NOTE_CS1 35
8+
#define NOTE_D1 37
9+
#define NOTE_DS1 39
10+
#define NOTE_E1 41
11+
#define NOTE_F1 44
12+
#define NOTE_FS1 46
13+
#define NOTE_G1 49
14+
#define NOTE_GS1 52
15+
#define NOTE_A1 55
16+
#define NOTE_AS1 58
17+
#define NOTE_B1 62
18+
#define NOTE_C2 65
19+
#define NOTE_CS2 69
20+
#define NOTE_D2 73
21+
#define NOTE_DS2 78
22+
#define NOTE_E2 82
23+
#define NOTE_F2 87
24+
#define NOTE_FS2 93
25+
#define NOTE_G2 98
26+
#define NOTE_GS2 104
27+
#define NOTE_A2 110
28+
#define NOTE_AS2 117
29+
#define NOTE_B2 123
30+
#define NOTE_C3 131
31+
#define NOTE_CS3 139
32+
#define NOTE_D3 147
33+
#define NOTE_DS3 156
34+
#define NOTE_E3 165
35+
#define NOTE_F3 175
36+
#define NOTE_FS3 185
37+
#define NOTE_G3 196
38+
#define NOTE_GS3 208
39+
#define NOTE_A3 220
40+
#define NOTE_AS3 233
41+
#define NOTE_B3 247
42+
#define NOTE_C4 262
43+
#define NOTE_CS4 277
44+
#define NOTE_D4 294
45+
#define NOTE_DS4 311
46+
#define NOTE_E4 330
47+
#define NOTE_F4 349
48+
#define NOTE_FS4 370
49+
#define NOTE_G4 392
50+
#define NOTE_GS4 415
51+
#define NOTE_A4 440
52+
#define NOTE_AS4 466
53+
#define NOTE_B4 494
54+
#define NOTE_C5 523
55+
#define NOTE_CS5 554
56+
#define NOTE_D5 587
57+
#define NOTE_DS5 622
58+
#define NOTE_E5 659
59+
#define NOTE_F5 698
60+
#define NOTE_FS5 740
61+
#define NOTE_G5 784
62+
#define NOTE_GS5 831
63+
#define NOTE_A5 880
64+
#define NOTE_AS5 932
65+
#define NOTE_B5 988
66+
#define NOTE_C6 1047
67+
#define NOTE_CS6 1109
68+
#define NOTE_D6 1175
69+
#define NOTE_DS6 1245
70+
#define NOTE_E6 1319
71+
#define NOTE_F6 1397
72+
#define NOTE_FS6 1480
73+
#define NOTE_G6 1568
74+
#define NOTE_GS6 1661
75+
#define NOTE_A6 1760
76+
#define NOTE_AS6 1865
77+
#define NOTE_B6 1976
78+
#define NOTE_C7 2093
79+
#define NOTE_CS7 2217
80+
#define NOTE_D7 2349
81+
#define NOTE_DS7 2489
82+
#define NOTE_E7 2637
83+
#define NOTE_F7 2794
84+
#define NOTE_FS7 2960
85+
#define NOTE_G7 3136
86+
#define NOTE_GS7 3322
87+
#define NOTE_A7 3520
88+
#define NOTE_AS7 3729
89+
#define NOTE_B7 3951
90+
#define NOTE_C8 4186
91+
#define NOTE_CS8 4435
92+
#define NOTE_D8 4699
93+
#define NOTE_DS8 4978

beachRover-v1-arduino/robot.cpp

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
#include<Arduino.h>
12
#include "robot.h"
3+
#include "pitches.h"
24

35
boolean on = true;
46

@@ -10,11 +12,94 @@ void indicate_led(LED light, boolean on) {
1012
}
1113
}
1214

13-
void test_leds() {
15+
16+
17+
void flash_leds(){
1418
indicate_led(YELLOW_LED, true);
1519
indicate_led(GREEN_LED, false);
1620
delay(500);
1721
indicate_led(YELLOW_LED, false);
1822
indicate_led(GREEN_LED, true);
1923
delay(500);
24+
indicate_led(YELLOW_LED, false);
25+
indicate_led(GREEN_LED, false);
26+
}
27+
28+
void test_leds() {
29+
for(int i=0;i<3;i++){
30+
flash_leds();
31+
}
32+
}
33+
34+
35+
//Mario main theme melody
36+
int mario[] = {
37+
NOTE_E7, NOTE_E7, 0, NOTE_E7,
38+
0, NOTE_C7, NOTE_E7, 0,
39+
NOTE_G7, 0, 0, 0
40+
};
41+
42+
//Mario main them tempo
43+
int mario_tempo[] = {
44+
12, 12, 12, 12,
45+
12, 12, 12, 12,
46+
12, 12, 12, 12,
47+
12, 12, 12, 12,
48+
49+
12, 12, 12, 12,
50+
12, 12, 12, 12,
51+
12, 12, 12, 12,
52+
12, 12, 12, 12,
53+
54+
9, 9, 9,
55+
12, 12, 12, 12,
56+
12, 12, 12, 12,
57+
12, 12, 12, 12,
58+
59+
12, 12, 12, 12,
60+
12, 12, 12, 12,
61+
12, 12, 12, 12,
62+
12, 12, 12, 12,
63+
64+
9, 9, 9,
65+
12, 12, 12, 12,
66+
12, 12, 12, 12,
67+
12, 12, 12, 12
68+
};
69+
70+
void buzz(int targetPin, long frequency, long length) {
71+
// analogWrite(GREEN_LED, 255);
72+
long delayValue = 1000000 / frequency / 2;
73+
74+
long numCycles = frequency * length / 1000;
75+
76+
for (long i = 0; i < numCycles; i++) { // for the calculated length of time...
77+
digitalWrite(targetPin, HIGH); // write the buzzer pin high to push out the diaphram
78+
delayMicroseconds(delayValue); // wait for the calculated delay value
79+
digitalWrite(targetPin, LOW); // write the buzzer pin low to pull back the diaphram
80+
delayMicroseconds(delayValue); // wait again or the calculated delay value
81+
}
82+
// analogWrite(GREEN_LED, 0);
83+
84+
}
85+
86+
void sing(int song[],int song_length, int* tempo) {
87+
88+
Serial.print("Size of song");
89+
Serial.println(song_length);
90+
for (int thisNote = 0; thisNote < song_length; thisNote++) {
91+
int noteDuration = 1000 / tempo[thisNote];
92+
buzz(BUZZER, song[thisNote], noteDuration);
93+
int pauseBetweenNotes = noteDuration * 1.30;
94+
delay(pauseBetweenNotes);
95+
buzz(BUZZER, 0, noteDuration);
96+
}
97+
}
98+
99+
100+
void run_diagnostics() {
101+
pinMode(BUZZER, OUTPUT);//buzzer
102+
pinMode(GREEN_LED, OUTPUT);//led indicator when singing a note
103+
sing(mario,sizeof(mario)/sizeof(mario[0]), mario_tempo);
104+
test_leds();
20105
}

beachRover-v1-arduino/robot.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
#endif
44
#include<Arduino.h>
55

6+
#define BUZZER 5
7+
68
enum LED{
79
GREEN_LED=17,
810
YELLOW_LED=14
911
};
1012

1113
void indicate_led(LED led,boolean on);
1214
void test_leds();
15+
void run_diagnostics();

0 commit comments

Comments
 (0)