I have created an library for my peristaltic pump without delay, the peristaltic pump starts but doesn't stops.
main code --
#include <PeristalticPump.h>
PeristalticPump pump1(3,5,4);//pul,step,dir
void setup() {
pump1.PinSetup();
pump1.pumpstart(50,1);
}
void loop() {
}
cpp file code --
#include "Arduino.h"
#include "PeristalticPump.h"
int pulse;
int direct;
int step;
unsigned long intervalPump;
unsigned long msecPump;
unsigned long msec;
PeristalticPump::PeristalticPump(int ppin1, int ppin2, int ppin3){
pulse=ppin1;
step=ppin2;
direct=ppin3;
}
void PeristalticPump::PinSetup() {
pinMode(pulse,OUTPUT);
pinMode(step,OUTPUT);
pinMode(direct,OUTPUT);
}
void PeristalticPump::pumpdelay()
{
if (HIGH == digitalRead (direct) && (msec - msecPump) >= intervalPump) {
digitalWrite (step, LOW);
digitalWrite (direct, LOW);
analogWrite (pulse, 0);
}
}
void PeristalticPump::pumpstart(float pwm,int interval)
{
msec = millis ();
intervalPump = interval*1000;
pumpdelay();
analogWrite(pulse, pwm);
digitalWrite(step, HIGH);
digitalWrite(direct, HIGH);
msecPump = msec;
}
header file code --
#ifndef PeristalticPump_h
#define PeristalticPump_h
#include "Arduino.h"
class PeristalticPump {
private:
int ppin1;
int ppin2;
int ppin3;
public:
PeristalticPump(int ppin1, int ppin2, int ppin3);
void PinSetup();
void pumpdelay();
void pumpstart(float pwm,int interval);
};
#endif