Está en la página 1de 21

“MODULO DE ENCENDIDO DE LEDS”

MECATRONICA AREA DE AUTOMATIZACION

LENGUAJE DE
PROGRAMACION
Ing. Rubén Loredo Amado
4° A
INTEGRANTES:
PONCE NAJERA NADIA CECILIA
SANTOS SANTIAGO IVAN ALDARI
SANCHEZ MARTINEZ PRISILLA VIVIANA
ZAVALA GARCIA MARIO ROBERTO
LOPEZ LUNA EMMANUEL
INDICE

Introducción…………………………………………………………………......3
Materiales………………………………………………………………………..4
Desarrollo………………………………………………………………………..5
 Desarrollo del programa
 Interfaz grafica
 Componentes utilizados en la interfaz grafica
 Programación
 Funciones utilizadas
 Diagrama de flujo

Conclusión……………………………………………………………………….19
Experiencia y Aprendizaje……………………………………………………...20
Bibliografía……………………………………………………………………….21

Página | 2
INTRODUCCION

Este programa es un módulo de LEDS que consiste en el encendido de 8 LEDS, los


cuales son encendidos por botones que controlan los timers y activa las secuencias
ya designadas en la programación. La velocidad de la secuencia está regulada con
un KNOB. Este programa está configurado para que la programación sea en
Leguaje C y hace mucho más fácil la programación de este.
El desarrollo de este programa es que se colocaron 4 timers los cuales se le
programaron las secuencias, estas secuencias varían depende de la configuración
del binaryswitch, ya que el binaryswitch uno enciende la primera secuencia que es
del LED 1 al 8 y así sucesivamente. Este programa está configurado para que la
secuencia sea infinita y que con el binaryswitch pare la secuencia cuando este esté
en OFF.

Página | 3
MATERIALES

 NI LABWINDOWS CVI 2015

Página | 4
DESARROLLO
El programa se compone de 8 LEDS, 5 botones, 1 knob y 4 timers.
Los timers están programados para que se realicen las secuencias dependiendo de
qué botón se presione. Si el botón presionado es el “EFECTO 1”, la secuencia de
los LEDS será de 1 al 8 y así sucesivamente, si el botón presionado es el “EFECTO
2”, la secuencia de los LEDS será de 1 a 8 y de 8 a 1, así sucesivamente. Si el botón
que se presiona es el “EFECTO 3”, la secuencia de los LEDS será de 1 a 4 y de 8
a 5, así inversamente. Si el botón que se presiona es el “EFECTO 4” se realizara
otro tipo de frecuencia.
El knob está vinculado con cada timer y secuencia para que este regule la velocidad
de la secuencia a gusto.

INTERFACE GRAFICA DEL PROGRAMA

Página | 5
DESCRIPCION DE CADA ELEMENTO

2
1

1.- PICTUREBUTTON: Este botón sirve para salir totalmente del programa.
2.- BINARYSWITCH: Enciende y apaga las secuencias de los LEDS.
3.- LED: Estos son los 8 LEDS donde se mostraran las secuencias.
4.- PICTURE: Colocamos una imagen para el título del programa.
5.- NUMERICKNOB: Es para regular la velocidad de las secuencias.

Página | 6
PROGRAMACION

//=======================================================================
=======
//
// Title: PRACTICA1
// Purpose: A short description of the application.
//
// Created on: 17/10/2017 at 08:25:09 a. m. by .
// Copyright: . All Rights Reserved.
//
//=======================================================================
=======

//=======================================================================
=======
// Include files

#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "PRACTICA1.h"
#include "toolbox.h"

//=======================================================================
=======
// Constants

//=======================================================================
=======
// Types

//=======================================================================
=======
// Static global variables

static int panelHandle = 0;

//=======================================================================
=======
// Static functions

//=======================================================================
=======
// Global variables

int blink=0;

double tiempo_timer;

Página | 7
//=======================================================================
=======
// Global functions

/// HIFN The main entry-point function.


int main (int argc, char *argv[])
{
int error = 0;

/* initialize and load resources */


nullChk (InitCVIRTE (0, argv, 0));
errChk (panelHandle = LoadPanel (0, "PRACTICA1.uir", PANEL));

/* display the panel and run the user interface */


errChk (DisplayPanel (panelHandle));
errChk (RunUserInterface ());

Error:
/* clean up */
if (panelHandle > 0)
DiscardPanel (panelHandle);
return 0;
}

//=======================================================================
=======
// UI callback function prototypes

/// HIFN Exit when the user dismisses the panel.


int CVICALLBACK panelCB (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
if (event == EVENT_CLOSE)
QuitUserInterface (0);
return 0;
}

int CVICALLBACK SALIR (int panel, int control, int event,


void *callbackData, int eventData1, int
eventData2)
{
switch (event)
{
case EVENT_COMMIT:

QuitUserInterface(0);

break;
}
return 0;
}

int CVICALLBACK REGULADOR (int panel, int control, int event,


void *callbackData, int eventData1,
int eventData2)
{

Página | 8
switch (event)
{
case EVENT_COMMIT:

double tiempo_timer;

GetCtrlVal(panelHandle,PANEL_NUMERICKNOB,&tiempo_timer);

SetCtrlAttribute (panelHandle, PANEL_TIMER,


ATTR_INTERVAL,tiempo_timer);

break;
}
return 0;
}

int CVICALLBACK ENCENDIDO1 (int panel, int control, int event,


void *callbackData, int
eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:

int estado;

GetCtrlVal(panelHandle,PANEL_BINARYSWITCH,&estado);

SetCtrlAttribute (panelHandle, PANEL_TIMER,


ATTR_ENABLED,estado);

SetCtrlVal(panelHandle,PANEL_LED,0);
SetCtrlVal(panelHandle,PANEL_LED_2,0);
SetCtrlVal(panelHandle,PANEL_LED_3,0);
SetCtrlVal(panelHandle,PANEL_LED_4,0);
SetCtrlVal(panelHandle,PANEL_LED_5,0);
SetCtrlVal(panelHandle,PANEL_LED_6,0);
SetCtrlVal(panelHandle,PANEL_LED_7,0);
SetCtrlVal(panelHandle,PANEL_LED_8,0);

break;
}
return 0;
}

int CVICALLBACK ENCENDIDO2 (int panel, int control, int event,


void *callbackData, int
eventData1, int eventData2)
{

Página | 9
switch (event)
{
case EVENT_COMMIT:

int estado;

GetCtrlVal(panelHandle,PANEL_BINARYSWITCH_2,&estado);

SetCtrlAttribute
(panelHandle,PANEL_TIMER_2,ATTR_ENABLED,estado);

SetCtrlVal(panelHandle,PANEL_LED,0);
SetCtrlVal(panelHandle,PANEL_LED_2,0);
SetCtrlVal(panelHandle,PANEL_LED_3,0);
SetCtrlVal(panelHandle,PANEL_LED_4,0);
SetCtrlVal(panelHandle,PANEL_LED_5,0);
SetCtrlVal(panelHandle,PANEL_LED_6,0);
SetCtrlVal(panelHandle,PANEL_LED_7,0);
SetCtrlVal(panelHandle,PANEL_LED_8,0);

break;
}
return 0;
}

int CVICALLBACK ENCENDIDO3 (int panel, int control, int event,


void *callbackData, int
eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:

int estado;

GetCtrlVal(panelHandle,PANEL_BINARYSWITCH_3,&estado);

SetCtrlAttribute
(panelHandle,PANEL_TIMER_3,ATTR_ENABLED,estado);

SetCtrlVal(panelHandle,PANEL_LED,0);
SetCtrlVal(panelHandle,PANEL_LED_2,0);
SetCtrlVal(panelHandle,PANEL_LED_3,0);
SetCtrlVal(panelHandle,PANEL_LED_4,0);
SetCtrlVal(panelHandle,PANEL_LED_5,0);
SetCtrlVal(panelHandle,PANEL_LED_6,0);
SetCtrlVal(panelHandle,PANEL_LED_7,0);
SetCtrlVal(panelHandle,PANEL_LED_8,0);

break;

Página | 10
}
return 0;
}

