🛠 Potentiomètre et sortie DAC sur la prise audio du GIGA R1
Objetivos
Descubrir el mundo analógico del GIGA R1: leer una tensión con un convertidor analógico-digital (3 ADC en el STM32H747XI) y generar una señal con un convertidor digital-analógico (2 DAC, 12 bits). Particularidad de esta placa: la toma jack de audio de 3,5 mm está cableada a DAC0, DAC1 y A7 — un verdadero proyecto de sonido sin necesidad de escudos adicionales.
Material
- 1 placa Arduino GIGA R1 WiFi
- 1 potenciómetro de 10 kΩ
- 1 altavoz o auriculares en la toma jack de 3,5 mm integrada
- Cables de conexión, cable USB-C
Código completo
// GIGA R1 WiFi — son d'onde en dent de scie sur DAC0 (prise jack), hauteur = A0
#include <Arduino.h>
const int KNOB_PIN = A0; // potentiomètre 0..3,3 V
const int DAC_PIN = DAC0; // sortie DAC reliée à la prise jack embarquée
uint32_t phase = 0;
void setup {
Serial.begin(115200);
analogWriteResolution(12); // le DAC du STM32H747XI est 12 bits (0..4095)
Serial.println("Tournez le potentiometre");
}
void loop {
uint32_t pas = 1 + map(analogRead(KNOB_PIN), 0, 4095, 0, 63);
phase = (phase + pas) & 0xFFF; // retour à zéro sur 12 bits
analogWrite(DAC_PIN, phase); // dent de scie -> son modulable
}
Cableado del potenciómetro: el cursor hacia A0, un extremo hacia 3,3 V y el otro hacia GND.
Verificación esperada
Al girar el potenciómetro, la altura del sonido generado en los auriculares aumenta progresivamente. Al mostrar analogRead(A0) en el Monitor serie, el valor sigue el cursor desde 0 hasta aproximadamente 4095.
Errores frecuentes
> NO VERIFICADO: el número exacto de canales ADC expuestos en el esquema de pines de Arduino no está confirmado (página renderizada en el cliente); pruebe cada pin antes de usarlo.
- Olvidar
analogWriteResolution(12): el DAC queda infrautilizado y la señal es más tosca. - Altavoz directo sin amplificación: el nivel del DAC es bajo, un pequeño amplificador o unos auriculares dan un resultado mucho mejor.
- Error documentado de mapeo ADC:
analogRead(A12)devolvía el valor de A8 (error #758, cerrado); vuelva a probar sus pines ADC después de cada actualización del núcleo. - Alimentar el potenciómetro con 5 V: el ADC acepta como máximo 3,3 V, por lo que recortará la medición.
Otros tutoriales para esta placa
- Faire clignoter la LED de l'Arduino GIGA R1
- Bouton poussoir et console série sur le GIGA R1
- Piloter un micro-servo avec la PWM du GIGA R1
- Connecter un capteur I2C sur le GIGA R1
- Publier des données en MQTT/HTTP via le Wi-Fi du GIGA R1
- Programmer les deux cœurs M7 et M4 du GIGA R1 et les faire communiquer
Ejemplos de código para esta placa
clignotante.inoArduinobouton.inoArduinorespiration.inoArduinoanalogique.inoArduinodac-onde.inoArduinooled-i2c.inoArduino