Go Down

Topic: MDC v1.0 + FT810 Beta 11 (Read 5062 times) previous topic - next topic

lightcalamar

Jan 16, 2017, 12:51 pm Last Edit: Apr 17, 2017, 12:35 pm by lightcalamar
Hola a todos.

Después de tiempo les presento mi nuevo proyecto. En estos momentos esta en fase beta de su desarrollo, pero voy avanzando en el mismo.



Se trata de un Multi Data Center, dicho de otra forma un centro de datos con varios sensores y una Radio de FM con RDS incluida.
En si se han presentado varios problemas, algunos solucionados y otros por resolver. A día de hoy consta de estos elementos;
Radio con chip SI4703
Pantalla FT800
Barometro BMP085
Sensor temperatura DHT22
Modulos RF 433 para temperatura exterior
Reloj DS1307
Amplificador 10+10W
Lector MP3 (que habla la pantalla)
Modulo GPS
y mas dispositivos sobre la improvisación.



En los créditos de esta versión 1.0 podré los nick´s de aquellos que me ayudaron.

SISTEMA UI (User Interface)

Sección Sistema.

Menús para acceder al control del mismo siendo;
Control de brillo de la pantalla. [SOLUCIONADO]
Diagnostico Buses I2C de los módulos. [SOLUCIONADO]
Función DIMMER. Brillo de la pantalla según ambiente luminoso. [POR RESOLVER]
Sistema Reset por Software. [POR RESOLVER] ([SOLUCIONADO]  20 - 01 - 2017)
Control Audio Spectrum. [SOLUCIONADO]
Estado de la memoria.[SOLUCIONADO]
Modificar reloj maestro del sistema[POR RESOLVER]










Seccion GPS.

Imprimir correctamente; longitud y latitud. [SOLUCIONADO]
Muestra hora y fecha, con puntos parpadeantes.[SOLUCIONADO]
Mostrar cuidad según coordenadas. [POR RESOLVER]
Grabar datos a memoria EEPROM.[POR RESOLVER]



Sección Estación Meteorológica.

Impresión temperatura y humedad interior. [SOLUCIONADO]
Impresión temperatura y humedad exterior.  Vía radio 433MHz. [SOLUCIONADO]
Exactitud impresión temperatura grados negativos. [POR RESOLVER]
Presión atmosférica.[SOLUCIONADO]
Actualización datos a 30 metros. [SOLUCIONADO]



Sección Radio FM.

Muestra la información RDS de la emisora.[SOLUCIONADO]
Sintonia fina. [SOLUCIONADO]
Sintonia próxima.[SOLUCIONADO]
Forzar "muting".[SOLUCIONADO]
Representar logotipos emisoras. [POR RESOLVER]
Indicación Stereo/Mono en pantalla con cartel. [SOLUCIONADO]
Forzar Mono.[SOLUCIONADO]
Seleccion 18 emisoras preseleccionadas (Presets).[SOLUCIONADO]
Indicación frecuencia con decimales (MHz).[SOLUCIONADO]
Subir canal +[SOLUCIONADO]
Bajar canal -.[SOLUCIONADO]
Mostrar indicador volumen numérico.[SOLUCIONADO]
Mostrar indicador frecuencia barra progreso.[POR RESOLVER]
Grabar datos volumen y frecuencia en EEPROM.[POR RESOLVER]










Funciones extras del HARDWARE.

Modo salva-pantalla, función desvanecimiento (FADE).[POR RESOLVER] ([SOLUCIONADO] - 17-01-2017)
Modo recuperación pantalla sensor ultrasonidos.[POR RESOLVER]
Sonidos generados por la pantalla a los menús.[SOLUCIONADO]
Sonidos formato MP3 según funciones. [SOLUCIONADO]
Amplificador audio 10+10 watios.[POR RESOLVER]
Spectrum audio 14 bandas. [POR RESOLVER]
Vu-Meter audio, con 5 funciones. Modulo de 30 leds por canal. [SOLUCIONADO]




