Skip to content

Example 37: Rotary Encoder ​

Experiment Overview ​

A rotary encoder generates two quadrature pulse signals (A/B phases) when rotated, enabling detection of rotation direction and angle. FastBee includes the built-in ENCODER peripheral type (type: 43) for rotary encoder support.

Hardware Wiring ​

Board LabelGPIO PinConnected Device
CLK (A)GPIO34Encoder A phase
DT (B)GPIO35Encoder B phase
SWGPIO4Encoder button (optional)

JSON Configuration Example ​

json
{
  "peripherals": [
    {
      "id": "encoder_01",
      "name": "Rotary Encoder",
      "type": 43,
      "enabled": false,
      "pins": [34, 35],
      "params": {}
    }
  ]
}

Peripheral Execution Linkage ​

Scenario: Encoder-Controlled LED Brightness (Polling Trigger + Script) ​

Feature: Rotate encoder to adjust LED brightness (PWM duty cycle)

Web UI Configuration Steps ​

Step 1: Ensure PWM LED Peripheral is Configured

  • Peripheral ID: pwm_breath
  • Type: GPIO PWM Output

Step 2: Create Rule

  1. Click Peripheral Execution in the left menu
  2. Click New Rule button
  3. Fill in basic configuration:
    • Rule Name: Encoder Dimming
    • Report Data: ✅ Enabled
    • Enable: ✅ Enabled

Step 3: Configure Trigger (Polling Trigger)

  1. Click Add Trigger button

  2. Fill in trigger configuration:

    FieldValueDescription
    Trigger TypeSelect Polling TriggerDetect changes
    Target PeripheralSelect encoder_01Rotary encoder
    Polling Interval5050ms (fast response)
    Condition Expressionchanged == trueWhen value changes

Step 4: Configure Action (Script Conversion)

  1. Click Add Action button

  2. Fill in:

    • Action Type: Select Command Script
    • Action Parameter:
    var pos=encoderRead('encoder_01');
    var duty=Math.min(255,Math.max(0,pos*5));
    pwmWrite('pwm_breath',duty);
  3. Click Save button

Rotary Encoder Value Reference ​

Rotation DirectionCount ValueDescription
Forward (Clockwise)IncrementA phase leads B phase
Reverse (Counter-clockwise)DecrementB phase leads A phase
Button PressSeparate detectionSW pin (GPIO4)

Notes ​

  1. Interrupt-Driven: FastBee uses interrupts to detect encoder pulses, no steps lost
  2. Direction Detection: A phase leading B phase = forward; B phase leading A phase = reverse
  3. Debouncing: Mechanical encoders bounce; add 100nF capacitor in hardware or debounce in software
  4. Count Range: Internal counter is int32, supports positive/negative counting
  5. Pin Selection: Use interrupt-capable pins recommended

FastBee | fastbee.cn