Problemas generando una señal exponencial

Hola a todos, esta es la primera vez que uso este foro.

Estoy tratando de generar una señal exponencial usando el MCP4725 (un convertidor digital a analógico, con una resolución de 12 bits)
Para generar la señal estoy usando la siguiente ecuación:
y = (x * 0.5) ^ 2
Con esta ecuación solo tomo los primeros 128 valores, porque en este rango obtengo de 0 a 4096 niveles correspondientes a mi 0 a 5V.

Este es mi código:

#include <Wire.h>
#include <Adafruit_MCP4725.h>

Adafruit_MCP4725 dac;

uint16_t datos[128];
int i;
int y;

void setup() {
dac.begin(0x60);
Serial.begin(9600);

for(i = 1; i < 129; i++)
{
y = pow((i*0.5),2);
datos *= y; *

  • }*
    }
    void loop() {
  • for(int j = 0; j < 128; j++)*
  • {*
  • dac.setVoltage(pgm_read_word(&(datos[j])), false);*
  • Serial.println(datos[j]);*
  • }*
    }
    Tengo la ecuación dentro de un “for” para obtener los valores de la ecuación y luego guardo esos valores en la matriz.
    Entonces, el problema es cuando tomo esos valores de la matriz y los envío. Al verificar los valores en el Serial Plotter de arduino obtuvé la siguiente grafica: (Primera imagen)
    Pero luego en el osciloscopio tengo esto: (Segunda imagen)
    ¿Alguien tiene una idea de cuál podría ser el problema o cómo podría resolverlo?

Hola y bienvenido al foro.

Te invito a que te leas las NORMAS para que aprendas a postear correctamente tanto codigo como imagenes.

Cuando escribes el valor en el dac usas pgm_read_word. ¿Por qué? Esa funcion se utiliza cuando has guardado un array en memoria flash usando PROGMEM. En tu caso no tienes ninguno puntero definido, por lo que en el dac te muestra un valor que está almacenado en la memoria flash, totalmente desconocido.

Usa simplemente:

dac.setVoltage(datos[j], false);

Ok muchas gracias por los consejos, revisaré las normas para postear.
Muchas gracias por el consejo, funcionó perfectamente y solucionó el problema. Mil gracias.

Doble posteo.

Hilo cerrado ya que el hilo en ingles esta mucho mas avanzado que este.

Repito lo que te he dicho en el foro en inglés.
La próxima vez que doble postees serás sancionado.
Por favor presta atención a las advertencias.