Futuribles.

Mostrar logotipos de emisoras en assets.
Poner fondos de imágenes en pantalla según funciones.
Cambiar fuentes grandes según función.


Materiales usados.

1 Pantalla FT800 de 5 pulgadas táctil resistiva
1 Lector serie MP3
1 Receptor-Emisor RF 433MHz
2 DHT22
1 EEPROM 24C32
1 DS1307
1 Modulo SI4703
1 Shiel buffer digital (cosecha propia)
1 Arduino modelo Nano (Emisor RF)
1 Arduino modelo MEGA
1 Modulo VU-Meter 30 led por canal.
1 Modulo BMP085


Se encuentra en fase beta 3. Adjunto fuentes del mismo. Cualquier sugerencia, duda y/o mejora es bienvenida. Agradezco a los usuarios; surbyte, TFTLCDCyg, Alfaville, RndMnkIII jamesbowman por su desinteresada ayuda. Tengo que depurar todavía el código. Estoy intentando dentro de las hojas de código, explicar, así como todo lo el conexionado del hardware.

A todo esto, no hay ningún botón, encoder etc.. todo desde la misma pantalla..

Editaré el mensaje para poner capturas y vídeo.
Hasta el próximo mensaje.

Editado 17-01-2017: Solucionado función FADE y Salva-Patanllas. Sección Hardware.
Editado 20-01-2017: Solucionado función reset por Software..
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Alfaville

Un proyecto bonito y ambicioso.
Eres grande.

Voy a echar un ojo al ZIP e intentar comprender el flujo del programa por si puedo prestar alguna ayuda.

Saludos.

lightcalamar

Posiblemente tenga errores, pero poco a poco. Gracias por tu interés Alfaville te lo agradezco mucho.

También dispondrá una función de ayuda tanto en diapositivas como hablado a través el lector serie MP3, de esta forma cuando vengan familiares y amigos a casa, dará el pego  :)  :)  :)

Estoy de momento liado con realizar el modulo definitivo del Amplificador de audio. En el próximo mensaje pondré los enlaces donde compré todo el material necesario.

Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Alfaville

Errores tiene varios, que yo haya visto en un primer repaso.
Pero lo que me hace mas dificil el poder analizar el código es la aparente anarquia en los modulos usados.

Sirva como ejemplo que hay dos funciones <void setup()> con distinto contenido.

Estoy intentando darle formato para poderlo leer en condiciones (faltan algunas llaves }) porque si no me pierdo.

Creo que deberias distribuir la ejecucion desde el <void loop()>
Code: [Select]
void loop()
{
    funcion1();
    funcion2();
    funcion3();
    .
    .
    .
}
en lugar de usar el <while(1)> que creo no te va a funcionar en la mayoria de los casos, por ejemplo en <fade()> (hay mas), ya que haces un bucle do-while(1) que jamas alcanza la condicion de salida.

Repito que puedo estar equivocado porque no he podido poner orden en el codigo para analizarlo. En ello estoy.

lightcalamar

Tienes razón. Pero hay un problema.
Estas pantallas, todo está construido sobre la librería Gameduino 2 y es muy caprichosa a la hora de representar los datos en ellas. Es totalmente diferente a las convencionales. El usar el do while es porque de otra forma no se imprime nada, bueno sí pero entonces el orden es muy diferente. Los ejemplos de TFTLCDCyg fueron en los que me inspiré

Si te has fijado el loop ni lo uso esta en "blanco", es exacto, sin embargo no me hace falta.
Tengo que quitar todo lo que imprime por Serial, lo he conservado por controlar al dia de hoy posibles fallos.

También tengo que intentar reafinar el código. Actualmente me usa;



Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Alfaville

