Saber si se puede o no trabajar con QtCreator y duda con el USB

Hola a todos,

Seguramente que no me contestareis o psareis de mi.... pero es normal a una persona que no sabe y va a meter la pata... ya que soy un estudiante de telecomunicaciones que le queda pensiente el proyecto, y no tiene ni puta idea de programar, eso si ganas de aprender muchas pero no tengo ni puta idea.

Lo primero que he hecho ha sido buscar si hay alguna entrada con QtCreator, y no hay ninguna.

Es una IDE de nokia, es la primera condicion que tengo que utilizar para mi proyecto, la segunda es que tengo que utilizar el puerto USB, y gobernar un motor atraves de el.

Asi que mis dudas son:

Como puedo gobernar el motor con el USB y el pc a la vez?

Me direis que si que se puede, pero como es la pregunta..... no quiero nada de codigos y esas cosas si no mas bien una explicacion.... porque pienso mas en que no se puede, ya que envias el codigo al Arduino y luego ya esta.

Espero ha verme explicado y a la espera de respuestas si es que hay.....

Muchas gracias por todo y mi proyecto es:

http://www.vissim.com/solutions/academic/simple_control_experiment.html

http://www.vissim.com/solutions/academic/simple_control_experiment.html

mmmm como que no entiendo. Que es lo que quieres hacer con la "flying box"?

Hola,

Por que dices que nadie te contestara?

La verdad, que tampoco entiendo muy bien tus dudas.... Si lo que quieres es usar la placa de Arduino como una tarjeta de I/O controlada mediante puerto serie, si que se puede.
Es decir, puedes usar firmdata o crearte tu mismo un protocolo para que los comandos recibidos por la comunicacion serie, realicen las tareas o control deseado en tu programa de Arduino.
Las placas Arduino cuando se conectan por el USB al PC, se configuran como un puerto virtual serie. Es decir, desde el punto de vista del PC es un puerto serie. (en la placa disponen de un conversor USB <--> rs232).
Por ejemplo, podrias hacer tu control PID en Arduino para controlar el motor o ventilador y que las constantes Kp,Ki y Kd se reciban por puerto serie, y que se mande la informacion de los sensores al PC (feedback), etc.
O por otro lado, podrias usar la placa Arduino como un modulo de entradas y salidas para conectar con el "exterior" y que toda la estrategia de control este en el PC.

Es eso lo que preguntas?

:wink:

Seguramente que no me contestareis o psareis de mi.... pero es normal a una persona que no sabe y va a meter la pata...

joeerrrr......

Si empezamos con tantos prejuicios dificil va la cosa.

Lo primero ser constructivos y no pesimistas o negativos que asi no se va a ningun lado.

Lo segundo:
Yo te aconsejaria antes de preguntar algo saber que es lo que quieres preguntar y pensar que los que te leen no saben lo que quieres ni son adivinos.

Lo tercero, respecto a lo que intuyo que puede ser tu pregunta ¿¿¿...???
QtCreator es una ide como puede ser el codewarrior o similares para el desarrollo de aplicaciones para varias plataformas, no tiene relacion con arduino, se puede crear cualquier aplicacion que se comunique con arduino pero hace falta un enlace fisico que se "junte" con el, es decir, puedes comunicarte con arduino como si fuera un receptor por puerto serie, a traves del usb y enviar ordenes a este como si de un terminal se tratase.

Pero ojo!! el USB solo puede dar 500mA. no puedes gobernar un motor desde el, te hace falta una fuente de alimentacion y controlar como administras potencia a ese motor con el arduino por ejemplo.

Si concretas un poco mas podemos aclarar un poco y aunque sea en diagrama de bloques dar una idea.

Como posibilidad todas, pero que tiene que hacer el QtCreator con el arduino???

Un saludo.

Mucha gracias por contetar a todos.... como veo :frowning: no se explicarme, pero gracias por contestar

