Autor: Gabriel PereiraCompetencia: Desarrollo de Software (N1), Trabajo en Equipo (N1).
Palabras Clave: Regresión Lineal,Mysql,Base de datos.
Descripción:Este trabajo tenía como objetivo lograr que el robot lograra hacer tres funciones o modos distintos, los que programamos en NXC. El primero era el modo patrulla en el cual el robot debía transitar por el rededor de la casa por una línea fija de color negro y debía avisar y contabilizar cualquier sonido extraño que escuchara, cada vez que escuchaba un sonido su nivel de alerta aumentaba al ser el nivel de alerta mayor o igual a cien este debía pasar a la siguiente fase. Modo guardián aquí el robot debía acercarse a la casa sin chocarla y debía girar en su propio eje escuchando en todo momento cualquier sonido su nivel de energía iba decreciendo, cuando la energía fuera cero o menor a esto pasaba al último modo el de ataque en el cual debía quedarse parado y con el sensor ultrasonido al momento de encontrar a menos de 10 cm un objeto debía atacar avanzando fuertemente con su máxima potencia y devolverse al instante igualmente después de esto terminaba su trabajo y paraba definitivamente. Bueno la actividad por su complejidad y el uso de varios sensores se dividió en dos partes primeramente desarrollando el modo patrulla solamente y el pseudocódigo, para esta última terminarlo completamente.
PseudocódigoDefinimos constante umbralDefinimos constante luzDefinimos contante micrófonoDefinimos contante distanciaDefinimos variale Nivel alertaDefinimos variale Intentos de roboDefinimos variale Energia restante
Sub Rutina Modo Patrulla(){ Avanza los motores Si (Sensor de luz es mayor a negro) { Retrocede por 1 segundo pero si(es menor o igual a negro) Avanza sin detenerse Si (Sensor de sonido es mayor al umbral) { los motores se paran durante 3 segundos toca una melodia la variable Intentos de robo aumenta en uno la variable Nivel de alerta se le sumara un numero aleatorio entre 20 y 50 la variable Energia restante se le restara un numero aleatorio entre 50 y 60 imprimira en pantalla el nombre de cada variable y su valor } }}
Sub Rutina Modo Guardian(){ Ingresa al ovalo Coloca el motor derecho en reversa Gira en su propio eje a velocidad media}
Sub Rutina Modo Ataque(){ Los motores se detienen Si (Sensor ultrasonido es mayor o igual a 10 cm) { Avanzara con su maxima potencia Por 1 segundo Retroceder con su maxima potencia Por 1 segundo Apagar motores; }}
Tarea Principal(){ Asignamos valor a Nivel alerta Asignamos valor a Intentos de robo Asignamos valor a Energia restante Encendemos Sensor de Luz Encendemos Sensor de Ruido Encendemos Sensor de Ultrasonido Mientras(Verdadero) { Imprimimos la variables y sus valores respectivos Activamos la Sub rutina Modo Patrulla() Si ( El Nivel de alerta es mayor a 100) { Se activara el Modo Guardian() Si (La Energia restante del robot es menor o igual a 0) { Se pasara a la Sub rutina de Modo Ataque() } } }}
Competencia: Desarrollo de Software (N1), Trabajo en Equipo (N1).
Palabras Clave: Regresión Lineal,Mysql,Base de datos.
Palabras Clave: Regresión Lineal,Mysql,Base de datos.
Descripción:
Este trabajo tenía como objetivo lograr que el robot lograra hacer tres funciones o modos distintos, los que programamos en NXC. El primero era el modo patrulla en el cual el robot debía transitar por el rededor de la casa por una línea fija de color negro y debía avisar y contabilizar cualquier sonido extraño que escuchara, cada vez que escuchaba un sonido su nivel de alerta aumentaba al ser el nivel de alerta mayor o igual a cien este debía pasar a la siguiente fase. Modo guardián aquí el robot debía acercarse a la casa sin chocarla y debía girar en su propio eje escuchando en todo momento cualquier sonido su nivel de energía iba decreciendo, cuando la energía fuera cero o menor a esto pasaba al último modo el de ataque en el cual debía quedarse parado y con el sensor ultrasonido al momento de encontrar a menos de 10 cm un objeto debía atacar avanzando fuertemente con su máxima potencia y devolverse al instante igualmente después de esto terminaba su trabajo y paraba definitivamente. Bueno la actividad por su complejidad y el uso de varios sensores se dividió en dos partes primeramente desarrollando el modo patrulla solamente y el pseudocódigo, para esta última terminarlo completamente.
Pseudocódigo
Definimos constante umbral
Definimos constante luz
Definimos contante micrófono
Definimos contante distancia
Definimos variale Nivel alerta
Definimos variale Intentos de robo
Definimos variale Energia restante
Sub Rutina Modo Patrulla()
{
Avanza los motores
Si (Sensor de luz es mayor a negro)
{
Retrocede por 1 segundo
pero si(es menor o igual a negro)
Avanza sin detenerse
Si (Sensor de sonido es mayor al umbral)
{
los motores se paran
durante 3 segundos
toca una melodia
la variable Intentos de robo aumenta en uno
la variable Nivel de alerta se le sumara un numero aleatorio entre 20 y 50
la variable Energia restante se le restara un numero aleatorio entre 50 y 60
imprimira en pantalla el nombre de cada variable y su valor
}
}
}
Sub Rutina Modo Guardian()
{
Ingresa al ovalo
Coloca el motor derecho en reversa
Gira en su propio eje a velocidad media
}
Sub Rutina Modo Ataque()
{
Los motores se detienen
Si (Sensor ultrasonido es mayor o igual a 10 cm)
{
Avanzara con su maxima potencia
Por 1 segundo
Retroceder con su maxima potencia
Por 1 segundo
Apagar motores;
}
}
Tarea Principal()
{
Asignamos valor a Nivel alerta
Asignamos valor a Intentos de robo
Asignamos valor a Energia restante
Encendemos Sensor de Luz
Encendemos Sensor de Ruido
Encendemos Sensor de Ultrasonido
Mientras(Verdadero)
{
Imprimimos la variables y sus valores respectivos
Activamos la Sub rutina Modo Patrulla()
Si ( El Nivel de alerta es mayor a 100)
{
Se activara el Modo Guardian()
Si (La Energia restante del robot es menor o igual a 0)
{
Se pasara a la Sub rutina de Modo Ataque()
}
}
}
}
Programa
//Grupo NXC
//Integrantes : Joel Cortes
// Juan Navarrete
// Jonathan Lincoqueo
// Gabriel Pereira
#define UMBRAL 40 // Define constante de sonido
#define LUZ 40 // Define constante de luz
#define MIC SENSOR_3 // Define constante de sonido
#define CERCA 15 // Define constante de ultrasonido
int NivAler; // define variable
int IntRobo; // define variable
int Eneres; // define variable
sub ModoPatrulla() // define tarea mas pequeña para dar orden
{ // Llave de inicio subrutina
OnFwd(OUT_AC,65); // avanza al 65%
if (Sensor(IN_1) > LUZ) // si el sensor de luz es menor a la constante luz
{ // Llave de inicio if
OnRev(OUT_C,65); // retrocede a 65%
Wait(100); //por un segundo
until(Sensor(IN_1) <= LUZ); // en caso que el sensor de luz vuelva ser menor o igual a luz
OnFwd(OUT_AC,65); // seguira avanzando al 65%
if (MIC >= UMBRAL) //si el sensor de sonido es mayor al umbral
{ //Llave de inicio if
Off(OUT_AC); //los motores se paran
Wait(300); //por 0,3 segundos
PlayTone(2000,1000); //se tocara una melodia
Wait(50); //por 50 milisegundos
IntRobo++; //la variable intento de robo aumentara en uno
NivAler = NivAler + (Random(50)+20); //nivel de alerta aumentara entre 20 y 50
Eneres = Eneres - (Random(60)+50); //energia restante disminuira entre 50 y 60
TextOut(10,60,"Int. Robos"); //se imprime la variable
NumOut(20,50,IntRobo); //se imprime el valor de la variable
TextOut(10,40,"Niv. Alerta"); //se imprime la variable
NumOut(20,30,NivAler); //se imprime el valor de la variable
TextOut(10,20,"Ener. Restante"); //se imprime la variable
NumOut(20,10,Eneres); //se imprime el valor de la variable
} // Llave final de if
} //Llave final de if
} // Llave fin de subrutina
sub ModoGuardian() //define una sub tarea para darle orden al programa
{ // Llave inicial de sub rutina
} // Llave fin de subrutina
task main() //Tarea principal
{ //Llave inicial tarea principal
NivAler = 0; //asigna valor a variable nivel alerta
IntRobo = 0; //asigna valor a variable intento de robo
Eneres = 500; //asigna valor a variable energia restante
SetSensorSound(IN_3); //activa el sensor se sonido
SetSensorLight(IN_1); //activa el sensor de luz
SetSensorLowspeed(IN_2); //activa el sensor ultrasonido
while(true) //inicia ciclo mientras que sea verdadero
{ //Llave de inicio ciclo while
TextOut(10,60,"Int. Robos"); //se imprime la variable
NumOut(20,50,IntRobo); //se imprime el valor de la variable
TextOut(10,40,"Niv. Alerta"); //se imprime la variable
NumOut(20,30,NivAler); //se imprime el valor de la variable
TextOut(10,20,"Ener. Restante"); //se imprime la variable
NumOut(20,10,Eneres); //se imprime el valor de la variable
ModoPatrulla(); //Llama a la sub tarea Modo Patrulla
if (NivAler > 100) //si el nivel de alerta supera 100
{ //Llave inicial if
ModoGuardian(); // llama a la sub tarea Modo Guardian
} //Llave final de if
} //Llane final de ciclo while
} //Llave final de la tarea principal
A continuación el vídeo de la actividad desarrollada.
Aprendí a utilizar lo que son las subrutinas que sirven de mucho ya que ayudan a ordenar el programa en gran parte dividiendo en partes específicas lo que se desarrollara, y el uso del sensor de ultrasonido.