servo-angle.ino
Combo typique Teensy : une touche capacitive pilote la vitesse d'un servo d'angle. La bibliothèque Servo du core fonctionne à l'identique des Arduino, et touchRead() fournit une valeur proportionnelle au contact pour une variation organique.
Matériel requis
Un Teensy 3.2 (NXP Kinetis MK20DX256, Cortex-M4 @ 72 MHz, logique 3,3 V) alimenté par USB. 1 servo d'angle (SG90/MG90S) + fil nu pour la touche capacitive.
Câblage
Servo : signal sur 9, + sur 5 V (alimentation externe conseillée), - sur GND commun. Touche : fil nu sur la broche 0.
Fonctionnement
touchRead() augmente avec la surface de contact ; map() convertit en vitesse de rotation, constrain() borne l'angle à 0-180°. Le servo reçoit la position courante toutes les 20 ms.
Exécution
Installer le plugin Teensyduino dans l'Arduino IDE, choisir la carte « Teensy 3.2 », cliquer sur Téléverser puis sur le bouton du Teensy Loader. Attention : broches en 3,3 V.
Variantes
Remplacer la touche par un potentiomètre, ou ajouter un mode « retour au centre » après 5 s sans contact.
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);
}
}