[quote author=Igor R link=topic=51512.msg367406#msg367406 date=1297175791]
Hola,

Por que dices que nadie te contestara?
[/quote]Por que me pasa.... no me querais saber porque pero cuando vas con toda la ilusion, va y no te contestan, y te quedas como un gilipollas

Las placas Arduino cuando se conectan por el USB al PC, se configuran como un puerto virtual serie. Es decir, desde el punto de vista del PC es un puerto serie. (en la placa disponen de un conversor USB <--> rs232).
Por ejemplo, podrias hacer tu control PID en Arduino para controlar el motor o ventilador y que las constantes Kp,Ki y Kd se reciban por puerto serie, y que se mande la informacion de los sensores al PC (feedback), etc.
O por otro lado, podrias usar la placa Arduino como un modulo de entradas y salidas para conectar con el "exterior" y que toda la estrategia de control este en el PC.

Es eso lo que preguntas?

:wink:

Mas o menos creo que si que es lo que pregunto.... necesito controlar un motor... habia pensado utilizar el Arduino, pero lo que no se es como se comunica el Pc<>Arduino<>motor.... si dices que a través de un puerto serie virtual, muchas gracias sigo sin saber como se hace pero ya me ayudas.

Heke:
joeerrrr......

Si empezamos con tantos prejuicios dificil va la cosa.

Lo primero ser constructivos y no pesimistas o negativos que asi no se va a ningun lado.

Ya lo se pero es que soy muy negativo

Lo segundo:
Yo te aconsejaria antes de preguntar algo saber que es lo que quieres preguntar y pensar que los que te leen no saben lo que quieres ni son adivinos.

Si se lo que quiero preguntar pero el problema esta que no se como preguntar, ya se que no somos adivinos, pero es que yo tampoco se explicarme bien....

Lo tercero, respecto a lo que intuyo que puede ser tu pregunta ¿¿¿...???
QtCreator es una ide como puede ser el codewarrior o similares para el desarrollo de aplicaciones para varias plataformas, no tiene relacion con arduino, se puede crear cualquier aplicacion que se comunique con arduino pero hace falta un enlace fisico que se "junte" con el, es decir, puedes comunicarte con arduino como si fuera un receptor por puerto serie, a traves del usb y enviar ordenes a este como si de un terminal se tratase.

Como he dicho antes tengo que controlar un motor, no tiene que ser con el puerto USB, si no externo, pero lo tengo que gobernar, y habia pensado con el arduino.

Lo del QtCreator es para hace las ventanas que se vean en la pantalla del PC.... pero como trabaja con C pensaba que podria utilizarlo par el Arduino, como veis no tengo ni idea de que estoy hablando.

Muchas gracias por igualmente

Hola vitervi,

  1. Pedir orientacion a tu tutor de proyecto para encaminar el tema? Es un proyecto de modulo formativo?
  2. Arduino se comunica con el PC mediante comunicacion serie.
  3. Puedes elegir cualquier lenguaje de programacion para la visualizacion/control (PC), mientras tengan la posibilidad de comunicacion serie (99.99% tienen). Seguramente si eliges .NET o Processing encontraras muchos ejemplos por la red y te sera mas sencillo empezar. Yo elegiria .NET (C#), ya que te servira para cuando salgas al "tenebroso" mundo laboral.... :slight_smile: . Pero esto es una opcion mia personal.
  4. Por un lado tienes que hacer tu programa de PC y por otro lado tu programa del microcontrolador (Arduino).
  5. Para hacer una maqueta de control, puedes usar varios enfoques:
    5.1- Arduino como tarjeta "tonta" de entradas/salidas. Simplemente recibe por puerto serie "ordenes" para actuar sobre las entradas/salidas. Es tu programa del PC quien gestiona el control. Para hacer esto, existe Firmata, por lo que de la parte Arduino podrias "olvidarte".
    5.2- Arduino dispone del control de tu maqueta, y el PC solo le envia ciertos parametros de configuracion (por ejemplo, las constantes de PID) y se encarga de la visualizacion.
  6. Tienes muchiiiiiiisimos ejemplos en la red (google).
  7. Dividir el proyecto en pequenyas partes para no "perderte". Es decir, primero como se hace comunicacion con el PC, luego como se controla un motor, como se lee de sensores, como se hace un PID, ....

Y por ultimo.... No perder las ganas!!!

:wink:

Aunque es de Basic Stamp, que es otro dispostivo distinto a Arduino, este libro puede estar bien para ir aprendiendo conceptos e ir extrapolandolos a Arduino.
Lo encuentro muy bueno y muy bien organizado. El programa que usan para monitorizar (StampPlot Lite), lo puedes usar con Arduino. Es una buena herramienta para empezar rapido.
http://www.parallax.com/dl/docs/books/edu/ICSpanish.pdf

Si lo que necesitas es simplemente gobernar un motor (alante-atras-paro) desde un pc en un programa escrito en C con QT-Creator, quiza Arduino te complique mas la vida, porque va a suponer una dificultad añadida a la hora de ejecutar el proyecto, y es que tendras que hacer dos programas en dos lenguajes diferentes, que son QT para el interface del PC y Processing para programar el arduino. Si el control va a ser mas sofisticado (corriente alterna, paso a paso, servo...) entonces sí se justificaria el uso de Arduino.
Si quieres hacer el control directo desde el PC, lo mas facil de todo seria que contaras con un puerto paralelo Centronics (los antiguos puertos de impresora), ya que proporcionan 8 lineas de datos que tu puedes manejar a tu antojo: desde el punto de vista del programa, es tan sencillo como mandar un caracter a la impresora. Sin embargo, este tipo de puertos ya no se encuentran en la mayoria de los Pc.
Parece ser que el heredero es el puerto USB. No conozco el funcionamiento interno del USB, pero me apuesto algo a que es mas sencillo de lo que parece. Lo que te comentaba el compañero acerca de un puerto serie virtual, es que se crea una pieza de codigo que te enseña un puerto serie RS232 y acepta su modo de funcionamiento, y despues se encarga de realizar la transmision utilizando el USB.
Por ultimo, no puedo resistirme a contestarte a un par de cosicas: cuando dices 'que vas con ilusion y no te hace caso la gente y te quedas como un gilipollas...' ¿te das cuenta que la solucion que estas dando a ese problema es ir con menos ilusion???? Rebajas en todo, menos en ilusion y ganas de trabajar.
Y la segunda: 'Espero ha verme explicado '. Si los de la RAE tuvieran comandos los habrian lanzado en pos de ti sin duda alguna.(por favor, no lo tomes a mal).

Si solo quieres controlar un motor puedes usar Ardulab http://www.ardulab.es con una placa Arduino y una shield para el control de motores

Mira
Si lo quieres hacer "a pelo" este codigo de una aplicacion mia te valdra (si no me he equivocado al editarlo) solo tienes que cargarlo al arduino, conectar el serial monitor y mandarle datos, amplialo a tu gusto.
Si te das cuenta, solo emplea el arduino como un mero receptor de ordenes y en funcion de estas pone en alto una salida o la apaga (por ejemplo enciende el motor de tu aplicacion) y de paso devuelve informacion de como estan las entradas.

/*
 * Control desde PC de una salida del arduino y lectura de dos entradas
 * Enviando el numero 3 para encender una salida
 * Enviando el numero 6 para apagar esa salida
 * Enviando el numero 9 devuelve la informacion de las 2 entradas en una trama
 * La trama consta de la letra A para indicar comienzo, los dos bits de las entradas y la Z para indicar final "A00Z"
 */

int salida1 = 13;           // Define una salida en el pin 13
int entrada1 = 4;           // Define una entrada en el pin 4
int entrada1 = 5;           // Define una entrada en el pin 5

void setup()                // se ejecuta cuando se inicia
{
  Serial.begin(9600);       // inicializa puerto serie (usb)
  pinMode(salida,  OUTPUT); // Define el pin 13 del arduino como salida
  pinMode(entrada1, INPUT;  // Define el pin 4 del arduino como entrada
  pinMode(entrada2, INPUT); // Define el pin 5 del arduino como entrada
  Serial.flush();
}

void loop()                           // Se ejecuta todo el rato
{
 variable1 = digitalRead(entrada1);   // lee la entrada1 y la asigna a una variable
 variable2 = digitalRead(entrada2);   // lee la entrada2 y la asigna a una variable
 int val;                             // variable que viene del pc

 if (Serial.available())                       // Comprueba si hay dato en el puerto serie
   {
   val = Serial.read();                        // carga el valor de lo que le envia el PC a la variable var
   if (val == '3') digitalWrite(salida, HIGH); // Pone en alto (+5Vcc) el pin de salida si el dado del PC es 3
   if (val == '6') digitalWrite(salida, LOW);  // Pone en bajo (0Vcc) el pin de salida  si el dado del PC es 6
   if (val == '9') parametros();               // Llama a la funcion parametros
   }
}


void parametros()    // Esta funcion envia de vuelta al PC una trama que empieza con A mas dos bits(entradas) y termina con Z
  {
   Serial.print("A");
   if (variable1 == HIGH) uno(); else cero();   // Si la entrada1 esta en alto, envia despues de la A el bit 1 sino 0
   if (variable2 == HIGH) uno(); else cero();   // Si la entrada2 esta en alto, envia despues del bit anterior el bit 1 sino 0
   Serial.println("Z");                        // Termina de enviar la trama con una z ejemplo: "A11Z"
   delay(300);
   Serial.flush();
  }

void uno() {Serial.print("1");}    // Esta funcion envia un 1 por el puerto serie

void cero(){Serial.print("0");}    // Esta funcion envia un 0 por el puerto serie

Es un proyecto para el "cole"... hay que dejarle a viteri un grado de "investigacion" :smiley:
Por cierto, yo quiero volver a tener 7 anyos para tener a complubot de actividad extraescolar.... :grin:

:wink:

Hola a todos,

Y muchas gracias por contestar....

Igor tiene toda la razon del mundo, no he planteado correctamente ni la pregunta ni el proyecto....

Pero gracias a todos por ayudar... primero lo que hare no es perder la ganas... lo segundo es mirar si encuentro algo mas al respecto de lo que pido, teniendo encuenta lo que me habeis ayudado.

Utilizare el grado de "investigacion"....

Muchas gracias a todos como he dicho