/********* Pleasedontcode.com **********
Pleasedontcode thanks you for automatic code generation! Enjoy your code!
- Terms and Conditions:
You have a non-exclusive, revocable, worldwide, royalty-free license
for personal and commercial use. Attribution is optional; modifications
are allowed, but you're responsible for code maintenance. We're not
liable for any loss or damage. For full terms,
please visit pleasedontcode.com/termsandconditions.
- Project: Servo Fireworks
- Source Code NOT compiled for: Arduino Uno
- Source Code created on: 2024-08-24 07:40:24
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* The system shall utilize the EasyButton library to */
/* detect button presses on digital pins D2 and D4, */
/* triggering specific actions in the Pong game. If */
/* the player has 5 points, play a fireworks */
/* animation and turn the servo 90 degrees for 5 */
/* seconds. */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
#include
#include // https://github.com/arduino-libraries/Servo
#include
#include // https://github.com/stblassitude/Adafruit_SSD1306_Wemos_OLED.git
#include // Include the EasyButton library
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void updateOutputs();
void onButton1Pressed(); // Callback for button D2
void onButton2Pressed(); // Callback for button D4
void playFireworks(); // Function to play fireworks animation
void moveServo(); // Function to move the servo
/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t Button_PushButton_PIN_D2 = 2;
const uint8_t LButton_PushButton_PIN_D4 = 4;
/***** DEFINITION OF PWM OUTPUT PINS *****/
const uint8_t Servos_Servomotor_PWMSignal_PIN_D3 = 3;
/***** DEFINITION OF I2C PINS *****/
const uint8_t Display_SSD1306OledDisplay_I2C_PIN_SDA_A4 = A4;
const uint8_t Display_SSD1306OledDisplay_I2C_PIN_SCL_A5 = A5;
const uint8_t Display_SSD1306OledDisplay_I2C_SLAVE_ADDRESS = 0x3C; // Default I2C address for SSD1306
/***** DEFINITION OF OUTPUT RAW VARIABLES *****/
uint8_t Servos_Servomotor_PWMSignal_PIN_D3_rawData = 0;
/***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/
float Servos_Servomotor_PWMSignal_PIN_D3_phyData = 0.0;
/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
// Create a Servo object to control the servo motor
Servo myservo; // Instance of the Servo class
// Create an instance of the Adafruit_SSD1306 class
#define OLED_RESET -1 // Define reset pin (not used in I2C)
Adafruit_SSD1306 display(OLED_RESET); // Create display object
// Create instances of the EasyButton class for each button
EasyButton button1(Button_PushButton_PIN_D2); // Button on D2
EasyButton button2(LButton_PushButton_PIN_D4); // Button on D4
// Variable to keep track of player points
int playerPoints = 0;
void setup(void)
{
// put your setup code here, to run once:
pinMode(Servos_Servomotor_PWMSignal_PIN_D3, OUTPUT);
// Attach the servo control to the PWM output pin
myservo.attach(Servos_Servomotor_PWMSignal_PIN_D3); // Attach the servo to pin D3
// Initialize the display
display.begin(SSD1306_SWITCHCAPVCC, Display_SSD1306OledDisplay_I2C_SLAVE_ADDRESS); // Initialize with I2C address
display.clearDisplay(); // Clear the display buffer
display.display(); // Show the buffer on the display
// Initialize buttons
button1.begin(); // Initialize button D2
button2.begin(); // Initialize button D4
button1.onPressed(onButton1Pressed); // Set callback for button D2
button2.onPressed(onButton2Pressed); // Set callback for button D4
}
void loop(void)
{
// put your main code here, to run repeatedly:
updateOutputs(); // Refresh output data
// Continuously read the status of the buttons
button1.read();
button2.read();
}
void updateOutputs()
{
analogWrite(Servos_Servomotor_PWMSignal_PIN_D3, Servos_Servomotor_PWMSignal_PIN_D3_rawData);
}
void onButton1Pressed()
{
// Increment player points when button D2 is pressed
playerPoints++;
if (playerPoints >= 5) {
playFireworks(); // Play fireworks animation
moveServo(); // Move the servo
playerPoints = 0; // Reset points after action
}
}
void onButton2Pressed()
{
// You can add functionality for button D4 here
}
void playFireworks()
{
// Placeholder for fireworks animation
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Fireworks!");
display.display();
delay(2000);
display.clearDisplay();
}
void moveServo()
{
myservo.write(90); // Move servo to 90 degrees
delay(5000); // Hold for 5 seconds
myservo.write(0); // Move servo back to 0 degrees
}
/* END CODE */