Editor Version ×

1.Easy to use and quick to get started

2.The process supports design scales of 300 devices or 1000 pads

3.Supports simple circuit simulation

4.For students, teachers, creators


1.Brand new interactions and interfaces

2.Smooth support for design sizes of over 30,000 devices or 100,000 pads

3.More rigorous design constraints, more standardized processes

4.For enterprises, more professional users


Profile:A little project to travel safer with our electric scooter.

License: Public Domain

Published Time:2021-07-04 04:41:46
  • 188
  • 0
  • 0

Led Direction Indicator for electric scooter




I'm Tommaso, I'm 15 years old and i'm from Italy. I attend the second year of high school I.T.I. OMAR in Novara (Piedmont)





The idea of my project: "Led Direction Indicator for electric scooter" was born because using the scooter I realized that it was necessary to signal the turn left or right. However, I found that it was very difficult to signal the turn with the arm due to the small handlebar on the scooter which made riding unstable. So I thought of a way to signal the turning point and I had the idea to build the direction arrows. At first I was undecided where to place them. My ideas were to place them on the helmet, or make a jacket and finally I decided to mount behind the rear wheel fender, where there were already two holes to screw this little piece of plastic.





In my project I used an Arduino Pro Mini 5V 16MHz. I chose this type of Arduino because it is very small, perfect for this project. I also decided to use an already assembled Arduino board for easier component availability.

For the representation of the two arrows I used 28 LEDs, the first prototype

is composed of 5mm 3v LEDs, each connected to a digital pin of the Arduino, with the exception of the 14 LEDs that make up the arrow heads. They are all connected in parallel with each other to the respective pin 2 and pin 13 of the Arduino. Instead the new prototype built on PCB also uses 28 LEDs, but they are orange and SMD, the model is 3528. I also inserted a Buzzer inside the circuit on pin A1 to understand when the arrow is on.



In the first prototype I used an external circuit to charge the battery, the TP4056 with micro-usb connector without protection circuit. Instead in the new pcb I decided to insert a TP4056 charger with Usb-C and also with the protection circuit.

I power the circuit with a 500mAh 3.7V Li-Po battery.





For the drawing of the scheme I used easyeda.com. First I inserted the Arduino Pro Mini, then 28 orange 3528 LEDs. I connected the common ground of the LEDs with the ground of the Arduino. Then I connected the positive pin of each LED to each digital pin of the Arduino, with the exception of 2 pairs of 7 LEDs, connected in parallel to the first and last digital pin, used for the tip of the arrow. Then I inserted an 82db analog buzzer, connecting it to the Arduino's A1 analog pin. Between pin A0 and ground I connected a 2k resistor to read data 0 on the analog port. Finally I put a switch to turn the circuit on and off by interrupting the Vcc incoming from the charging circuit.




I used two tactile buttons to light up the arrows. I connected pin 2 of the first button with pin 2 of the second button, and these are connected to Arduino pin A0. Then I connected pin 4 of the first with pin 4 of the second through a 2k resistor. Finally I connected the first resistor in series with the second, then connecting it to ground. In this way on the analog pin we will have two different values that we will use to activate the right and left arrows.



To power the circuit I used a 500mAh Li-Po battery. To recharge the battery, I inserted the TP4056 charging circuit on the pcb. I also plugged in a USB-C connector for charging.





For the arrangement of the components on the PCB I used easyeda.com

In the first prototype I used 5mm LEDs inserted on a 3d printed mask, instead in the new circuit I decided to solder smd LEDs directly on the pcb, giving the circuit the shape of two opposite arrows.

On the TOP side of the PCB I only inserted the smd leds. while on the BOTTOM side of the pcb I have inserted all the components necessary for the functioning of the circuit.




For writing the Sketch I used the Arduino IDE programming software, with C ++ programming language.

int DXState = LOW; //Stores the status of the LED (on or off)
int SXState = LOW; //Stores the status of the LED (on or off)?
bool flag; // Memorize button press and refractory fine changes to next loop turn (avoid multiple readings)
int buzzer = A1; 

