Noty.nxc

From RoboWiki
Jump to: navigation, search

Krúžok Robotiky

/* noty.nxc

   Program hra melodiu zadanu v poli a na display vykresluje
   noty, ktoreho hra. Naeditujte si svoju oblubenu melodiu...
   
   Autor: Adam
   
*/

/*vo funkcii ,,void Noty" sa budu podla freq vykreslovat noty */
#include "NXCdefs.h"
#define c 262  //definovanie not
#define d 294
#define e 330
#define f 349
#define g 392
#define a 440
#define h 495
#define c2 524
#define h
 void Noty(int freq, int i /*int y*/) //definovanie funkcie noty
 {
   switch (freq)
    {
     case 262 : {
                 CircleOut(i, 20, 2);
                 LineOut(i+2, 20, i+2, 40);
                };break;
     case 294 : {
                 CircleOut(i, 22, 2);
                 LineOut(i+2, 22, i+2, 42);
                };break;
     case 330 : {
                 CircleOut(i, 25, 2);
                 LineOut(i+2, 25, i+2, 45);
                };break;
     case 349 : {
                 CircleOut(i, 27, 2);
                 LineOut(i+2, 27, i+2, 47);
                };break;
     case 392 : {
                 CircleOut(i, 30, 2);
                 LineOut(i+2, 30, i+2, 50);
                };break;
     case 440 : {
                 CircleOut(i, 32, 2);
                 LineOut(i+2, 32, i+2, 52);
                };break;
     case 495 : {
                 CircleOut(i, 35, 2);
                 LineOut(i+2, 35, i+2, 55);
                };break;
     case 524 : {
                 CircleOut(i, 37, 2);
                 LineOut(i+2, 37, i+2, 57);
                };break;

    }
 }
int tony[28]={c,c,e,g,c2,c2,g,f,f,e,e,d,d,c,c,c,e,g,c2,c2,g,f,f,e,e,d,d,c};
task main()
{
 int freq; //premenna freq
 int i; //iteracna premenna

 LineOut(0, 20, 99, 20); //notova osnova
 LineOut(0, 25, 99, 25);
 LineOut(0, 30, 99, 30);
 LineOut(0, 35, 99, 35);
 LineOut(0, 40, 99, 40);



 for(i=0; i<ArrayLen(tony); i++)
 {
    Noty(tony[i], 15*(i%7));
    PlayTone(tony[i],100);
    Wait(200);
    if(i%7==6)
    {
     ClearScreen(); //vycisti LCD
     LineOut(0, 20, 99, 20); //notova osnova
     LineOut(0, 25, 99, 25);
     LineOut(0, 30, 99, 30);
     LineOut(0, 35, 99, 35);
     LineOut(0, 40, 99, 40);
    }
 }
}