int CVICALLBACK ENCENDIDO4 (int panel, int control, int event,


void *callbackData, int
eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:

int estado;

GetCtrlVal(panelHandle,PANEL_BINARYSWITCH_4,&estado);

SetCtrlAttribute
(panelHandle,PANEL_TIMER_4,ATTR_ENABLED,estado);

SetCtrlVal(panelHandle,PANEL_LED,0);
SetCtrlVal(panelHandle,PANEL_LED_2,0);
SetCtrlVal(panelHandle,PANEL_LED_3,0);
SetCtrlVal(panelHandle,PANEL_LED_4,0);
SetCtrlVal(panelHandle,PANEL_LED_5,0);
SetCtrlVal(panelHandle,PANEL_LED_6,0);
SetCtrlVal(panelHandle,PANEL_LED_7,0);
SetCtrlVal(panelHandle,PANEL_LED_8,0);

break;
}
return 0;
}

int CVICALLBACK EFECTOT1 (int panel, int control, int event,


void *callbackData, int eventData1,
int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:

GetCtrlVal(panelHandle,PANEL_NUMERICKNOB,&tiempo_timer);

SetCtrlVal(panelHandle,PANEL_NUMERICKNOB,tiempo_timer);

SetCtrlVal(panelHandle,PANEL_LED,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
Delay(tiempo_timer);

Página | 11
SetCtrlVal(panelHandle,PANEL_LED_2,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_8,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_8,blink);

break;
}
return 0;
}

int CVICALLBACK EFECTOT2 (int panel, int control, int event,


void *callbackData, int eventData1,
int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:

GetCtrlVal(panelHandle,PANEL_NUMERICKNOB,&tiempo_timer);

SetCtrlVal(panelHandle,PANEL_NUMERICKNOB,tiempo_timer);

SetCtrlVal(panelHandle,PANEL_LED,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_2,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);

Página | 12
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_8,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_8,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_2,blink);

break;
}
return 0;
}

int CVICALLBACK EFECTOT3 (int panel, int control, int event,


void *callbackData, int eventData1,
int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:

GetCtrlVal(panelHandle,PANEL_NUMERICKNOB,&tiempo_timer);

SetCtrlVal(panelHandle,PANEL_NUMERICKNOB,tiempo_timer);

SetCtrlVal(panelHandle,PANEL_LED,!blink);
SetCtrlVal(panelHandle,PANEL_LED_8,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,blink);
SetCtrlVal(panelHandle,PANEL_LED_8,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);

Página | 13
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_2,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_2,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);

break;
}
return 0;
}

