🛠 GPIO et PWM sur le Teensy 4.1 : 55 broches en 3,3 V, ni 5 V tolérées ni traîne
Objetivos
Aprovechar las E/S del Teensy 4.1: 55 pines en total, de los cuales 42 son fácilmente accesibles en una protoboard (frente a 40/24 en el 4.0). La fila adicional aporta pines PWM dedicados (24, 25, 46, 47, 53 figuran en el mapa PWM oficial). Vamos a leer un botón, generar una variación de luminosidad en PWM, e interiorizar las dos reglas de oro: ningún pin tolera más de 3,3 V (¡cambio radical con el Teensy 3.2!) y la corriente de salida recomendada es de 4 mA por pin (valor prudente de la página de producto).
Material
- 1 Teensy 4.1 + cable micro-USB de datos
- 1 botón pulsador (pin 24 hacia GND, pull-up interno)
- 1 LED + resistencia (~100 a 330 Ω) en el pin 6
- Un potenciómetro de 10 kΩ entre 3,3 V, GND y el pin A0 (pin Arduino 14)
Las reglas eléctricas
- Salida HIGH = 3,3 V; nunca aplicar más de 3,3 V a un pin, ya sea digital o analógico. Una señal de 5 V debe pasar por un traductor de nivel.
- Todos los pines disponen de resistencias de pull-up, pull-down y keeper, y de interrupción por cambio de estado.
- El PWM: 35 pines PWM, 22 grupos que pueden funcionar a frecuencias independientes mediante
analogWriteFrequency. Los canales de QuadTimer4 están reservados por OctoWS2811 y la temporización ADC de la biblioteca Audio — evítelos para PWM general. - Trampa documentada en el pin 13: en entrada, nunca usar
INPUT_PULLUP, el LED integrado polariza el pin.
Código completo
const uint8_t BTN = 24; // broche exclusive du 4.1
const uint8_t LED_PWM = 6; // broche FlexPWM
const uint8_t LED_STAT = 13;// LED orange : jamais INPUT_PULLUP ici
void setup {
pinMode(BTN, INPUT_PULLUP);
pinMode(LED_STAT, OUTPUT);
analogWriteFrequency(LED_PWM, 1000); // 1 kHz, indépendant des autres groupes
analogWrite(LED_PWM, 0);
}
void loop {
if (digitalRead(BTN) == LOW) {
// A0 (broche 14) : 0..1023 sur 0..3,3 V fixes
int v = map(analogRead(14), 0, 1023, 0, 255);
analogWrite(LED_PWM, v);
digitalWrite(LED_STAT, HIGH);
} else {
analogWrite(LED_PWM, 0);
digitalWrite(LED_STAT, LOW);
}
delay(10);
}
Verificación esperada
Botón soltado: LED apagada. Botón presionado: la luminosidad sigue al potenciómetro. El M7 a 600 MHz con sus memorias TCM hace que las escrituras de pines sean mínimas en ciclos de CPU — para un parpadeo a alta frecuencia, prefiera digitalToggle (una sola escritura de bit compilada).
Errores frecuentes
- Conectar un sensor de 5 V directamente: quemar un pin está documentado como el riesgo n.º 1 al pasar de 3.2 a 4.x.
- Superar 4 mA por pin sin transistor: la página de producto es explícita sobre este límite conservador (la tabla de especificaciones técnicas menciona 10 mA — diseñe para 4).
- Confundir numeraciones: el pin analógico A0 es el pin Arduino 14 en todos los Teensy.
- Olvidar el rebote software:
delay(10)sirve como parche, un proyecto real utiliza una biblioteca de antirrebote (p. ej. Bounce).
Otros tutoriales para esta placa
- Premiers pas sur le Teensy 4.1 : Teensyduino, Teensy Loader et premier Blink
- Entrées analogiques du Teensy 4.1 : 18 broches, 2 ADC, 0-3,3 V fixes et zéro DAC
- Logger sur carte SD via le port SDIO natif du Teensy 4.1
- Serveur web embarqué : l'Ethernet natif 10/100 du Teensy 4.1 (DP83825)
- Boîte à rythmes USB MIDI : classes MIDI, MIDIx16 et port hôte USBHost_t36
- Ingénierie mémoire du Teensy 4.1 : TCM, DMAMEM, EXTMEM, flash QSPI et EEPROM
Ejemplos de código para esta placa
clignotante.inoArduinotouche-capacitive.inoArduinoanalogique-12-bits.inoArduinomidi-piano.inoArduinopwm-respiration.inoArduinoservo-angle.inoArduino