Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********* 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 <Wire.h>
- #include <Servo.h> // https://github.com/arduino-libraries/Servo
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h> // https://github.com/stblassitude/Adafruit_SSD1306_Wemos_OLED.git
- #include <EasyButton.h> // 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 */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement