Files

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);
}
}