Repository navigation
Melodija: iPhone
diko-p edited this page Aug 26, 2018
·
9 revisions
Robot zaigra iPhone Opening zvonenje. Piska s pomočjo piezo brenčala, ki je na sliki obkrožen z rdečo.
Na začetku programa so definirani vektorji, ki vsebujejo frekvence not v različnih oktavah. Zapis c[4] pomeni, c nota v četrti oktavi. Pod vektorji sta definirani izbrana oktava in tempo melodije.
V void.setup() program čaka na pritisk funkcijskega gumba, ki je na sliki obkrožen z zeleno.
V void.loop() je del programa, ki povzroča piskanje. V ta namen je uporabljena funkcija robot.beep(), kjer definiramo frekvenco in trajanje piska. Za premore med piski pa je uporabljena funkcija delay().
#include <Robot.h>
//note od 0. do 8. oktave
int c[9] = {16, 33, 65, 131, 262, 523, 1047, 2093, 4186}; //c nota
int c_s[9] = {17, 35, 69, 139, 277, 554, 1109, 2217, 4435}; //c# nota
int d[9] = {18, 37, 73, 147, 294, 588, 1175, 2349, 4699}; //d nota
int d_s[9] = {20, 39, 78, 156, 311, 622, 1245, 2489, 4978}; //d# nota
int e[9] = {21, 41, 82, 165, 330, 659, 1319, 2637, 5274}; //e nota
int f[9] = {22, 44, 87, 175, 349, 699, 1397, 2794, 5588}; //f nota
int f_s[9] = {23, 46, 93, 185, 370, 740, 1480, 2960, 5920}; //f# nota
int g[9] = {25, 49, 98, 196, 392, 784, 1568, 3136, 6272}; //g nota
int g_s[9] = {26, 52, 104, 208, 415, 831, 1661, 3322, 6645}; //g# nota
int a[9] = {28, 55, 110, 220, 440, 880, 1760, 3520, 7040}; //a nota
int a_s[9] = {29, 58, 117, 233, 466, 932, 1965, 3729, 7459}; // a# nota
int b[9] = {31, 62, 124, 247, 494, 988, 1976, 3951, 7902}; //b (oziroma h) nota
int octave = 4; //definira izbrano oktavo
int tempo = 2500; //definira tempo
void setup() {
while(!robot.buttonPressed()); //čaka na pritisk tipke
delay(250); //čaka 0.25 sekunde
}
void loop() {
robot.beep(g[octave], tempo/4);
robot.beep(g[octave], tempo/8);
robot.beep(a_s[octave], tempo/8);
robot.beep(c[octave+1], tempo/8);
robot.beep(c[octave+1], tempo/16);
robot.beep(a_s[octave], tempo/16);
robot.beep(g[octave], tempo/8);
robot.beep(c[octave+1], tempo/8);
robot.beep(f[octave], tempo/8);
robot.beep(c[octave+1], tempo/8);
robot.beep(a_s[octave], tempo/8);
robot.beep(c[octave+1], tempo/8);
robot.beep(f[octave], tempo/8);
delay(0.75*tempo);
}