#5
Jan 16, 2017, 06:03 pm Last Edit: Jan 16, 2017, 06:06 pm by Alfaville
Correcto, pero el sistema <do - while(1)> y los while(1) en general se prodigan tanto que no creo que sea operativo.

Por otro lado pese a los "caprichos" de la libreria Gameduino2, no deja de ser software y podrá manejarse como tal.
Lo que ocurre es que, a veces, no basta con copy-paste, ahora coloco esto aquí, etc,. sino que hay que replantearse el flujo del programa completamente.

Si me necesitas cuenta conmigo para optimizar y/o depurar el código.
No he usado muchas de las librerias que pones, pero eso no importaria para analizar el programa.

lightcalamar

Correcto, pero el sistema <do - while(1)> y los while(1) en general se prodigan tanto que no creo que sea operativo.
Te equivocas amigo Alfaville.
Esto es porque lo mismo no has usado estas pantallas FT8xx o bien si quieres mas ejemplos, pantallas gráficas con la librería U8glib.

Imagínate que tienes un libro. Los libros tienen paginas, pues bien las paginas se pueden mirar unas u otras, y cuando se leen se tienen que hacer constantemente, es decir que leas las que desees, entonces interpretado en programación sería que tengan un loop, entonces si bien dices que no es operativo, como se hace?. Yo te lo digo con un <do .. while> no hay otra forma.

Muchas de las funciones que he realizado en mi proyecto, son los ejemplos de las librerías por defecto, estos me han ayudado como no a realizar un copy-plaste del mismo, pero claro adaptándolo a mi necesidad.

Cambiando de tema. He resuelto al menos hoy dos circunstancias; la función fade y el salva-pantalla a mi proyecto.

Ahora lo veo sencillo. Todo es buscar. No invento nada y es mas pongo los enlaces del mismo y de esta forma se aprende. La función fade (desvanecimeinto del brillo de la pantalla) entraba en loop continuamente, la solución es adaptar (porque en Google se encuentra de todo) detener una función concretamente HowTO Stop a loop Arduino, así el código me ha quedado de esta forma;
Code: [Select]

 boolean parar_fade = true;
void fade() {

   if(parar == true){
  
   GD.wr(REG_PWM_DUTY, 90);  
   delay(300);
   GD.wr(REG_PWM_DUTY, 80);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 70);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 60);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 50);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 40);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 30);  
   delay(200);
   }
  parar_fade = false;  
   }


La función del salva-pantallas es y me da risa del porque no me funcionaba. Solo estaba en temporizar fuera del bucle <do ... while> las sentencias de inicio del mismo, luego realizar una comparación con un if  y ahora es operativa. He usado la librería de https://github.com/Mandragoratools/Temporizador de este foro en este mensaje de Mandragoratools y ha quedado de esta forma por ejemplo de mi función GPS;
Code: [Select]

void migps(){
     Temporizador tempo1;
     tempo1.temporizar(0,0,0,30,0);
     do{
    .....
    .....

    .....
             }
      if(tempo1.completado()){
          salva_pantalla();
     }
    GD.swap();
     }
   while(1);
}


Hasta el próximo mensaje.


Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Alfaville

Correcto lightcalamar no he utilizado nunca esas pantallas y por eso me parecia raro, pero si es así pues disculpa mi error.

Al menos de algo sirvio mi advertencia:

... en lugar de usar el <while(1)> que creo no te va a funcionar en la mayoria de los casos, por ejemplo en <fade()> (hay mas), ya que haces un bucle do-while(1) que jamas alcanza la condicion de salida.

Repito que puedo estar equivocado porque no he podido poner orden en el codigo para analizarlo. En ello estoy.
Cambiando de tema. He resuelto al menos hoy dos circunstancias; la función fade y el salva-pantalla a mi proyecto.

Ahora lo veo sencillo. Todo es buscar. No invento nada y es mas pongo los enlaces del mismo y de esta forma se aprende. La función fade (desvanecimeinto del brillo de la pantalla) entraba en loop continuamente...
Bueno, lo importante es que tu proyecto progrese de forma adecuada.

