# Wireless NeoPixel Controller

## Overview

https://youtu.be/gHeHKsnjwZo

Build a control box with a NeoTrellis and Feather M0 Radio and use it to wirelessly control multiple strands of NeoPixels. Use the FastLED library to add beautiful NeoPixel color effects. With no line-of-sight requirement (like with infrared remotes) and no pairing requirement (like with Bluetooth or WiFi), the LoRa radio control works over long distances and in crowded environments. It's hard to pair to a Bluetooth device when there are 200 phones in the vicinity cluttering up the bandwidth! This controller box will solve that problem.

This project was created for onstage or performance environments, where a portable and easy-to-setup pixel controller can come in very handy. It can also be used to control your holiday lights display, to coordinate costumes at a festival, or for a zillion other applications where you want ultimate wireless NeoPixel control with no interference.

![](https://cdn-learn.adafruit.com/assets/assets/000/069/339/medium800/wireless_neoTrellis_gradients.jpg?1547501827)

## Parts and Materials

The essential parts&nbsp;for your controller are:

- Packet radio Feather microcontroller and antenna as the brains of the transmitter. Your choice of 900MHz for US, 433MHz for ITU Europe, in either M0 or 32u4 processor variant. The RFM69HCW radios are the easiest to set up and a bit less expensive, while the LoRa boards are slightly more involved to set up, but longer range
- NeoTrellis Button Pad & Elastomer buttons
- OLED display FeatherWing
- Rotary encoder for menu selection

For the receivers you'll need:

- Another Feather M0 microcontroller that exactly matches the one inside the transmitter
- [Neopixels](https://www.adafruit.com/?q=neopixel) -- any format will work
- A battery to power the NeoPixels

### Part: Feather M0 Packet Radio
quantity: 4
Adafruit Feather M0 RFM69HCW Packet Radio - 868 or 915 MHz
[Feather M0 Packet Radio](https://www.adafruit.com/product/3176)

### Part: NeoTrellis
quantity: 1
NeoTrellis RGB Driver PCB for 4x4 Keypad
[NeoTrellis](https://www.adafruit.com/product/3954)

### Part: Silicone Keypad
quantity: 1
Silicone Elastomer 4x4 Button Keypad - for 3mm LEDs
[Silicone Keypad](https://www.adafruit.com/product/1611)

### Part: Antenna
quantity: 1
900Mhz Antenna Kit - For LoPy, LoRa, etc
[Antenna](https://www.adafruit.com/product/3340)

### Part: Antenna Connector
quantity: 1
uFL SMT Antenna Connector
[Antenna Connector](https://www.adafruit.com/product/1661)

### Part: Battery
quantity: 5
One for the Control box and one for each NeoPixel receiver
[Battery](https://www.adafruit.com/product/328)

### Part: FeatherWing OLED
quantity: 1
Adafruit FeatherWing OLED - 128x32 OLED Add-on For Feather
[FeatherWing OLED](https://www.adafruit.com/product/2900)

### Part: Short Female Headers
quantity: 1
Short Headers Kit for Feather - 12-pin + 16-pin Female Headers
[Short Female Headers](https://www.adafruit.com/product/2940)

### Part: Short Male Headers
quantity: 1
Short Feather Male Headers - 12-pin and 16-pin Male Header Set
[Short Male Headers](https://www.adafruit.com/product/2940)

### Part: Rotary Encoder
quantity: 1
Rotary Encoder + Extras
[Rotary Encoder](https://www.adafruit.com/product/377)

### Part: Slide Switch
quantity: 1
Breadboard-friendly SPDT Slide Switch
[Slide Switch](https://www.adafruit.com/product/805)

### Part: Nylon Screws
quantity: 1
Black Nylon Screw and Stand-off Set – M2.5 Thread
[Nylon Screws](https://www.adafruit.com/product/3299)

### Part: Neopixel Strand
quantity: 1
Adafruit NeoPixel LED Dots Strand - 20 LEDs at 2" Pitch
[Neopixel Strand](https://www.adafruit.com/product/3630)

### Part: NeoPixels 60/m
quantity: 1
Adafruit NeoPixel Digital RGB LED Strip - White 60 LED - WHITE
[NeoPixels 60/m](https://www.adafruit.com/product/1138)

In addition to the parts listed above, you'll also need six screws to fasten the enclosure:

- 4ea.&nbsp;[#6-32&nbsp;1-1/4" hex drive rounded head screws](https://www.mcmaster.com/#92949a160/=17d7vxn)
- 2ea.&nbsp;[#6-32 1-1/8" hex drive rounded head screws](https://www.mcmaster.com/#92949a860/=17d7wbg)

And, if you're 3D printing the enclosure, you'll want some PLA filament for that, such as:

- [1.75mm PLA white](https://www.adafruit.com/product/2067)
- [1.75mm PLA black](https://www.adafruit.com/product/2060)
- [1.75mm PLA red](https://www.adafruit.com/product/2450)
- [1.75mm PLA/PHA blue](https://www.adafruit.com/product/2146)

I found that black PLA works the best for the face of the controller.&nbsp; White PLA lets a lot of light bleed through and the NeoTrellis looks better against a dark background.

![](https://cdn-learn.adafruit.com/assets/assets/000/069/371/medium800/wireless_neotrellis_use_it.jpg?1547582331)

# Wireless NeoPixel Controller

## Code with Arduino

There are two different code files here. One will go onto the Feather M0 Lora inside the controller box and broadcast signals. The other goes onto a Feather M0 LoRa connected to your wearable project, and will receive the signals and run the FastLED code.

### Before You Start

You'll need at least two of the same (identical!) packet radio Feather boards (e.g., RFM69HCW to RFM69HCW&nbsp; **or** &nbsp;LoRa RFM95 to LoRa RFM95, no mixing and matching) set to the same frequency in order to send and receive messages -- one board on its own is very lonely, and semi-useless :(&nbsp;

If this is your first foray into the world of arduino-based microcontrollers, you'll need to install some software first. Head over to the [Feather M0 LoRa guide](https://learn.adafruit.com/adafruit-feather-32u4-radio-with-lora-radio-module/setup) for a detailed explanation of what you need to do.&nbsp;&nbsp;

Once you've gone through the guide and have the "blink" sketch working, come back here and continue.

### Install Libraries

In Arduino, choose **Sketch \> Include Library \> Manage Libraries**. If you are new to using libraries, [see this guide for details](https://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use).

You can search for the various libraries in this window. Find each one and click "Install".&nbsp; When you have them all installed, restart Arduino.

- Adafruit\_NeoTrellis
- Adafruit\_SSD1306
- Adafruit\_GFX
- Adafruit\_BusIO
- FastLED
- Encoder Quad Linear (Encoder Library by Paul Stroffgren)

Install the RadioHead library as&nbsp;[shown here](https://learn.adafruit.com/adafruit-feather-m0-radio-with-rfm69-packet-radio/using-the-rfm69-radio)&nbsp;and then upload the&nbsp; **RadioHead -\> feather -\> RadioHead69\_RawDemo\_TX&nbsp;** example on one board and&nbsp; **RadioHead -\> feather -\> RadioHead69\_RawDemo\_RX&nbsp;** on the other. Open your serial port on one board and make sure that they're talking to each other properly.

# Wireless NeoPixel Controller

## Controller Code

Download the **Ada-remoteFXTrigger\_NeoTrellis\_FastLED\_TX** code below and upload it to your controller box.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Ada_remoteFXTrigger_NeoTrellis_FastLED_TX/Ada_remoteFXTrigger_NeoTrellis_FastLED_TX.ino

If you are not familiar with using Arduino to upload code, [see this guide](https://learn.adafruit.com/ladyadas-learn-arduino-lesson-number-1/upload-your-first-sketch).

### Customizing

This code has three different screens you can scroll through: Solids, Gradients, and Rainbows. Each screen lights up a few buttons on the NeoTrellis. The unlighted buttons are currently unassigned.

To add more screens, look for this line in the code under **NeoTrellis Setup** and change the number to reflect the total number of screens you want.

```
int NUM_SCREENS = 3;  // change this number to add more screens
```

Then scroll down and find the "`Rotary Encoder Menu`" section. Here is where you can set the pixel colors on the NeoTrellis for each screen, and give each screen a title. You can also add or remove screens here (just remember to change `NUM_SCREENS` to match your total).

```
    if (m==0){
        for(p=4;p&lt;8;p++){
          for(q=0;q&lt;4;q++){
            oled.drawPixel(q,p,WHITE);
          }
        }
        oled.print(" Solids");
        clearPixels();
        trellis.pixels.setPixelColor(0, 50,0,0);
        trellis.pixels.setPixelColor(1, 50,50,0);
        trellis.pixels.setPixelColor(2, 0,50,0);
        trellis.pixels.setPixelColor(3, 0,0,50);
        trellis.pixels.setPixelColor(4, 20,0,50);
        trellis.pixels.setPixelColor(5, 50,0,20);
        trellis.pixels.setPixelColor(6, 100,100,100);
        trellis.pixels.setPixelColor(7, 10,10,10);
        trellis.pixels.show();
      }
```

Scrolling some more, find the section titled "`Solids`". This is where you will tell the controller to send a specific command, like "`A`" or "`B`" when each button is pressed. The first button on the controller is 0, and the last one is 15. You can also customize the OLED display messages here.

```
/**************Solids**************/
       
        if(m==0){ //next menu item
       
            if (x==0){ //button 1 sends button A command
              radiopacket[0] = 'A';
              oled.clearDisplay();
              oled.setCursor(0,0);
              oled.print("Solid");
              oled.setCursor(50,16);
              oled.print("RED");
              oled.display(); 
            }
```

That's all this box does: shows pretty colors and sends a letter when a button is pressed. All the rest is done on the receiver end.

# Wireless NeoPixel Controller

## Receiver Code

Download the **Ada-remoteFXTrigger\_NeoTrellis\_FastLED\_RX code** below and upload it to your controller box.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Ada_remoteFXTrigger_NeoTrellis_FastLED_RX/Ada_remoteFXTrigger_NeoTrellis_FastLED_RX.ino

### Customizing

This code allows you to tell the LEDs what to do when the command is received from the control box.&nbsp; &nbsp;This example code matches the TX code in a number of ways. There are 21 different letters set up that can be received and each letter triggers a different LED mode.&nbsp;&nbsp;

### A Note about Animations

FastLED is wonderful at producing buttery smooth animations. However, this setup works much better with very little LED motion or solid colors. Every time the signal is sent from the controller box, the animation is interrupted for just a moment. If we didn't interrupt the animation then most of your button presses would be missed while the animation was busy running, making it seem the controller box was not working or that the commands weren't being received. So I've made simple animations and solids the focus of this tutorial. For example, the `Rainbow_Fade()` animation does fade through the rainbow but it does it very slowly due to being interrupted so much.

There are two sections of code to pay attention to.&nbsp; Look for this section:

```
 if (buf[0]=='A'){ //the letter sent from the button
      ledMode(0);
        radiopacket[8] = 'A';   
    }
     else if (buf[0]=='B'){ //the letter sent from the button
      ledMode(1);
      radiopacket[8] = 'B';    
    }
    
```

The radio packet being sent (`A` or `B`&nbsp;in this case) will cause the `ledMode` to change.&nbsp;

Further down, you'll find:

```
void ledMode(int i) {
  switch(i){
    case 0: HUE=0; SATURATION=255; BRIGHTNESS=200; Solid();    // red
            break;
    case 1: HUE=40; SATURATION=255; BRIGHTNESS=200; Solid();    // gold
            break;
```

These are the different modes being triggered by each radio packet. Here is where you can change what happens on the LED strip when button 0 is pressed, sending A, and triggering LED mode 0.

# Wireless NeoPixel Controller

## Controller Wiring & Build

![](https://cdn-learn.adafruit.com/assets/assets/000/128/927/medium800/wireless_propRemote_bb.jpg?1711461398)

This build is based on John Park's [Remote Effects Trigger box](https://learn.adafruit.com/remote-effects-trigger/overview-1). The only difference is that we'll be using a [NeoTrellis](https://www.adafruit.com/product/3954) inside, instead of a Trellis. This will give us the option to have multi-colored buttons that react when we press them.&nbsp;

90% of the build is exactly the same. Head over to John Park's guide for more detailed explanations on building the box: [Build the Transmitter](https://learn.adafruit.com/remote-effects-trigger/overview), [3d printing](https://learn.adafruit.com/remote-effects-trigger/3d-printing-the-enclosure), and [Assembly](https://learn.adafruit.com/remote-effects-trigger/assembly).

Look at the breadboard diagram to see the connections that will be made. John Park's guide goes into a lot of great detail.&nbsp;&nbsp;The connections from the NeoTrellis to the Feather are&nbsp; **SDA, SCL, GND, VIN,** and **INT.&nbsp;**

# Wireless NeoPixel Controller

## NeoPixel Wiring & Build

We'll attach a female 3-pin connector to our Feather M0 and then attach the male connector to the **IN** end of a NeoPixel strand or strip. For this project, I'm routing the power for the NeoPixels right through the Feather M0 board instead of powering directly from a battery. This works great for smaller projects or wearables with up to around 75-100 NeoPixels. If you have significantly more pixels in your project, you'll want to wire the power directly to the NeoPixels [as shown in the NeoPixel guide](https://learn.adafruit.com/adafruit-neopixel-uberguide/powering-neopixels).

![](https://cdn-learn.adafruit.com/assets/assets/000/069/469/medium800/wireless_neopixel_lora_wiring2_bb.jpg?1547665771)

Solder your female 3-pin connector to the Feather as shown:&nbsp;

&nbsp;

- Red wire to **BAT**
- Green wire to **12**
- Black wire to **G**

![wireless_feather_connector.jpg](https://cdn-learn.adafruit.com/assets/assets/000/069/345/medium640/wireless_feather_connector.jpg?1547510518)

If you're using a NeoPixel strand, all you need to do now is plug your Feather into the male connector that comes with the strand and plug in a battery. Your lights should come on in a blue and purple gradient.

![wireless_feather_strand.jpg](https://cdn-learn.adafruit.com/assets/assets/000/069/349/medium640/wireless_feather_strand.jpg?1547511115)

If you're using a NeoPixel strip, cut the 2-pin connector off and expose the bare copper pads at the **IN** end of the strip. Solder the male side of your 3-pin connector onto the strip. It helps to plug the connector into the female side before you solder, so you can be sure you're getting the wires lined up correctly.

&nbsp;

Plug in a battery and the LEDs will come on in a blue and purple gradient, if all goes well.

![wireless_feather_strip1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/069/347/medium640/wireless_feather_strip1.jpg?1547510587)

![wireless_feather_strip2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/069/348/medium640/wireless_feather_strip2.jpg?1547510648)

### Troubleshooting

If the lights don't come on, here are a few things to check:

- Did you solder the connector to the **IN** end of the strip?&nbsp; (arrows on the strip should be pointing away from the Feather M0)
- Did you make sure the connector was lined up correctly? It's easy to solder these on backwards.
- Has the code uploaded correctly? The code for this project is tricky, with lots of libraries to install. If it's just not working, try uploading the **strandtest** code in Arduino (Examples \> NeoPixel Library \> Strandtest) making sure to select **pin 12**.&nbsp;[More info about this process can be found here](https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use).
- Are you soldered to **pin 12**? The labels are small!&nbsp; Be sure you're on the correct pin.

### Optional Antenna Connector

I've found that for wearable projects being controlled in the same room or in the vicinity of the controller box, the antenna is not needed on this end. The controller box has an antenna for broadcasting and the Feather picks up the signal with no trouble. It works through windows and up to around 100 yards away.&nbsp;

If you want to control your project from further away -- say, change the color of your tent lights from all the way across the Playa -- you'll want to solder the antenna connector onto the back of the Feather M0 and snap on the antenna. The process is the same as what you did when building the NeoTrellis controller box.

![](https://cdn-learn.adafruit.com/assets/assets/000/069/350/medium800/wireless_feather_strandstrip.jpg?1547511506)

### Adding Additional NeoPixel Strips

You can add a lot more NeoPixel strips or strands to your project on the other data pins the Feather has available.&nbsp; If you do add more strips, or solder to other pins, note that if you can't use&nbsp; the radio pins (pin 22, 23, and 24) for a NeoPixel data line.&nbsp; Leave those pins alone!&nbsp;&nbsp;

You can see the available pins on the [Feather LoRa Pinout here](https://cdn-learn.adafruit.com/assets/assets/000/046/254/original/feather_Feather_M0_LoRa_v1.2-1.png?1504886587).

# Wireless NeoPixel Controller

## Use it In Your Project

![](https://cdn-learn.adafruit.com/assets/assets/000/069/367/medium800/wireless_neotrellis_use_it.jpg?1547578444)

Put a Feather M0 receiver attached to some NeoPixels in all your various projects. The controller box will send a short radio signal (usually one letter, like "A") through the air, and your receiver will listen and obey.&nbsp;&nbsp;

For this example, I've got a [NeoPixel crown](https://learn.adafruit.com/neopixel-fairy-crown/overview), an [LED Tutu](https://learn.adafruit.com/dance-reactive-tutu-sparkle-skirt), two [Raver Bandoliers](https://learn.adafruit.com/cosplay-glow-fur-raver-bandolier) and a set of LED Isis Wings, each containing one Feather receiver. I've chosen to upload the same code to all the receivers, so when I press the "red" button on the controller, the command "A" is sent and everything turns red.&nbsp;&nbsp;

It doesn't have to be this way! I could easily upload slightly different code to each receiver, so that the "A" command causes my crown to turn red, my tutu gold and each bandolier could be a blue/purple gradient. It takes a little digging in the code, but it's not too hard to do.

Have fun making everything glow according to your every whim!


## Featured Products

### Adafruit Feather M0 RFM69HCW Packet Radio - 868 or 915 MHz

[Adafruit Feather M0 RFM69HCW Packet Radio - 868 or 915 MHz](https://www.adafruit.com/product/3176)
This is the**&nbsp;Adafruit Feather M0 RFM69 Packet Radio&nbsp;(868 or 915 MHz)****. **We call these _RadioFruits** ,**_ our take on an microcontroller with a RFM69HCW packet radio transceiver plus built in USB and battery charging. Its an Adafruit...

In Stock
[Buy Now](https://www.adafruit.com/product/3176)
[Related Guides to the Product](https://learn.adafruit.com/products/3176/guides)
### Adafruit NeoTrellis RGB Driver PCB for 4x4 Keypad

[Adafruit NeoTrellis RGB Driver PCB for 4x4 Keypad](https://www.adafruit.com/product/3954)
By popular request, we've upgraded our popular Trellis elastomer button kits to now have a PCB with _full color NeoPixel_ support! You heard that right, no more single-color LEDs, you can now have any color you like under the fantastic rubbery button pads we sell.

These 4x4...

In Stock
[Buy Now](https://www.adafruit.com/product/3954)
[Related Guides to the Product](https://learn.adafruit.com/products/3954/guides)
### Silicone Elastomer 4x4 Button Keypad - for 3mm LEDs

[Silicone Elastomer 4x4 Button Keypad - for 3mm LEDs](https://www.adafruit.com/product/1611)
So squishy! These silicone elastomer keypads are just waiting for your fingers to press them. Go ahead, squish all you like! (They're durable and easy to clean, just wipe with mild soap and water) These are just like the light up rubber buttons you find on stuff like appliances and tools,...

In Stock
[Buy Now](https://www.adafruit.com/product/1611)
[Related Guides to the Product](https://learn.adafruit.com/products/1611/guides)
### 900Mhz Antenna Kit - For LoPy, LoRa, etc

[900Mhz Antenna Kit - For LoPy, LoRa, etc](https://www.adafruit.com/product/3340)
This **LoRa&nbsp;Antenna Kit** &nbsp;is meant for use with the [LoPy](https://www.adafruit.com/products/3339) LoRa, WiFi and BLE&nbsp;board or the SiPy Sigfox, WiFi and BLE board. But&nbsp;it's good for any 900MHz radio, including our<a...></a...>

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/3340)
[Related Guides to the Product](https://learn.adafruit.com/products/3340/guides)
### uFL SMT Antenna Connector

[uFL SMT Antenna Connector](https://www.adafruit.com/product/1661)
uFL connectors are very small surface-mount parts used when an external RF antena is desired but a big bulky SMA connector takes up too much space. We use this part on our GPS and WiFi boards, they're great! Chances are your antenna doesn't use uFL as the main connector, in which case...

In Stock
[Buy Now](https://www.adafruit.com/product/1661)
[Related Guides to the Product](https://learn.adafruit.com/products/1661/guides)
### Lithium Ion Polymer Battery - 3.7v 2500mAh

[Lithium Ion Polymer Battery - 3.7v 2500mAh](https://www.adafruit.com/product/328)
Lithium-ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light, and powerful. The output ranges from 4.2V when completely charged to 3.7V. This battery has a capacity of **2500mAh** for a total of about 10 Wh. If you need a smaller battery, <a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/328)
[Related Guides to the Product](https://learn.adafruit.com/products/328/guides)
### Adafruit FeatherWing OLED - 128x32 OLED Add-on For Feather

[Adafruit FeatherWing OLED - 128x32 OLED Add-on For Feather](https://www.adafruit.com/product/2900)
A Feather board without ambition is a Feather board without FeatherWings! This is the **FeatherWing OLED** : it adds a 128x32 monochrome OLED plus 3 user buttons to _any_ Feather main board. Using our [Feather Stacking...](https://www.adafruit.com/products/2830)

In Stock
[Buy Now](https://www.adafruit.com/product/2900)
[Related Guides to the Product](https://learn.adafruit.com/products/2900/guides)
### Short Headers Kit for Feather - 12-pin + 16-pin Female Headers

[Short Headers Kit for Feather - 12-pin + 16-pin Female Headers](https://www.adafruit.com/product/2940)
These two&nbsp; **Short** &nbsp; **Female&nbsp;Headers** &nbsp;alone are, well, lonely. But pair them with any of our&nbsp;[Feather](https://www.adafruit.com/categories/777)&nbsp;boards and you're in business!

These headers are particularly cute and...

Out of Stock
[Buy Now](https://www.adafruit.com/product/2940)
[Related Guides to the Product](https://learn.adafruit.com/products/2940/guides)

## Related Guides

- [Adafruit OLED FeatherWing](https://learn.adafruit.com/adafruit-oled-featherwing.md)
- [Adafruit NeoTrellis](https://learn.adafruit.com/adafruit-neotrellis.md)
- [USB Host to BLE Keyboard Adapter](https://learn.adafruit.com/esp32-s3-usb-to-ble-keyboard-adapter.md)
- [CircuitPython OLED Watch Clock](https://learn.adafruit.com/circuitpython-oled-watch.md)
- [DIY Pico Mechanical Keyboard with Fritzing and CircuitPython](https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython.md)
- [WiFi OLED Display Badge](https://learn.adafruit.com/digital-display-badge.md)
- [Espresso Water Tank Meter](https://learn.adafruit.com/espresso-water-tank-meter.md)
- [USB MIDI Host Messenger](https://learn.adafruit.com/usb-midi-host-messenger.md)
- [CircuitPython Hardware: PCA9685 PWM & Servo Driver](https://learn.adafruit.com/micropython-hardware-pca9685-pwm-and-servo-driver.md)
- [QT Py CH32V203 eInk / ePaper Daily Calendar and Clock](https://learn.adafruit.com/ch32v203-eink-epaper-calendar-and-clock.md)
- [eInk FeatherWing Display Stand](https://learn.adafruit.com/eink-featherwing-display-stand.md)
- [Neotrellis M4 Live Launcher](https://learn.adafruit.com/neotrellis-live-launcher.md)
- [Servo Boss](https://learn.adafruit.com/servo-boss.md)
- [NeoTrellis Sound Board](https://learn.adafruit.com/neotrellis-soundboard.md)
- [Pico W HTTP Server with CircuitPython](https://learn.adafruit.com/pico-w-http-server-with-circuitpython.md)
- [Raspberry Pi Pico and LED Arcade Button MIDI Controller](https://learn.adafruit.com/raspberry-pi-pico-led-arcade-button-midi-controller-fighter.md)
- [ItsyBitsy ESP32 wFL case](https://learn.adafruit.com/itsybitsy-esp32-wfl-case.md)
