Configuration esp32 servo sg90

Bonjour,

J ai suivi ce tuto pour commander un servo moteur sg90 avec un esp32 :

ButtonBot - A DIY solution to automate any switch with Home Assistant (https://www.youtube.com/watch?v=m4piXUvdtM8)

Je ne suis pas un crack en électronique, et j ai surtout copié/collé et demandé de l’aide a perplexity.

Quand je mesure le voltage aux bornes ground et D5; j’ai 0.25V, puis quand j’appuye sur « turn off » le courant passe temporairement (1 a 2 secondes) a 0.15V et , 0.35V sur « turn on »

Donc, a priori ca devrait tourner… j’ai acheté un lot de esp32 et un lot de servo sur aliexpress, j ai donc testé avec différents esp32 et différents servo. ca ne bouge pas…

NodeMCU CH340 ESP-12E ESP8266 :

SG90 9G Micro Servo, version 360° :

ca doit être tout bête mais je ne trouve pas…

Merci

mon code yaml :

esphome:
  name: esphome-web-657e2c
  friendly_name: esphome-web-657e2c
  min_version: 2025.5.0
  name_add_mac_suffix: false

esp8266:
  board: esp12e

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:
  - platform: esphome

wifi:
  ssid: "********"
  password: "********"

output:
  - platform: esp8266_pwm
    id: pwm_output
    pin: GPIO14
    frequency: 50 Hz

servo:
  - id: my_servo
    output: pwm_output

number:
  - platform: template
    id: servo_value
    name: "Servo Position"
    min_value: -100
    initial_value: 0
    max_value: 100
    step: 1
    optimistic: true
    set_action:
      then:
        - servo.write:
            id: my_servo
            level: !lambda "return x / 100.0;"

  - platform: template
    id: press_duration
    name: "Press Duration"
    min_value: 200
    initial_value: 500
    max_value: 5000
    step: 100
    mode: box
    optimistic: true

  - platform: template
    id: press_distance
    name: "Press Distance"
    min_value: 0
    initial_value: 60
    max_value: 100
    step: 1
    mode: box
    optimistic: true

button:
  - platform: template
    name: "Turn On"
    id: my_btn_on
    icon: "mdi:light-switch"
    on_press:
      - number.set:
          id: servo_value
          value: !lambda "return id(press_distance).state;"
      - delay: !lambda "return id(press_duration).state;"
      - number.set:
          id: servo_value
          value: 0

  - platform: template
    name: "Turn Off"
    id: my_btn_off
    icon: "mdi:light-switch-off"
    on_press:
      - number.set:
          id: servo_value
          value: !lambda "return id(press_distance).state * -1;"
      - delay: !lambda "return id(press_duration).state;"
      - number.set:
          id: servo_value
          value: 0

Bon je pense avoir compris, j’ai commandé des versions 360° au lieu de 180°…