🛠 Potentiomètre et sortie DAC sur la prise audio du GIGA R1
Objectifs
Découvrir le monde analogique du GIGA R1 : lire une tension avec un convertisseur analogique-numérique (3 ADC sur le STM32H747XI) et générer un signal avec un convertisseur numérique-analogique (2 DAC, 12 bits). Particularité de cette carte : la prise jack audio 3,5 mm est câblée sur DAC0, DAC1 et A7 — un vrai projet sonore sans bouclier.
Matériel
- 1 carte Arduino GIGA R1 WiFi
- 1 potentiomètre 10 kΩ
- 1 haut-parleur ou casque sur la prise jack 3,5 mm embarquée
- Filles de connexion, câble USB-C
Code complet
// 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 potentiomètre");
}
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
}
Câblage du potentiomètre : curseur vers A0, une extrémité vers 3,3 V, l'autre vers GND.
Vérification attendue
En tournant le potentiomètre, la hauteur du son généré dans le casque augmente progressivement. En affichant analogRead(A0) sur le Moniteur série, la valeur suit le curseur de 0 à 4095 environ.
Erreurs fréquentes
- Oubli de
analogWriteResolution(12): le DAC est alors sous-exploité et le signal plus grossier. - Haut-parleur direct sans amplification : le niveau DAC est faible, un petit ampli ou un casque donne un bien meilleur résultat.
- Bogue de cartographie ADC documentée :
analogRead(A12)renvoyait la valeur de A8 (bogue #758, fermée) ; re-testez vos broches ADC après chaque mise à jour du cœur. - Alimentation du potentiomètre en 5 V : l'ADC accepte au maximum 3,3 V, vous écrêtez la mesure.
Autres tutoriels pour cette carte
- 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
Exemples de code pour cette carte
clignotante.inoArduinobouton.inoArduinorespiration.inoArduinoanalogique.inoArduinodac-onde.inoArduinooled-i2c.inoArduino