elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  duda con programa para control de motores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda con programa para control de motores  (Leído 2,418 veces)
electro-pajo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
duda con programa para control de motores
« 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.


En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #1 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/

Y para postear tu codigo puedes copiarlo simplemente con el raton y lo pegas en un post del foro.


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #2 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.
....
En línea

electro-pajo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #3 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;
  }
}
En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #4 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;
A la variable res le estas asignando el valor 1 en el caso de que *x e *y tengan el mismo valor, y el valor 0 en caso contrario. Cuando despues haces

Código:
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;

La variable res solo podra ejecutar el case 1: ya que solo podra tener el valor 1 o el valor 0.
En línea

electro-pajo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #5 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?
« Última modificación: 2 Marzo 2013, 23:01 pm por Eternal Idol 7D » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #6 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
  1. if (*x==1)
  2.    res=*x+*y-1;
  3. else
  4.    res=*x+*y;
  5.  

Saluditos!. .....
En línea

electro-pajo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #7 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?
« Última modificación: 2 Marzo 2013, 23:02 pm por Eternal Idol 7D » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #8 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!. ...
« Última modificación: 2 Marzo 2013, 22:40 pm por leosansan » En línea

electro-pajo

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: duda con programa para control de motores
« Respuesta #9 en: 2 Marzo 2013, 22:42 pm »

Muchas gracias por vuestra ayuda señores.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines