6 Respuestas Última respuesta el Dec 18, 2014 11:10 AM por Teth

    Como crear datos de una señal senoidal por codigo para enviar por pin de salida analogico

      Saludos.

       

      Soy Teth Cortes, del Instituto Tecnológico superior de Zapopan.

       

      Y tengo algunas dudas, que ojala alguien me pueda apoyar:

       

      1. Es dificil encontrar la comunidad de GALILEO en el sitio de INTEL, sobre todo por que encuentro que existe una en ingles y otra en español. ¿Cual es el enlace URL para la comunidad de galileo?

       

      2. Por otro lado tengo una pregunta técnica. ¿Como puedo hacer que a través de un pin analógico de Galileo? enviar datos de una señal senoidal (sampling) donde requiero modificar frecuencia (Periodo) y amplitud. Esta información.

       

      Mi aplicación consiste:

       

      sensor -> Galileo -> envía los datos analógicos -> a una pantalla que muestra la grafica de la señal variando en amplitud y tiempo.

       

      Quiero hacer algo similar a un Instrumento registrador, pero primero requiero que Galileo simule los datos del sensor. 

       

      Gracias.....

        • Re: Como crear datos de una señal senoidal por codigo para enviar por pin de salida analogico
          gerardo.soria22

          Hola, bienvenido a la comunidad.

          Respondiendo a tus preguntas, la comunidad aún no cuenta con url corta, por el momento puedes acceder directamente con la siguiente liga: Comunidad - Intel Galileo.

          Para la segunda pregunta necesitamos mas detalles de tu aplicación, ya que las salidas "Analógicas" de la tarjeta Galileo no pueden generar señales analógicas como tal, lo que generan es una señal PWM que emula una señal analógica en el control de ciertas cargas como: el brillo de un LED o la velocidad de un Motor al variar el voltaje promedio que se les entrega. Saludos

            • Re: Como crear datos de una señal senoidal por codigo para enviar por pin de salida analogico

              Este es el código que cargue en el uc.

               

               

              #include <LiquidCrystal.h>

              LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

              const float  pi=3.1415926;

              void setup() {

                 Serial.begin(9600);

                  lcd.begin(16, 2);

                  lcd.clear();

                  lcd.setCursor(0,0);

                  lcd.print ("valor: ");

              }

               

               

              void loop() {

                 lcd.setCursor(0,1);

                 String stringVal = "";

                 for (int i=0; i<361; i++) {

                   float valor= (pi/180.0)*i;

                   double res=sin(valor);

                   Serial.println("SENO      DEG    RAD");

                   Serial.print(res,5);

                   Serial.print("   ");

                   Serial.print(i);

                   Serial.print("     ");

                        stringVal = float2str(valor);

                        Serial.print(stringVal);

                        Serial.println(" ");

                    lcd.setCursor(0,1);

                    lcd.print (stringVal);

                    delay(300);

                 }

              }

               

               

              String float2str(float IN)               // Función para convertir float a string;

              {

              String Val;

                 Val +=String(int(IN))+ "."+String(getDecimal(IN));

                 return(Val);

              }

               

               

              long getDecimal(float val)               // Función para tomar las cifras decimales;

              {

              int intPart = int(val);

              long decPart = 10000000*(val-intPart);  

                if(decPart>0)return(decPart);           

              else if(decPart<0)return((-1)*decPart);

              else if(decPart=0)return(00);          

              }