Lesson 54-1: Controlling a Single DC Motor Using a Potentiometer and Push Buttons
487-Lesson 54: Controlling a DC motor using a potentiometer and push buttons
语言: C++
/*
* Lesson 54: Controlling a DC motor using a potentiometer and push buttons | Arduino Step By Step Course
* Library Example for L298N Module to control a DC motor with 3 push buttons (see the link for controlling 2 motors)
*
* This code is to control DC motors using two potentiometers (variable resistors)
*
* Written by Ahmad Shamshiri on October 11, 2019
* in Ajax, Ontario, Canada. www.robojax.com
*
*
* Watch video instruction for this code: https://youtu.be/_o7hCxYKLyc
*
* Get this code and other Arduino codes from Robojax.com
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Robojax_L298N_DC_motor.h>
// motor 1 settings
#define IN1 2
#define IN2 4
#define ENA 3 // this pin must be PWM enabled pin
const int CCW = 2; // do not change
const int CW = 1; // do not change
#define motor1 1 // do not change
#define motor2 2 // do not change
//*** Potentiometer and push button for motor 1 started
const int motor1PushButtonCW = 8;
const int motor1PushButtonStop = 9;
const int motor1PushButtonCCW = 10;
const int pot1Input = A0;
const int motor1Minimum =15;//30% is minimum for motor 1
// do not change below this line
int motor1Direction =CCW;//
int motor1StopState=HIGH;//Stope state of motor 1
int motor1Speed =0;// speed of motor 1
//*** Potentiometer and push button for motor 1 ended
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// use the line below for single motor
Robojax_L298N_DC_motor motor(IN1, IN2, ENA, true);
// use the line below for two motors
//Robojax_L298N_DC_motor motor(IN1, IN2, ENA, IN2, IN3, ENB, true);
void setup() {
Serial.begin(115200);
motor.begin();
//L298N DC Motor by Robojax.com
pinMode(motor1PushButtonCW, INPUT_PULLUP);
pinMode(motor1PushButtonStop, INPUT_PULLUP);
pinMode(motor1PushButtonCCW, INPUT_PULLUP);
}
void loop() {
updateState1();//read all push buttons
int pot1Value= analogRead(pot1Input);// read potentiometer value
motor1Speed = map(pot1Value, 0,1023, motor1Minimum, 100);// convert 0-5V to 0-100%
if(motor1StopState ==HIGH)
{
motor.brake(1);
}else{
motor.rotate(motor1, motor1Speed, motor1Direction);
}
//motor.demo(1);
//motor.rotate(motor1, motor1Speed, CW);//run motor1 at 60% speed in CW direction
delay(100);
}//
/*
* updateState1()
* @brief reads push buttons and updates values
* @param none
* @return no return
* Written by Ahmad Shamshiri for robojax.com
* on October 11, 2019 in Ajax, Ontario, Canada
*/
void updateState1()
{
if(digitalRead(motor1PushButtonCW) ==LOW && motor1StopState !=LOW){
motor1Direction =CW;// CW button is pressed
motor1StopState =LOW;
}
if(digitalRead(motor1PushButtonCCW) ==LOW && motor1StopState !=LOW)
{
motor1Direction =CCW;
motor1StopState =LOW;
}
if(digitalRead(motor1PushButtonStop) ==LOW)
{
motor1StopState =HIGH;// STOP button is pressed
}
}//updateState end
|||您可能需要的东西
-
易趣从 eBay 购买 L298N 模块(关联)ebay.us
资源与参考
-
外部从 eBay 购买 L298N 模块(关联)ebay.us
-
外部从亚马逊美国(联盟)购买L298N继电器amzn.to
文件📁
没有可用的文件。