Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Multifuncion en arduino
#1
Llevo desde este verano buscando esta informacion y por lo que se no se pueden cargar varios sketch en un procesador atmega 328p pu sin que se pisen entre si, especialmente si introducimos la funcion de los delays
Alguien sabe como podemos unir varios proyectos de arduino utilizando un mismo procesador? Sin tener que hacer un proyecto = un procesador
Se hacen robots con arduino, se tiene que poder hacer esto que digo


Enviado desde mi iPhone utilizando Tapatalk
Citar
#2
No entiendo muy bien que quieres hacer. Cargar un código no lleva mas de 1 min
Citar
#3
Estoy construyendo un avion radio control de 1,53m entonces le quiero poner funciones controladas por arduino, quiero que arduino se encargue de las luces de navegacion, de controlar los flaps y estabilizador con joystick, el timon y acelerador con potenciometros entonces cada proyecto:
1 luces
2 joystick - 4 servos (alerones y estabilizador de cola)
3 potenciometro - servo (timon)
4 potenciometro - servo (acelerador)
Cada uno lo tengo que montar independientemente es decir coger una pcb con un microprocesador atmega 328 p pu y en estas cosas el peso es un factor importante si en vez de 4 circuitos de arduino puedo poner solo uno que me controle todo eso mejor


Enviado desde mi iPhone utilizando Tapatalk
Citar
#4
Todo lo que dices se puede hacer con un buen uso de recursos y de programación. ¿Sabes programar?, es por donde deberías empezar
Citar
#5
A ver se programar lo basico con arduino esos proyectos los tengo hechos y funcionan pero poco mas


Enviado desde mi iPhone utilizando Tapatalk
Citar
#6
(14-11-2016, 10:44 PM)antonio_gt_9.2 escribió: A ver se programar lo basico con arduino esos proyectos los tengo hechos y funcionan pero poco mas


Enviado desde mi iPhone utilizando Tapatalk

Algo que has de tener muy claro es que un microcontrolador como arduino solo puede ejecutar un programa a la vez, no es como un ordenador actual, que tiene varios núcleos. Se puede decir que el arduino solo tiene un único núcleo y es compartido por todas las tareas.

Dicho esto, tienes varias opciones:
- Puedes utilizar un administrador de tareas, un scheduler, hay códigos por ahí que te permiten lanzar tareas temporizadas y gestionan delays sin bloqueo.
- Puedes aprender a programar utilizando funciones y delays no bloqueantes (Sin usar el delay(), utilizando variables y la función millis() para gestionar tiempos)
- Puedes aprender a utilizar interrupciones, cosa que es útil si quieres lanzar fragmentos de código cada X tiempo o bien cada vez que determinada entrada cambia de estado.

Lo que debes tener también claro es que tu no puedes coger dos códigos aleatorios de arduino y juntarlos a la lijera, debes adaptarlos para que sus setup() y loop() no se pisen... lo más normal y recomendable es que, viendo el código de ambos programas, hagas tu programa de 0 con las funciones que te interesen en lugar de hacer cosas raras, copiando y pegando no vas a aprender al final, y si hay errores, nunca sabrás que los causa.

Lo dicho, te recomiendo aprender a utilizar la función millis() para gestionar los tiempos, y que destierres la función de delay al infierno, pues una vez lo hagas aprenderás que los delays son una mierda, un delay gestiona el tiempo "esperando" sin hacer absolutamente nada, cuando podrías estar haciendo otras cosas en ese tiempo, como gestionar otras partes del código.
Citar
#7
Lo que te han dicho por ahí arriba, sketchs solo puedes ponerle uno al arduino (no son programas que se ejecutan, si no más bien es un firmware, por lo que solo le puedes poner un firmware al dispositivo), lo que si puedes hacer, es un sketch que controle todo lo que quieres a la vez, puede ser complicado al principio, pero es cuestión de organizar el código. Con la opción de juntar todo el código en uno, pueden surgir varios problemas, por ejemplo que el código resultante sea muy grande para la memoria del arduino y la excesa (no se pueda copiar al arduino), o que controles tantas cosas que vaya "lento", si por ejemplo prima que sea lo más real-time posible, quizás te interese o usar un micro más potente o tener varios arduinos para descargar carga de trabajo.
Citar
#8
Ok y cuanto voltaje soporta el 328 ppu? Es decir me gustaria conectar esos arduinos independientes a una bateria nimh de 6v y que funcionen todos esos servos que trabajan entre 4.5-6v