Seguire atento a tus mensajes sobre el mismo.
Saludos.

TFTLCDCyg

#8
Jan 18, 2017, 09:23 am Last Edit: Jan 18, 2017, 09:37 am by TFTLCDCyg
Wow no pensé que manejaras tantos elementos. Felicidades por el proyecto.

Claro que se puede emplear el loop principal como eje de programación, sin embargo cuando el sketch crece, nos acercamos al limite de instrucciones que estas pantallas pueden manejar: 2048 por vez, al alcanzarlo la pantalla deja de funcionar. En tanto nos familiarizamos mas con el funcionamiento de la líbreria del gameduino 2, es preferible dejar void loop al margen.

La mejor forma de evitar ese límite es creando funciones independientes, que solo se llaman cuando se les requiere y que además, nos brinden la posibilidad de mantener ciclos independientes a void loop. La mejor forma de conseguir funciones con esas características es usando la instrucción while(1){} dentro de ellas, se pueden usar otras instrucciones cíclicas, eso dependerá de que tan familiarizado esté el programador con ellas.

Para salir de los ciclos basta con asignar una instrucción que dependa de la pantalla táctil: texto, algún número, un botón, una imagen, etc, indicando que se llame otra función como por ejemplo la que corresponde al menu principal.

Alfaville

@TFTLCDyg

Gracias por tu explicacion.

Me ha ahorrado desenterrar libros ya olvidados porque, al no saber el detalle de las pantallas, no lograba encontar una explicacion racional al tipo de programacion que lightcalamar está usando, obligandome a recomendar correcciones en su mayor parte innecesarias.

Dime cual es la última version funcional que usais de la libreria para descargarla e intentar "ponerme al dia"

Saludos

lightcalamar

#10
Jan 18, 2017, 10:53 am Last Edit: Jan 18, 2017, 11:03 am by lightcalamar
Este es el enlace para GD2 y GD3, lo que pasa tendrás que leer todo el hilo, pues hay varias versiones que TFTLCDCyg ha realizado.

Por cierto la familia irá creciendo. Tengo en mente poner mas módulos y/o sensores. De momento se me ha ocurrido realizar un display de 7 segmentos, en el inicio de la pantalla realizará un chequeo y dependiendo del numero que de, sabré que modulo no es reconocido y tengo fallos.

El bus I2C es muy malo cuando  falla algún modulo conectado, vamos se queda la pantalla en negro total y de esta forma puedo averiguar donde esta. A todo ello le voy a poner un sensor de ultrasonido mas para realizar un simple interruptor para activar mi modulo Spectrum.

Es que le he cogido manía en no poner botones ni pulsadores externos al proyecto. Todo táctil y funciones de movimiento.

 

Saludos.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Alfaville

Rellenaremos huecos y le dare un repaso.

Gracias

Alfaville

@lightcalamar

Por si fuera de ayuda, los enlaces que ofreces en hilo gameduino  no funcionan.

Ambos tienen basura al comienzo:

http://"http//www.hotmcu.com/5-graphical-lcd-touchscreen-480x272-spi-ft800-p-124.html?cPath=6_16%22

 Quizás alguien los intente seguir como me ha pasado a mi (yo ya lo solucioné).

lightcalamar

Si es verdad. Lo reporte a Hector que existía problemas en según que enlaces, me comento que no solo me pasaba a mi, es un problema general del foro. Aunque los edite pone al principio http://"http//www.hotmcu.com/, creo con enlaces cortos no pasa.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Alfaville

Mala suerte.

Por cierto he accedido a la pagina del modelo:  FT811 capacitiva   buscando informacion y la verdad me he liado un poco.

Dime si este hilo es adecuado o continuo en el de la libreria Gameduino2...

Como verás mi link funciona .. jejeje.

Go Up