94 lines
1.6 KiB
C++
94 lines
1.6 KiB
C++
#include "QDPDCMOTOR.h"
|
|
QDPDCMOTOR::QDPDCMOTOR(uint8_t port)
|
|
{
|
|
if (port == 1) {
|
|
Mport1 = 7;
|
|
Mport2 = 6;
|
|
Iport = 3;
|
|
pinMode(7, OUTPUT);
|
|
pinMode(6, OUTPUT);
|
|
pinMode(3, INPUT);
|
|
} else {
|
|
Mport1 = 4;
|
|
Mport2 = 5;
|
|
Iport = 2;
|
|
pinMode(4, OUTPUT);
|
|
pinMode(5, OUTPUT);
|
|
pinMode(2, INPUT);
|
|
}
|
|
|
|
}
|
|
void QDPDCMOTOR::run(int speed)
|
|
{
|
|
speed = speed > 255 ? 255 : speed;
|
|
speed = speed < -255 ? -255 : speed;
|
|
|
|
if (speed >= 0)
|
|
{
|
|
digitalWrite(Mport1, HIGH);
|
|
analogWrite(Mport2, abs(speed));
|
|
}
|
|
else
|
|
{
|
|
digitalWrite(Mport1, LOW);
|
|
analogWrite(Mport2, abs(speed));
|
|
}
|
|
|
|
}
|
|
void QDPDCMOTOR::stop()
|
|
{
|
|
digitalWrite(Mport1, LOW);
|
|
analogWrite(Mport2, 0);
|
|
flag1 = 0;
|
|
}
|
|
void QDPDCMOTOR::PulseINI(long pulsenum, int speed, long _lowpulse, int _lowspeed) {
|
|
setcount = pulsenum;
|
|
count = 0;
|
|
setspeed = speed;
|
|
lowpulse = _lowpulse;
|
|
lowspeed = _lowspeed;
|
|
flag = 1;
|
|
flag1 = 1;
|
|
}
|
|
void QDPDCMOTOR::PulseRun(uint8_t num) {
|
|
run(setspeed);
|
|
if(num)
|
|
DcMotorfinish();
|
|
|
|
}
|
|
void QDPDCMOTOR::DcMotorCount1() {
|
|
count++;
|
|
if (flag == 1 & setcount - count < lowpulse ) {
|
|
analogWrite(Mport2, abs(lowspeed));
|
|
flag = 0;
|
|
}
|
|
if (count >= setcount) {
|
|
//flag1 = 0;
|
|
detachInterrupt(digitalPinToInterrupt(3));
|
|
stop();
|
|
|
|
}
|
|
};
|
|
|
|
void QDPDCMOTOR::DcMotorCount2() {
|
|
|
|
count++;
|
|
if (flag == 1 & setcount - count < lowpulse ) {
|
|
analogWrite(Mport2, abs(lowspeed));
|
|
flag = 0;
|
|
}
|
|
if (count >= setcount) {
|
|
//flag1 = 0;
|
|
detachInterrupt(digitalPinToInterrupt(2));
|
|
stop();
|
|
|
|
}
|
|
};
|
|
|
|
void QDPDCMOTOR::DcMotorfinish() {
|
|
while(flag1){
|
|
delay(1);
|
|
//Serial.println(flag1);
|
|
|
|
}
|
|
} |