Enviado desde mi iPhone utilizando Tapatalk
Citar
#9
Los microcontroladores suelen funcionar a 5v, el arduino desde luego lo hace. Lo que ocurre es que el arduino suele tener unas entradas para alimentacion a mas de 5v que lo que hacen es pasar por un regulador de tension que baja la tension que le des a 5v.
No se que arduino utilizaras, pero habitualmente esas entradas de alimentacion vienen marcadas en placa como (RAW o Vin) el positivo, y gnd el negativo. Tambien es probable que tengas un conector de alimentacion para un cargador, habitualmente se usan 9v o 12v para alimentarlo desde ahi, aunque cualquier valor por encima de 6.25v y por debajo de 13v suele funcionar.

Debes especificar tu placa exacta para poder decirte algo mas exacto, aun asi deberias poder encontrar sus especificaciones por google, eso si... alimentar servos con baterias... mas vale que sean potentes, porque los servos suelen dar problemas con sus consumos y interferencias, y como te consuma demasiado, puede que se te reinicie el arduino al moverlo.
Citar
#10
Yo utilizo arduino uno, con los procesadores atmega 328 p-pu lo que si estoy pensando es en que todas las funciones que controlen servos con potenciometros juntarlas en un mismo sketch ya que los codigos de estos no utilizan delays y ademad un joystick no es otra cosa que dos potenciometros solo conectando el cable de datos del potenciometro a otro de los pines funcionarian en un mismo procesador?


Enviado desde mi iPhone utilizando Tapatalk
Citar
#11
Puedes conectar los potenciometros que quieras siempre y cuando los conectes a una entrada analogica, en tu caso, tienes 6 si mal no recuerdo. (Analog In, de la A0 a la A5)

Puedes leer sus valores independientemente utilizando la funcion analogRead, esto te dara un valor numerico comprendido entre 0 y 1023.

Para controlar los servo tienes librerias en las que creas el objeto servo y el solito se encarga de enviarle la señal pwm que necesita para ponerse en posición, tu solo tendrias que especificarle en que pin esta conectado el servo y la posición que tu quieras.
Citar
#12
Pero puedo juntar los codigos de un joystick y el de un potenciometro?


Enviado desde mi iPhone utilizando Tapatalk
Citar
#13
Sintiendolo mucho voy a decir lo que pienso, no entiendo lo que quieres hacer, ni tu pregunta, por lo que a mi respecta te veo bastante perdido en cuanto a programación, dicho esto, te aconsejo que antes de intentar hacer cosas raras mezclando codigos de diferentes programas, empieces por lo basico para habituarte a programar.

Una vez domines el control basico de un programa, lo que son las funciones setup y loop, asi como el manejo basico de puertos y funciones, podrás reciclar trozos de otros programas y unirlos en un solo sketch, mientras tanto, lo que yo veo es que quieres conducir un ferrari solo sabiendo andar en bicicleta..., he visto varios posts tuyos y no se si es que no te explicas bien, o quieres abarcar mas de lo que sabes y no te aclaras, lo siento pero es lo que veo.



Dicho esto, te aconsejo de nuevo que aprendas antes la estructura basica de un programa de arduino y te empapes de información antes de liarte con librerias, joysticks, pantallas y servos, la programación de microcontroladores es un tanto diferente a la programación de aplicaciones de ordenador, y uno debe aprender antes...

Espero que no te ofendas con este comentario, simplemente te veo algo perdido en cuanto a la programación de microcontroladores, no es malo querer montar una aplicación compleja desde el principio(sobretodo si ya sabes programar en otros lenguajes), pero no es lo adecuado sin haber aprendido antes lo basico.


PD: Tu idea general de controlar todo mediante un solo arduino es posible, solo que para ello no puedes hacer un copia-pega, debes ver el codigo y juntarlo todo en un sketch adaptandolo, poder se puede perfectamente, solo que deberas aprender antes como funciona la estructura del programa para no liarla.
Citar
#14
Por supuesto soy un aficionado a esto de arduino y llevo poco tiempo pero si que he montado proyectos y modificado codigos fuente que he descargado ya hechos si tuviera mas tiempo libre me emparia como tu dices pero tengo ciertas limitaciones por motivos de trabajo y de estudios soy dentista y ademas estoy opositando asique soy totalmente ajeno al campo de la electronica y la programacion pero hago lo que puedo por eso recurro a un foro en el que espero contar con la ayuda y opinion de personas que saben mas que yo.
Gracias!


Enviado desde mi iPhone utilizando Tapatalk
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  ¿Arduino MEGA o Arduino ADK? igargi 7 1,232 25-08-2013, 04:58 PM
Último mensaje: cansi22