int CVICALLBACK EFECTOT4 (int panel, int control, int event,


void *callbackData, int eventData1,
int eventData2)
{
switch (event)
{
case EVENT_TIMER_TICK:

GetCtrlVal(panelHandle,PANEL_NUMERICKNOB,&tiempo_timer);
SetCtrlVal(panelHandle,PANEL_NUMERICKNOB,tiempo_timer);

SetCtrlVal(panelHandle,PANEL_LED,!blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,blink);

Página | 14
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
SetCtrlVal(panelHandle,PANEL_LED_8,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_8,blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,!blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
SetCtrlVal(panelHandle,PANEL_LED_8,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_8,blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
SetCtrlVal(panelHandle,PANEL_LED_8,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_8,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,!blink);
SetCtrlVal(panelHandle,PANEL_LED_2,!blink);
SetCtrlVal(panelHandle,PANEL_LED_3,!blink);
SetCtrlVal(panelHandle,PANEL_LED_4,!blink);
SetCtrlVal(panelHandle,PANEL_LED_5,!blink);
SetCtrlVal(panelHandle,PANEL_LED_6,!blink);

Página | 15
SetCtrlVal(panelHandle,PANEL_LED_7,!blink);
SetCtrlVal(panelHandle,PANEL_LED_8,!blink);
Delay(tiempo_timer);
SetCtrlVal(panelHandle,PANEL_LED,blink);
SetCtrlVal(panelHandle,PANEL_LED_2,blink);
SetCtrlVal(panelHandle,PANEL_LED_3,blink);
SetCtrlVal(panelHandle,PANEL_LED_4,blink);
SetCtrlVal(panelHandle,PANEL_LED_5,blink);
SetCtrlVal(panelHandle,PANEL_LED_6,blink);
SetCtrlVal(panelHandle,PANEL_LED_7,blink);
SetCtrlVal(panelHandle,PANEL_LED_8,blink);

break;
}
return 0;
}

FUNCIONES

SetCtrlVal:

Pone el valor de un control a un valor que tú especificaste.

Cuando llames SetCtrlVal en una lista de caja o un anillo de control, SetCtrlVal


pone el objeto seleccionado como primer objeto que tiene el valor que tú
especificaste. Para poner el objeto seleccionado por un zero-based index, usa
SetCtrlIndex.

Delay:

Espera el número de segundos que numberOfSeconds indica.

La resolución normalmente es de 1 milisegundos. Como sea, si tú pones la opción


de configuración de useDefaultTimer verdadero, la resolución es 55 milisegundos.

SetCtrlAttribute:

Pone el valor de un atributo de control.

Pero puedes obtener un valor de todos los atributos de control usando


GetCtrlAttribute, hay algunos atributos de control que no puedes modificar. Las
descripciones en las que entras a la lista de control de attributes indican cuales
atributos no puedes modificar.

Página | 16
GetCtrlVal:

Obtiene el valor de control.

Cuando el control ID es para un caja de lista o anillo de control, GetCtrlVal regresa el


valor del objeto. Para obtener el index del objeto seleccionado, use GetCrtlIndex.

Quit UserInterface:

Hace que RunUserInterface regresa con un código de regreso específico y


extermina eventos en proceso.

Llama QuitUserInterface solamente por dentro de una función callback invocada


durante la ejecución de RunUserInterface.

DiscarPanel:

Remueve un panel y cualquier de su paneles más pequeños de su memoria y los


limpia de la pantalla si son visibles.

Debes llamar DiscardPanel del hilo en el cual tú creaste el panel.

Se refiera a la función LoadPanel referente para un ejemplo de cómo usarlo y


otras funciones de panel.

Página | 17
DIAGRAMA DE FLUJO

Página | 18
CONCLUSION
Como conclusión podemos decir que el proyecto fue un éxito sin embargo tuvimos
ciertos contratiempos al momento de realizar nuestro programa ya que carecíamos
de información necesaria para poder ejecutar dicho proyecto.
En cuestión de diseño no tuvimos problema alguno, excepto con el uso o el manejo
de los interruptores o switch por los botones o mejor conocidos como push botton.
Además el desarrollo de nuestro proyectó fue algo corto a comparación de los
programas hechos por los demás equipos, lo que significa que el uso de la
programación que utilizamos fue más corta y eficiente. Aunque se pudo haber hecho
más corto.
Sin embargo tuvimos la oportunidad de realizar nuestro proyecto a nuestro criterio
debido a que incluimos programación y diseño fuera de lo establecido para tener
una buena ejecución.

Página | 19
EXPERIENCIAS Y APRENDIZAJE
La experiencia adquirida a través del desarrollo de este proyecto fue interesante, ya
que llevar a cabo el proceso de un programa conlleva utilizar lógica y creatividad
en cada una de las partes establecidas de un programa, además nos deja como
experiencia la constancia y la dedicación como estrategia para obtener buenos
resultados en dicho proyecto.
Por lo tanto podemos decir que la paciencia fue un valor clave para establecer un
desarrollo eficiente, además de que podemos decir que la comunicación del equipo
fue bastante clara y fluida ya que nos organizamos de manera eficiente.
Sin embargo los aprendizajes adquiridos fueron de mucha ayuda para poder realizar
cada una de las expectativas esperadas para nuestro proyecto. Lo mejor de realizar
este trabajo es que ahora tenemos un mejor entendimiento acerca de lo que es el
programa Lab Windows/CVI y sus múltiples aplicaciones.

Página | 20
BIBLIOGRAFIA

www.programarya.com/Cursos/Fundamentacion/Tecnicas-Basicas

Página | 21

También podría gustarte