Arduinoilla
voidaan muodostaa myös melodioita. Varsinaisen soittimen ominaisuuksia siitä ei
sinänsä löydy, mutta jotain yksinkertaista ja ehkä parhaimmillaan hälytys ja
huomiosignaaleja. Käytettävissä eri sävelkorkeuksien tuottamiseen ovat
käytettävissä ne pinnit, jotka tukevat analogialähtöinä (PWM). Pulssisuhde on
50% ja voimakkuutta ei voida suoraan säätää. Tämä koskee Arduinon digitaalilähtöä, mutta sen jälkeenhän
signaali voidaan johtaa säädettävään vahvistimeen. Jos haluaa leikkiä Ardulla,
voi voimakkuutta säätää esim. edellisen jakson LED / LDR-yhdistelmällä
kytkemällä valovastus sarjaan toisen vastuksen kanssa ja muuttamalla LDR:n
vastusarvoa valon voimakkuudella. Tämä toimii tavallaan potentiometrinä.
Normaalin potentiometrin voi tietysti kytkeä digitaalilähtöön ja säätää sillä
voimakkuutta.
Nyt on jo takana niin
monta kännykkäsukupolvea, että korvakuulokkeita on varmaankin jäänyt roikkumaan
laatikoihin. Ne käyvät sellaisenaan kytkettäväksi DO-pinniin. Ääni on aika
karkeaa, koska se on suorakulma, eli ns. kanttiaaltoa. Se sisältää runsaasti
harmonisia.
Alla sävelten taajuudet (Hz):
Alla sävelten taajuudet (Hz):
Kokonuotit: C = 262, D = 294,
E = 330, F = 349, G = 392, A =
440, H = 494
Ylennetyt; Cy = 277, Dy = 311, Fy = 370, Gy = 415, Ay = 466
Alennetut: Da = 277, Ea = 311, Ga = 370, Aa = 415, Ha = 466
Ylennetyt; Cy = 277, Dy = 311, Fy = 370, Gy = 415, Ay = 466
Alennetut: Da = 277, Ea = 311, Ga = 370, Aa = 415, Ha = 466
Tuo
vahvennettu nuotti on yksiviivainen A. Nyt joku tarkkakorva sanoo, että ei pidä
paikkaansa, ja on aivan oikeassa. Yllä olevat taajuudet on pyöristetty lähempää
kokonaislukuun, sillä käsky tone() käsittelee ainoastaan etumerkitöntä
integeriä (unsigned int). Oktaavit
alaspäin kohti bassoja saadaan jakamalla kunkin nuotin taajuus kahdella (2).
Vastaavasti oktaavi ylöspäin saadaan kertomalla aina edellisen oktaavin nuotit
kahdella.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAM8jLM8l2NdVcQW8kPcAMFowsb-8EjVZjHzaSyx2HgU_MH6pq3t-ihfwQGTXevAlILS8VuOInlcIDI5ETcOT9zaQbonLwVEhvjYnRU07mkn3nEg5hYlMFCXSWAr-jCIBRWtdMA7zMYKiv/s200/Sarja_2p.jpg)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlw5YjuCUsoylk1920JuEWBoUhwbQwiT4KZeKyxHDgwzdF2vthEwlGirB6acORLdZTRWIyhem4IoOvLh7bVeA_5Bl2ttktCqalK-GMgSQNXaPXMxncPCQzZi1lAhKdUOflCAPz94wxgACb/s200/Sarja_3mp.jpg)
Seuraavassa parin
kappaleen ohjelmat: Ensiksi monen nokkahuilistin ensimmäinen kappale ja toiseksi melodia elokuvasta Kummisetä. Ukko Noasta nousee esiin sekvenssin etu; samanlaisia jaksoja ei tarvitse kirjoittaa ohjelmaan moneen kertaan, vaan voi hyppiä ohjelmassa edestakaisin.
Ohjelma 16
/***************************************
*
Ohjelma_16
*
25.04.2016
*
UKKO NOA
**************************************/
// MÄÄRITTELYT:
// Nuotit
unsigned int Uin_C = 262; unsigned int Uin_D = 294;
unsigned int Uin_E = 330; unsigned int Uin_F =
349;
unsigned int Uin_G = 392; unsigned int Uin_A =
440;
unsigned int Uin_H = 494;
// Muut määrittelyt
int Int_Vali = 40; // Tauko
nuottien välissä
int Int_NV = 4; //
Nuotista toiseen väli
int Int_KokoNuotti = 1500;
//Kokonuotin kesto
const int Con_Pin = 3; // Pinni
mihin soitetaan
int Seq_UkkoNooa = 1;
boolean Bol_Kertaus = false;
// ASETUKSET:
void setup(){ //
Alustetaan muuttujat sekä määritellään I/O-tyyppi
Serial.begin(9600); // Alustetaan sarjaliikennne testiä
varten
}// Asetuksen loppu
// PÄÄLOOPPI Varsinainen
suoritusosa. Jatkuva suoritus
void loop(){
switch (Seq_UkkoNooa) {
case 1:
Fun_Soita(Uin_C, 4, 3); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 2:
Fun_Soita(Uin_E, 4, 1); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 3:
Fun_Soita(Uin_D, 4, 3); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 4:
Fun_Soita(Uin_F, 4, 1); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 5:
Fun_Soita(Uin_E, 4, 2); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 6:
Fun_Soita(Uin_D, 4, 2); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 7:
Fun_Soita(Uin_C, 1, 1); delay(Int_Vali / Int_NV);
if(Bol_Kertaus == false){Seq_UkkoNooa++;
}else{Seq_UkkoNooa = 14;}
break;
case 8:
Fun_Soita(Uin_E, 4, 4); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 9:
Fun_Soita(Uin_G, 2, 1); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 10: Fun_Soita(Uin_F, 2, 1); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 11: Fun_Soita(Uin_D, 4, 4); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 12: Fun_Soita(Uin_F, 2, 1); delay(Int_Vali / Int_NV); Seq_UkkoNooa++; break;
case 13:
Fun_Soita(Uin_E, 2, 1); delay(Int_Vali / Int_NV);
Bol_Kertaus = true;
Seq_UkkoNooa = 1;
break;
case 14:
delay(2000); Seq_UkkoNooa = 1; Bol_Kertaus = false;
break;
}
delay(1);
} // Pääohjelma LOPPU
// FUNKTIOT
void Fun_Soita(unsigned int Nuotti, int Kesto, int Kertaa){
for(int i = 0; i < Kertaa; i ++){
tone(Con_Pin, Nuotti);
delay(Int_KokoNuotti / Kesto);
noTone(Con_Pin);
delay(Int_Vali);
} // For-osan loppu
} // Funktion loppu
Ohjelma 17
/* ************************************
*
Ohjelma 17
*
25.04.2016
*
Speak softly, Love
***************************************/
// MÄÄRITTELYT:
// Nuotit
unsigned int Uin_C = 262; unsigned int Uin_D =
294;
unsigned int Uin_E = 330; unsigned int Uin_F =
349;
unsigned int Uin_G = 392; unsigned int Uin_A =
440;
unsigned int Uin_H = 494;
// Ylennetyt
unsigned int Uin_Cy = 277; unsigned int Uin_Dy
= 311;
unsigned int Uin_Fy = 370; unsigned int Uin_Gy
= 415;
unsigned int Uin_Ay = 466;
// Alennetut
unsigned int Uin_Da = 277; unsigned int Uin_Ea
= 311;
unsigned int Uin_Ga = 370; unsigned int Uin_Aa
= 415;
unsigned int Uin_Ha = 466;
// Muut määrittelyt
int Int_Vali = 40; // Tauko
nuottien välissä
int Int_NV = 4; //
Nuotista toiseen väli
int Int_KokoNuotti = 2500;
//Kokonuotin kesto
const int Con_Pin = 3; // Pinni
mihin soitetaan
int Int_Hyppy = 1;
int Seq_LoveMe = Int_Hyppy;
boolean Bol_Kertaus = false;
int Oktaavi = 1;
// ASETUKSET:
void setup(){
Serial.begin(9600);
}// Asetuksen loppu
// PÄÄLOOPPI
void loop(){
// Nuotti, kesto, kertaa, oktaavi
switch (Seq_LoveMe) {
case 1: Fun_Soita(Uin_A, 8, 1, 1);
delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 2:
Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 3:
Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 4:
Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 5:
Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 6:
Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 7:
Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 8:
Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 9:
Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 10: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 11: Fun_Soita(Uin_C, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 12: Fun_Soita(Uin_A, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 13: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 14: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 15: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 16: Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 17: Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 18: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 19: Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 20: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 21: Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 22: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 23: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 24: Fun_Soita(Uin_Aa, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 25: Fun_Soita(Uin_G, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 26: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 27: Fun_Soita(Uin_G, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 28: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 29:
Fun_Soita(Uin_Cy, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 30: Fun_Soita(Uin_E, 2, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 31: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 32: Fun_Soita(Uin_G, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 33: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 34: Fun_Soita(Uin_Cy, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 35: Fun_Soita(Uin_D, 2, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 36: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 37: Fun_Soita(Uin_D, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 38: Fun_Soita(Uin_F, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 39: Fun_Soita(Uin_C, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 40: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 41: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 42: Fun_Soita(Uin_C, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 43: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 44: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 45: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 46: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 47: Fun_Soita(Uin_Cy, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 48: Fun_Soita(Uin_D, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 49: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 50:
Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 51: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 52: Fun_Soita(Uin_Da, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 53: Fun_Soita(Uin_C, 2, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 54: Fun_Soita(Uin_E, 4, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 55: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 56: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 57: Fun_Soita(Uin_A, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 58: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 59: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 60: Fun_Soita(Uin_C, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 61: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 62: Fun_Soita(Uin_G, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 63: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 64: Fun_Soita(Uin_G, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 65: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 66: Fun_Soita(Uin_Gy, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 67: Fun_Soita(Uin_A, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 68: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 69: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 70: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 71: Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 72: Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 73: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 74: Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 75: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 76: Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 77: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 78: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 79: Fun_Soita(Uin_C, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 80: Fun_Soita(Uin_A, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 81: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 82: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 83:
Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 84: Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 85: Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 86:
Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 87: Fun_Soita(Uin_F, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 88: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 89: Fun_Soita(Uin_E, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 90: Fun_Soita(Uin_D, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 91: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 92: Fun_Soita(Uin_Aa, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 93: Fun_Soita(Uin_G, 2, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 94: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 95: Fun_Soita(Uin_G, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 96: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 97: Fun_Soita(Uin_Cy, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 98: Fun_Soita(Uin_E, 2, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 99: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 100: Fun_Soita(Uin_G, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 101: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 102: Fun_Soita(Uin_Cy, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 103: Fun_Soita(Uin_D, 2, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 104: noTone(Con_Pin); delay(Int_KokoNuotti / 8); Seq_LoveMe++; break;
case 105: Fun_Soita(Uin_D, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 106: Fun_Soita(Uin_F, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 107: Fun_Soita(Uin_C, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 108: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 109: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 110: Fun_Soita(Uin_C, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 111: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 112: Fun_Soita(Uin_Ha, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 113: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 114: Fun_Soita(Uin_A, 8, 1, 1); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 115: Fun_Soita(Uin_Cy, 8, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 116: Fun_Soita(Uin_D, 1, 1, 2); delay(Int_Vali / Int_NV); Seq_LoveMe++; break;
case 117: delay(2000); Seq_LoveMe = Int_Hyppy; break;
}
delay(1);
} // Pääohjelma LOPPU
// FUNKTIOT
void Fun_Soita(unsigned int Nuotti, int Kesto, int Kertaa, int Oktaavi){
for(int i = 0; i < Kertaa; i ++){
tone(Con_Pin, Nuotti * Oktaavi);
delay(Int_KokoNuotti / Kesto);
noTone(Con_Pin);
delay(Int_Vali);
} // For-osan loppu
} // Funktion loppu
Ei kommentteja:
Lähetä kommentti