servo-angle.ino

Teensy 4.1 · Archivo : servo-angle.ino · Lenguaje : Arduino · Uso : Piloter un servo avec la bibliothèque Servo sur Teensy

Combo típico de Teensy: un toque capacitivo controla la velocidad de un servo de ángulo. La librería Servo del core funciona igual que en los Arduino, y touchRead() da un valor proporcional al contacto para una variación orgánica.

Hardware

Un Teensy 4.1 (NXP i.MX RT1062, Cortex-M7 @ 600 MHz, lógica de 3,3 V, Ethernet y almacenamiento flash adicional) alimentado por USB. 1 servo de ángulo (SG90/MG90S) + cable pelado para el toque capacitivo.

Cableado

Servo: señal al pin 9, + a 5 V (alimentación externa aconsejada), - a GND común. Toque: cable pelado en el pin 0.

Funcionamiento

touchRead() crece con la superficie de contacto; map() lo convierte en velocidad de giro y constrain() limita el ángulo a 0-180°. El servo recibe la posición cada 20 ms.

Ejecución

Teensyduino en el Arduino IDE, placa « Teensy 4.1 », Subir y botón del Teensy Loader. Pines de 3,3 V; el 4.1 añade Ethernet, USB host y pines adicionales.

Variantes

Sustituye el toque por un potenciómetro, o añade un modo «volver al centro» tras 5 s sin contacto.

servo-angle.ino

// Servo d'angle commande par une touche capacitive (combo Teensy).
#include <Servo.h>

Servo myservo;
const int TOUCHE = 0;
const int SEUIL = 500;

int angle = 90;
unsigned long derniereEtape = 0;

void setup() {
  myservo.attach(9); // signal servo sur la broche 9
  myservo.write(angle);
  Serial.begin(9600);
  Serial.println(F("Touche capacitive = vitesse angulaire"));
}

void loop() {
  if (millis() - derniereEtape < 20) return;
  derniereEtape = millis();

  int t = touchRead(TOUCHE);
  if (t > SEUIL) {
    // Plus le contact est grand, plus l'angle tourne vite.
    int vitesse = map(t, SEUIL, 1024, 1, 6);
    angle = constrain(angle + vitesse, 0, 180);
    if (angle == 180) angle = 0; // rebouclage en douceur
    myservo.write(angle);
    Serial.print(F("touche=")); Serial.print(t);
    Serial.print(F(" angle=")); Serial.println(angle);
  }
}

← Volver a la ficha