Título: duda con programa para control de motores Publicado por: electro-pajo en 2 Marzo 2013, 15:11 pm Me presento: Es la 1º vez que participo en un foro, queria subir un pequeño programa para el control de un motor pero no se como se hace. Como se hace? Gracias.
Título: Re: duda con programa para control de motores Publicado por: pacoperico en 2 Marzo 2013, 15:39 pm Cuando dices motor creo que puedes estar refiriendote a motores electricos gobernado por algun pic, en ese caso lo suyo seria que postearas en el apartado de electronica:
http://foro.elhacker.net/electronica-b31.0/ (http://foro.elhacker.net/electronica-b31.0/) Y para postear tu codigo puedes copiarlo simplemente con el raton y lo pegas en un post del foro. Título: Re: duda con programa para control de motores Publicado por: leosansan en 2 Marzo 2013, 16:43 pm ............................queria subir un pequeño programa para el control de un motor pero no se como se hace. Como se hace? Gracias. Sencillamente donde pone GeSHi seleccionas C++ y aparecerán dos etiquetas" Code", en medio de ambas "pegas" tu código. Por cierto si está en C++ este foro es perfectamente válido para colgarlo, es un foro de "códigos", no en electrónica que es o debe ser para temas específicos. Saluditos!, y bienvenido. .... (http://st.forocoches.com/foro/images/smilies/ciao.gif) Título: Re: duda con programa para control de motores Publicado por: electro-pajo en 2 Marzo 2013, 19:49 pm Muchas gracias por la bienvenida. Mi duda es con respecto a la programacion no a la electronica, efectivamente. Estoy muy verde en C y no se si en este programa la funcion "motor" hace algo que no sea del infierno...
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dos.h> unsigned short inport (unsigned int puerto) { _DX=puerto; __emit__(0x66,0xED); return _AX; } void outport (unsigned int puerto, unsigned short dato) { _DX=puerto; _AX=dato; __emit__(0x66,0xEF); } void motor(int *, int *); void main(void) { int numero; int sentido; printf("****************************************************\n"); printf("* CONTROL MOTORES PaP *\n"); printf("****************************************************\n"); do{ do{ printf("¿Desea mover 1 o 2 motores?\n"); fflush(stdout); scanf("%d", &numero); }while(numero!=1 && numero!=2); do{ printf("¿Que sentido de giro desea? (1)=horario (2)=antihorario\n"); fflush(stdout); scanf("%d", &sentido); }while(sentido!=1 && sentido!=2); motor(&numero,&sentido); }while(true); } void motor(int *x, int *y) { int res; int i; res=*x&&*y; char a[]={0x06,0x05,0x09,0x0A}; //1 motor sentido horario char b[]={0x66,0x99,0x55,0x66}; //2 motores sentido horario char c[]={0x0A,0x09,0x05,0x06}; //1 motor sentido antihorario char d[]={0xAA,0x99,0x55,0x66}; //2 motores sentido antihorario switch(res) { case 1: for(i=0; !kbhit(); i++) outport(0x378, a); break; case 2: for(i=0; !kbhit(); i++) outport(0x378, b); break; case 3: for(i=0; !kbhit(); i++) outport(0x378, c); break; case 4: for(i=0; !kbhit(); i++) outport(0x378, d); break; } } Título: Re: duda con programa para control de motores Publicado por: pacoperico en 2 Marzo 2013, 21:04 pm En la definicion de tu funcion motor() veo lo siguiente:
Código: res=*x&&*y; El operador && es el operador logico "and" el cual solo devuelve verdadero (generalmente 1) si ambas expresiones son verdaderas *x e *y, y falso (0) en los demas casos. En el lenguaje C desde sus comienzos no existe el tipo bool, en su defecto se consideraba cualquier valor numerico distinto de cero como verdadero y el valor numerico cero como falso. En la mayoria de compiladores verdadero suele corresponder con el valor 1. Para que me entiendas un poco mejor, un if por ejemplo if(condicion) enunciado; Evalua la condicion comprobando su valor numerico, si la condicion vale 1 entonces ejecuta el enunciado y si no vale 1 no ejecuta el enunciado. En tu codigo Código: res=*x&&*y; Código: switch(res) La variable res solo podra ejecutar el case 1: ya que solo podra tener el valor 1 o el valor 0. Título: Re: duda con programa para control de motores Publicado por: electro-pajo en 2 Marzo 2013, 21:34 pm muchas gracias por tu respuesta. Como ves para mi C es tan natural como el arabe.
No se como hacer que con los parametros pasados a esta funcion se puedan elegir 4 opciones. La primera seria: si x=1 e y=1 elige la secuencia a; si x=1 e y=2 elige la secuencia b...etc EI: juntando mensajes. Si quito el doble & cambia algo? Título: Re: duda con programa para control de motores Publicado por: leosansan en 2 Marzo 2013, 22:03 pm Si quito el doble & cambia algo? Todo. Como bien dices, x e y pueden valer 1,1 1,2 2,1 2,2. Entonces : Código
Saluditos!. .....(http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: duda con programa para control de motores Publicado por: electro-pajo en 2 Marzo 2013, 22:22 pm y de esta forma seguiria funcionando la sentencia switch? Si es asi me das una gran alegria
EI: juntando mensajes. No hace falta nada que relacione las variables 1,1 1,2 etc con las cadenas a,b,etc. He hecho las practicas de interrogatorio en guantanamo, se nota? Título: Re: duda con programa para control de motores Publicado por: leosansan en 2 Marzo 2013, 22:36 pm y de esta forma seguiria funcionando la sentencia switch? Si es asi me das una gran alegria A qué estan referidas las variables a,b,c,d?.La elección del switch sería correcta con el "res" que te indico. Saluditos!. ...(http://st.forocoches.com/foro/images/smilies/simba1.gif) Título: Re: duda con programa para control de motores Publicado por: electro-pajo en 2 Marzo 2013, 22:42 pm Muchas gracias por vuestra ayuda señores.
|