Arduino Digital Peristaltic Pump - DFRobot



Diagram

Arduino Sketch


#include <Wire.h>
#include <Servo.h>
#include <DFRobot_RGBLCD.h>

DFRobot_RGBLCD lcd(16,2);
Servo myservo;

#define PUMPPIN  9    //peristaltic pump control pin, connect to arduino digital pin 9
#define waitTime 2000 //interval time(ms) between every state

bool startPump = true;
bool  stopPump = false;
int  vol   = 50;
int currentVol = 0;


const long interval = 1410;
unsigned long previousMillis = 0;

void setup()
{
        
    myservo.attach(PUMPPIN);
    lcd.init();
  
    myservo.write(90); // stop pump

    displayLCD();
     
}

void loop()
{

   unsigned long currentMillis = millis();

   if ( currentMillis - previousMillis >= interval ) {
    
        
        previousMillis = currentMillis;

        if( currentVol < vol ){
            currentVol++;
            updateLCD();
        }else{
             stopPump = true;
        }
        
   }

   if( startPump ){
      startPump = false;
      myservo.write(180);
   }

   if( stopPump ){
       stopPump = false;
       myservo.write(90);
   }
     
   
  
}
void displayLCD(){
  
    char str[18];
    
    sprintf(str, "Volume: %d ml", vol);
    lcd.clear();
    lcd.setRGB(255, 0, 0);  
    lcd.setCursor(0,0);
    lcd.print(str);
    lcd.setCursor(0,1);
    
    sprintf(str, " %d  ml", currentVol);
    lcd.print(str);
}
void updateLCD(){
    char str[18];
       
    lcd.setCursor(0,1);    
    lcd.print("           ");
    lcd.setCursor(0,1);     
    sprintf(str, " %d  ml", currentVol);
    lcd.print(str);
}

ความคิดเห็น