1. Código Fuente:
/*Guitarra Eléctrica:*/
int i=0;
int Notas[8];
int a=0;
int j=0;
int num=0;
string linea="-";
string nums;
byte punteroArchivo;
string cadena;
byte bytesEscritos;
mutex Multiple;
string leer;
int tam=512;
string mas="Distancia ";
string nota="La nota es";
sub TraspasaArchivo()
{
2. DeleteFile("Notas.txt"); //borra archivo
CreateFile("Notas.txt", tam, punteroArchivo); //Crea un nuevo archivo
WriteLnString(punteroArchivo, "Notas", bytesEscritos);// Escribe en el archivo
for(j=0; j < ArrayLen(Notas); j++) //recorre el arreglo para definir la nota.
{if(Notas[j]>=10&&Notas[j]<12){ // verifica las distacias para asignar las notas
cadena= "La";
cadena=nota+cadena; // se une los strig cadena y nota para generar una frase : la nota es "la".
cadena = cadena + linea;
WriteLnString(punteroArchivo, cadena, bytesEscritos); //Escribe la nota definifa dentro del archivo
}
if(Notas[j]>=12&&Notas[j]<14){
cadena= "Do";
cadena=nota+cadena;
cadena = cadena + linea;
WriteLnString(punteroArchivo, cadena, bytesEscritos);
}
if(Notas[j]>=14&&Notas[j]<16){
cadena= "Re";
cadena=nota+cadena;
cadena = cadena + linea;
WriteLnString(punteroArchivo, cadena, bytesEscritos);
}
if(Notas[j]>=16&&Notas[j]<18){
cadena= "Re#";
4. cadena=nota+cadena;
cadena = cadena + linea;
WriteLnString(punteroArchivo, cadena, bytesEscritos);
}
}
CloseFile(punteroArchivo); //cerrar el archivo
}
// Diferentes tareas para reproducir el sonido de cada nota musical
task la(){
while(true){
if(ButtonPressed(BTNCENTER, false)){ //verifica si el boton central es presionado
if(SensorUS(IN_4)<=12){
PlayFileEx("Guitar_A_high.rso", 7,0); //Reproduce el un archivo .rso con maximo volumen
Wait(300); //durante 3 milisegundos
Notas[i]= SensorUS(IN_4); //guarda el valor entregado por el sensor de proximidad dentro del arreglo.
i++;
8. }
task lamenor(){
while(true){
if (ButtonPressed(BTNCENTER, false)){
if(SensorUS(IN_4)>24){
PlayFileEx("Guitar_A_low.rso", 7,0);
Wait(300);
Notas[i]= SensorUS(IN_4);
i++;}
} } }
sub imprimir (){
int pa=50; //coordenadas en la pantalla
bool eof = false; //variable boleana
TraspasaArchivo(); //llama a la subrutina
ClearScreen(); //limpia la pantalla
OpenFileRead("Notas.txt", tam, punteroArchivo); // abre el archivo
while (eof == false){ // read the text file till the end
if(ReadLnString(punteroArchivo,leer) != NO_ERR) //Si no existe error al leer una linea del archivo
TextOut(LCD_LINE8,pa,leer); //imprime en pantalla
pa= pa-10; a
Wait(500);}
9. Wait(5000);
CloseFile(punteroArchivo); //cierra el archivo
}
task archivo(){
while(true){
if (ButtonPressed(BTNLEFT, false)){ //si presiona el boton izquierdo muestra en pantalla
imprimir();} }
}
task main(){
SetSensorLowspeed(IN_4); //encender sensor de proximidad
Precedes(la,DO,re,resotenido,mi,sol,solsotenido,lamenor,archivo);
}