/********* 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: Motor Control
- Source Code compiled for: Arduino Pro Mini 5V
- Source Code created on: 2024-04-04 22:47:42
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* motor and potentiometer is connected physically. */
/* motor rotates back and forth to reach the */
/* potentiometers lowest and highest values. this is */
/* done twice for accuracy. */
/****** END SYSTEM REQUIREMENTS *****/
/********* User code review feedback **********
#### Feedback 1 ####
- I especially need the part Add the logic to rotate the motor ba
ck and forth to reach the potentiometer's lowest and highest val
ues
********* User code review feedback **********/
/****** DEFINITION OF LIBRARIES *****/
#include //https://github.com/evert-arias/EasyButton
#include //https://github.com/AndreaLombardo/L298N
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void updateOutputs(void);
/***** DEFINITION OF ANALOG INPUT PINS *****/
const uint8_t potentiometerPin = A0;
/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t motorForwardPin = 4;
const uint8_t motorBackwardPin = 6;
/***** DEFINITION OF PWM OUTPUT PINS *****/
const uint8_t motorSpeedPin = 5;
/***** DEFINITION OF OUTPUT RAW VARIABLES *****/
bool motorForwardRawData = 0;
bool motorBackwardRawData = 0;
uint8_t motorSpeedRawData = 0;
/***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/
float motorForwardPhyData = 0.0;
float motorBackwardPhyData = 0.0;
float motorSpeedPhyData = 0.0;
/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
L298N motorController(motorSpeedPin, motorForwardPin, motorBackwardPin); //Creating an instance of L298N class
void setup(void)
{
pinMode(potentiometerPin, INPUT);
pinMode(motorForwardPin, OUTPUT);
pinMode(motorBackwardPin, OUTPUT);
pinMode(motorSpeedPin, OUTPUT);
}
void loop(void)
{
updateOutputs(); // Refresh output data
// Implement the motor control logic here
// Example:
// Read the potentiometer value from the analog input pin
int potValue = analogRead(potentiometerPin);
// Map the potentiometer value to motor speed
int motorSpeed = map(potValue, 0, 1023, 0, 255);
// Set the motor speed using the L298N library
motorController.setSpeed(motorSpeed);
// Add the logic to rotate the motor back and forth to reach the potentiometer's lowest and highest values
if (potValue < 100)
{
motorController.forward();
}
else if (potValue > 900)
{
motorController.backward();
}
else
{
motorController.stop();
}
delay(100); // Adjust the delay as needed
}
void updateOutputs(void)
{
digitalWrite(motorForwardPin, motorForwardRawData);
digitalWrite(motorBackwardPin, motorBackwardRawData);
analogWrite(motorSpeedPin, motorSpeedRawData);
}