void setup() {
  pinMode(13, OUTPUT);                        // pin declaration
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(buzzer, OUTPUT); 
  flag=true;                                // set Flag as true                                        

void loop() {

if ((DXState=LOW)&&(SXState=LOW)){                            //If all state = low light on the 
analogWrite(7, 50);
  int v = analogRead(A0);                                     // read the value from analog pin A0 (values depend on the resistors connected to the switches)
  if ( (v>=620 && v<=720 && (flag == true)) ) {               // if v value is included from 620 to 720, recognizes right button press
    DXState = !DXState;                                       // Reverses the state (from ON to OFF, or from OFF to ON)
    SXState=LOW;                                              // Switch-off left arrow
    flag=false;                                               // flag=false to avoid multiple activation (change of state) when switch is pressed for a long time
  } else if ( (v>=450 && v<=550 &&(flag == true)) ) {         // if v value included from 450 to 550, recognizes left button press
     SXState = !SXState;                                      // Reverses the state (from ON to OFF, or from OFF to ON)
     DXState=LOW;                                             // Switch-off rigth arrow
     flag=false;                                              // flag=false to avoid multiple activation
  }else if ( (v>=0 && v<=10 &&(flag == false)) ) {            // If no switch is pressed 
     flag=true;                                               // it returns the flag = true otherwise if you press at length it still performs the inversion SXState =! SXState or DXState =! DXState
 delay(20); // time to set the variable

if (DXState == HIGH) {                                        // IF DXstate=true play the right arrow animation
        for(int x = 12; x >= 2; x--)  {                       // start animation
          digitalWrite(x, HIGH);
           int v = analogRead(A0);                            // during the animation read analog switch to control if a switch is pressed
        if ( (v>=620 && v<=720 && (flag == true)) ) {        // if v value included from 450 to 550, recognizes right button press
          flag = false;       // prevent it from repeating
          DXState = !DXState; // Reverses the state (ON to OFF, OFF to ON)
          SXState=LOW;        // TURN OFF LEFT
      } else if ( (v>=450 && v<=550 && (flag= true)) ) { // ("LEFT");  if i press left arrow
         flag = false;      // prevent it from repeating 
          DXState = LOW;
          delay(30);                                          //pause
          for(int x = 13; x >= 2; x--)   {                    //IF SXstate=true play the Left arrow animation
          digitalWrite(x, LOW);
          int v = analogRead(A0);
          if ( (v>=620 && v<=720 && (flag == true)) ) {
                flag = false;       // prevent it from repeating  
                DXState = !DXState; // Reverses the state (ON to OFF, OFF to ON)
         } else if ( (v>=450 && v<=550 && (flag=true)) ) {  // ("LEFT");  if i press left arrow
                DXState = LOW;
                flag = false;        // prevent it from repeating  
          tone(buzzer, 800);                                // buzzer sound
if (SXState == HIGH) {                                    //IF SXstate=true play the Left arrow animation
            for(int x = 3; x <= 13; x++)  {
            digitalWrite(x, HIGH);
             int v = analogRead(A0);
              if ( (v>=450 && v<=550 && (flag == true)) ) {  
                flag = false;       // prevent it from repeating  
                SXState = !SXState; // Reverses the state (ON to OFF, OFF to ON)
            } else if ( (v>=620 && v<=720 && (flag=true)) ) {
                flag = false;       // prevent it from repeating i 
                DXState = HIGH;
             for(int x = 3; x <= 13; x++)    {
             digitalWrite(x, LOW);
             int v = analogRead(A0);
             if ( (v>=450 && v<=550 && (flag=true)) ) {
               flag = false;       // prevent it from repeating              
               SXState = !SXState; // Reverses the state (ON to OFF, OFF to ON)
           } else if ( (v>=620 && v<=720 && (flag=true)) ) {
               flag = false;       // prevent it from repeating  
          tone(buzzer, 1000);               // buzzer sound
          tone(buzzer, 500);  






For the box that contains the circuit I used the 3D design program "Fusion 360"

In the first prototype I created a rear box that screws onto the fender of the scooter. Inside the box is contained the Arduino Pro Mini, the buzzer, the battery with the charging circuit. In the front part I created a mask with 28 5mm holes to insert the red LEDs. They are connected with cables to the respective pins of the arduino board.


This is the support to fix the box to the scooter.


For the 3d design of the control panel for the lights, I removed the protection on the scooter and I redesigned it by inserting two buttons with the resistors.




For the realization of this project I spent:

€ 1 for the 28 leds

€ 2.50 for the Arduino Pro Mini 5v 16Mhz

€ 0.50 for the TP4056 charging circuit

€ 2 for the 3.7v 500mAh battery

€ 1 for buttons / switches and resistors and buzzers

€ 4 for the 3D PETG filament

€ 0.10 for screws and bolts


For a total of about: 11 €








In conclusion, I am very satisfied with the final result of my directional arrows for electric scooter (also for bicycle). On the internet I could not find any products to put on my scooter, so I decided to create them as I preferred. I hope you also appreciate my idea and in the cable you would like to replicate it, do not hesitate to contact me.



PCB_frecce monopattino_2

Open in editor


Open in editor
ID Name Designator Footprint Quantity
1 GMD12075YB-3V2700 BUZZER2 BUZ-TH_BD12.0-P7.60-D0.6-FD 1
2 10uF C1 0603 1
3 100nF C2,C3 0603 2
4 3528 Red LED LED1,LED1_1,LED1_2,LED1_3,LED1_4,LED1_5,LED1_6,LED1_7,LED2,LED3,LED4,LED5,LED6,LED8,LED9,LED10,LED11,LED12,LED13,LED14,LED14_1,LED14_2,LED14_3,LED14_4,LED14_5,LED14_6,LED14_7 LED-SMD_L3.2-W2.8-RD_TJ-S3528UG6W9TLC9Y-A5 27
5 RED LED23 LED-0603 1
6 GREEN LED28 LED-0603 1
7 FS8205 Q1 SOT-23-6 1
8 2K R2,R1,R9,R10 AXIAL10 4
9 1.2KΩ R4 0603 1
10 1K R5,R6,R7 0603 3
11 100Ω R8 0603 1
13 Arduino Mini Pro copy U1 ARDUINO_MINI_PRO1 1
15 2 pin U5 2 PIN 1
16 DW01A U7 SOT-23-6L 1
17 TP4056 U8 SOP-8_EP_150MIL 1
18 USBC USB1 USBC_C165948 1
19 button6*6*8.5 KEY5,KEY6 KEY-TH_4P-L6.0-W6.0-P4.50 2
20 Arduino Mini Pro U1 ARDUINO_MINI_PRO1 1


Project Attachments
Project Members


周一至周五 9:00~18:00
  • 0755 - 2382 4495
  • 153 6159 2675


周一至周五 9:00~18:00
  • 立创EDA微信号


  • QQ交流群


  • 立创EDA公众号