ESP32 C3 Super Mini - Button - Long Press Short Press

Learn how to program your ESP32 C3 Super Mini to detect both button long press and short press events. This tutorial covers everything from basic wiring to advanced debouncing techniques for reliable button input detection.

In this tutorial, you'll learn:

ESP32 C3 Super Mini - Button - Long Press Short Press

Hardware Preparation

1×ESP32 C3 Super Mini
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×Breadboard-mount Button with Cap
1×Breadboard-mount Button Kit
1×Panel-mount Push Button
1×Push Button Module
1×Breadboard
1×Jumper Wires
1×Optionally, DC Power Jack

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Disclosure: Some of the links provided in this section are Amazon affiliate links. We may receive a commission for any purchases made through these links at no additional cost to you.
Additionally, some of these links are for products from our own brand, DIYables .

Overview of Button

A push button is a simple input device that completes an electrical circuit when pressed.

Key features for ESP32 C3 Super Mini projects:

  • Two states: pressed (LOW) and released (HIGH) when using internal pull-up
  • Can detect multiple press types: short press, long press, and double-click
  • Requires debouncing for reliable detection in real projects
  • Works with ESP32 C3 Super Mini's internal pull-up resistors

Additional button resources:

Wiring Diagram

Connect your button to the ESP32 C3 Super Mini following the diagram below.

The wiring diagram between ESP32 C3 Super Mini Button

This image is created using Fritzing. Click to enlarge image

Important notes:

  • This tutorial uses the internal pull-up resistor
  • Button state is HIGH when not pressed and LOW when pressed
  • No external resistor needed

How To Detect Short Press

Detecting a short press on ESP32 C3 Super Mini involves measuring the duration between button press and release events.

Short press detection method:

  • Measure the time between the pressed and released events
  • If the duration is shorter than a pre-defined time, the short press event is detected
  • Compare press duration against your SHORT_PRESS_TIME threshold

Step-by-step implementation:

  • Define how long the maximum of short press lasts
#define SHORT_PRESS_TIME 500 // 500 milliseconds
  • Detect the button is pressed and save the pressed time
if(prev_state == HIGH && button_state == LOW) pressed_time = millis();
  • Detect the button is released and save the released time
if(prev_state == LOW && button_state == HIGH) released_time = millis();
  • Calculate press duration and
long press_duration = released_time - pressed_time;
  • Determine the short press by comparing the press duration with the defined short press time
if( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected");

ESP32 C3 Super Mini Code for detecting the short press

This code demonstrates how to detect short button press on ESP32 C3 Super Mini.

What the code does:

  • Reads button state using internal pull-up resistor
  • Calculates time duration between press and release
  • Detects short press if duration is less than 500ms
  • Prints detection result to Serial Monitor
/* * This ESP32 C3 Super Mini code was developed by newbiely.com * * This ESP32 C3 Super Mini code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN D7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 500 // 500 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if (prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } // save the the last state prev_button_state = button_state; }

Detailed Instructions

  • New to ESP32 C3 Mini? Complete our Getting Started with ESP32 C3 Mini tutorial first to set up your development environment.
  • Setup IDE: If this is the first time you use ESP32 C3 Super Mini, see how to setup environment for ESP32 C3 Super Mini on Arduino IDE
  • Upload Code: Copy the code above and upload it to your ESP32 C3 Super Mini via Arduino IDE
  • Wire Hardware: Connect the button to your ESP32 C3 Super Mini following the wiring diagram
  • Test Button: Press the button shortly several times
  • Check Results: Open the Serial Monitor (9600 baud) to see the detection results
  • Pro Tip: You can adjust the SHORT_PRESS_TIME value to make short press detection faster or slower
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A short press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ NOTE THAT:

The Serial Monitor may print several short presses for a single press. This is a normal behavior of the button. This behavior is called the "chattering phenomenon". We will learn how to eliminate this issue later in this tutorial.

How To Detect Long Press

There are two methods for detecting long press button events on ESP32 C3 Super Mini.

Two use cases for long press detection:

  • The long-press event is detected right after the button is released
  • The long-press event is detected while the button is being pressed

First method (detect on release):

  • Measure the time duration between the pressed event and released event
  • If the duration is longer than a pre-defined time, the long-press event is detected

Second method (detect during press):

  • Measure the pressing time continuously while button is held
  • If the duration exceeds the pre-defined time, immediately detect long-press
  • Continue checking until the button is released

ESP32 C3 Super Mini Code for detecting long press when released

This ESP32 C3 Super Mini code detects long press after the button is released.

What this code does:

  • Measures total press duration from press to release
  • Compares duration against LONG_PRESS_TIME (1000ms)
  • Detects long press only after button is released
  • Useful when you need to confirm the full press duration
/* * This ESP32 C3 Super Mini code was developed by newbiely.com * * This ESP32 C3 Super Mini code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN D7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if(prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } // save the the last state prev_button_state = button_state; }

Detailed Instructions

  • New to ESP32 C3 Mini? Complete our Getting Started with ESP32 C3 Mini tutorial first to set up your development environment.
  • Setup IDE: If this is the first time you use ESP32 C3 Super Mini, see how to setup environment for ESP32 C3 Super Mini on Arduino IDE
  • Upload Code: Copy and upload the above code to ESP32 C3 Super Mini via Arduino IDE
  • Test Long Press: Press and hold the button for more than one second, then release
  • Check Serial Monitor: Open Serial Monitor at 9600 baud to see the results
  • Pro Tip: This method is best when you need the action to happen after button release, not during the press
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A long press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

ESP32 C3 Super Mini Code for detecting long press during pressing

This code detects long press immediately while the button is still being held down.

What this code does:

  • Continuously checks press duration while button is held
  • Detects long press instantly when duration exceeds threshold
  • Triggers action immediately without waiting for release
  • Ideal for real-time response applications
/* * This ESP32 C3 Super Mini code was developed by newbiely.com * * This ESP32 C3 Super Mini code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN D7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == HIGH && button_state == LOW) { // button is pressed pressed_time = millis(); is_pressing = true; is_long_detected = false; } else if(prev_button_state == LOW && button_state == HIGH) { // button is released is_pressing = false; } if(is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } // save the the last state prev_button_state = button_state; }

Detailed Instructions

  • New to ESP32 C3 Mini? Complete our Getting Started with ESP32 C3 Mini tutorial first to set up your development environment.
  • Setup IDE: If this is the first time you use ESP32 C3 Super Mini, see how to setup environment for ESP32 C3 Super Mini on Arduino IDE
  • Upload Code: Upload the above code to your ESP32 C3 Super Mini via Arduino IDE
  • Test During Press: Press and hold the button for several seconds (don't release immediately)
  • Observe Timing: Notice the detection happens while you're still pressing
  • Pro Tip: This method provides instant feedback and is better for time-sensitive applications like factory reset functions
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

How To Detect Both Long Press and Short Press

Combine both button press types to add multiple functions to a single button on your ESP32 C3 Super Mini.

Short Press and Long Press after released

This ESP32 C3 Super Mini code detects both press types after the button is released.

What this code does:

  • Distinguishes between short and long press based on duration
  • Makes the decision after button is released
  • Uses a single threshold (LONG_PRESS_TIME) to differentiate
  • Enables two different actions from one button
/* * This ESP32 C3 Super Mini code was developed by newbiely.com * * This ESP32 C3 Super Mini code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN D7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) // button is pressed pressed_time = millis(); else if (prev_button_state == LOW && button_state == HIGH) { // button is released released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); if ( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } // save the the last state prev_button_state = button_state; }

Detailed Instructions

  • New to ESP32 C3 Mini? Complete our Getting Started with ESP32 C3 Mini tutorial first to set up your development environment.
  • Setup IDE: If this is the first time you use ESP32 C3 Super Mini, see how to setup environment for ESP32 C3 Super Mini on Arduino IDE
  • Upload Code: Upload the above code to ESP32 C3 Super Mini via Arduino IDE
  • Test Both Types: Try both long press (hold >1 second) and short press (quick tap)
  • Check Serial Monitor: Open Serial Monitor to see which press type is detected
  • Pro Tip: Set LONG_PRESS_TIME to match your user's expected behavior (typically 500-1500ms works well)
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

※ NOTE THAT:

The Serial Monitor may show several short press detection when long press. This is the normal behavior of the button. This behavior is called the "chattering phenomenon". The issue will be solved in the last part of this tutorial.

Short Press and Long Press During pressing

This code detects long press instantly while still allowing short press detection.

What this code does:

  • Detects long press immediately when threshold is reached
  • Still detects short press after release if long press didn't trigger
  • Provides instant feedback for long press actions
  • Best for applications needing immediate response
/* * This ESP32 C3 Super Mini code was developed by newbiely.com * * This ESP32 C3 Super Mini code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #define BUTTON_PIN D7 // The ESP32 C3 SuperMini pin GPIO7 pin connected to button #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin unsigned long pressed_time = 0; unsigned long released_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(9600); pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if (prev_button_state == HIGH && button_state == LOW) { // button is pressed pressed_time = millis(); is_pressing = true; is_long_detected = false; } else if (prev_button_state == LOW && button_state == HIGH) { // button is released is_pressing = false; released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } if (is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if ( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } // save the the last state prev_button_state = button_state; }

Detailed Instructions

  • New to ESP32 C3 Mini? Complete our Getting Started with ESP32 C3 Mini tutorial first to set up your development environment.
  • Setup IDE: If this is the first time you use ESP32 C3 Super Mini, see how to setup environment for ESP32 C3 Super Mini on Arduino IDE
  • Upload Code: Upload the code to your ESP32 C3 Super Mini via Arduino IDE
  • Test Timing: Try quick taps and long holds to see the different behaviors
  • Observe Response: Notice long press triggers immediately, not on release
  • Pro Tip: This method prevents accidental long press triggers since users get instant feedback
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Long Press and Short Press with Debouncing

Debouncing eliminates false button readings caused by mechanical vibrations in push buttons.

Why debouncing matters:

  • Physical buttons create electrical noise when pressed (chattering)
  • Without debouncing, one press may register as multiple presses
  • Critical for reliable button detection in ESP32 C3 Super Mini projects
  • Essential for applications requiring precise input

Using ezButton library:

  • Simplifies debouncing implementation for beginners
  • Handles complex timing logic automatically
  • Works reliably with multiple buttons
  • Free and easy to install in Arduino IDE

Short Press and Long Press with debouncing after released

This ESP32 C3 Super Mini code uses the ezButton library for clean, reliable button detection.

What this code does:

  • Implements hardware debouncing using ezButton library
  • Eliminates false detections from button chattering
  • Detects both press types accurately after release
  • Provides production-ready button handling
/* * This ESP32 C3 Super Mini code was developed by newbiely.com * * This ESP32 C3 Super Mini code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #include <ezButton.h> #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds ezButton button(D7); // create ezButton object for pin Arduino Nano ESP32 pin GPIO7 unsigned long pressed_time = 0; unsigned long released_time = 0; void setup() { Serial.begin(9600); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) pressed_time = millis(); if (button.isReleased()) { released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); if ( press_duration > LONG_PRESS_TIME ) Serial.println("A long press is detected"); } }

Detailed Instructions

  • New to ESP32 C3 Mini? Complete our Getting Started with ESP32 C3 Mini tutorial first to set up your development environment.
  • Setup IDE: If this is the first time you use ESP32 C3 Super Mini, see how to setup environment for ESP32 C3 Super Mini on Arduino IDE
  • Install Library: Install ezButton library - See How To
  • Upload Code: Upload the above code to ESP32 C3 Super Mini via Arduino IDE
  • Test Clean Detection: Try both long and short presses - no more duplicate detections
  • Check Results: Open Serial Monitor to see clean, accurate button press detection
  • Pro Tip: The ezButton library eliminates all chattering issues automatically - use it for all production projects
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Short Press and Long Press with debouncing During Pressing

This code combines instant long press detection with debouncing for the best user experience.

What this code does:

  • Detects long press immediately with debouncing
  • Prevents false triggers from button bounce
  • Provides instant feedback for long press
  • Handles short press cleanly after release
/* * This ESP32 C3 Super Mini code was developed by newbiely.com * * This ESP32 C3 Super Mini code is made available for public use without any restriction * * For comprehensive instructions and wiring diagrams, please visit: * https://newbiely.com/tutorials/esp32-c3/esp32-c3-super-mini-button-long-press-short-press */ #include <ezButton.h> #define SHORT_PRESS_TIME 1000 // 1000 milliseconds #define LONG_PRESS_TIME 1000 // 1000 milliseconds ezButton button(D7); // create ezButton object for pin Arduino Nano ESP32 pin GPIO7 unsigned long pressed_time = 0; unsigned long released_time = 0; bool is_pressing = false; bool is_long_detected = false; void setup() { Serial.begin(9600); button.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button.loop(); // MUST call the loop() function first if (button.isPressed()) { pressed_time = millis(); is_pressing = true; is_long_detected = false; } if (button.isReleased()) { is_pressing = false; released_time = millis(); long press_duration = released_time - pressed_time; if ( press_duration < SHORT_PRESS_TIME ) Serial.println("A short press is detected"); } if (is_pressing == true && is_long_detected == false) { long press_duration = millis() - pressed_time; if ( press_duration > LONG_PRESS_TIME ) { Serial.println("A long press is detected"); is_long_detected = true; } } }

Detailed Instructions

  • New to ESP32 C3 Mini? Complete our Getting Started with ESP32 C3 Mini tutorial first to set up your development environment.
  • Setup IDE: If this is the first time you use ESP32 C3 Super Mini, see how to setup environment for ESP32 C3 Super Mini on Arduino IDE
  • Install Library: Install ezButton library - See How To
  • Upload Code: Upload the code to your ESP32 C3 Super Mini via Arduino IDE
  • Test Reliability: Press the button multiple times - notice no duplicate readings
  • Compare Methods: This is the most reliable method for production ESP32 C3 Super Mini projects
  • Pro Tip: Use this method for critical applications like device resets or important controls where accuracy is essential
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
A short press is detected A long press is detected A short press is detected A long press is detected
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Why Needs Long Press and Short Press

Understanding when to use long press and short press detection improves your ESP32 C3 Super Mini projects.

Practical benefits:

  • Save pins: A single button can control two or more functions (short press for light, long press for fan)
  • Prevent accidents: Use long press for critical functions like factory reset to avoid accidental activation
  • Better UX: Users can perform multiple actions without additional hardware
  • Cost savings: Fewer buttons means simpler circuits and lower component costs
  • Space efficient: Ideal for compact ESP32 C3 Super Mini projects with limited space
  • Professional design: Multi-function buttons are standard in consumer electronics

Common applications:

  • Short press: Toggle LED, increment counter, select menu
  • Long press: Factory reset, power off, enter setup mode, clear memory

Challenge Yourself

Take your ESP32 C3 Super Mini button skills to the next level with these practical challenges.

  • Easy: Modify the code to use different time thresholds (e.g., 300ms for short, 2000ms for long)
  • Easy: Add a third press type - very short press (less than 200ms) for quick actions
  • Medium: Control two LEDs with one button - short press toggles red LED, long press toggles green LED
  • Medium: Implement a double-click detection alongside short and long press
  • Advanced: Create a button sequence detector that recognizes patterns (short-long-short)
  • Advanced: Build a multi-mode ESP32 C3 Super Mini device where long press cycles through modes and short press activates the current mode

Application Ideas

Here are practical project ideas using ESP32 C3 Super Mini button long press and short press detection.

  • Smart home light controller - short press for on/off, long press for dimming mode
  • ESP32 C3 Super Mini alarm system - short press to arm/disarm, long press for panic mode
  • Timer device - short press to start/stop, long press to reset
  • Multi-function thermostat - short press adjusts temperature, long press switches heating/cooling mode
  • IoT door lock - short press to unlock temporarily, long press for permanent unlock
  • Battery-powered sensor - short press to check status, long press to enter deep sleep mode

Video Section

Watch the video below for a visual walkthrough of this ESP32 C3 Super Mini button long press and short press project.

※ OUR MESSAGES

  • As freelancers, We are AVAILABLE for HIRE. See how to outsource your project to us
  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!