Jarrod ShiltsOm Patange

The Oscillostat

Our device, the Oscillostat, continuously evolves bacteria while oscillating between selective pressures to mimic fluctuating environments.

IntermediateWork in progress936
The Oscillostat

Things used in this project

Hardware components

Futaba S3110 servo motor
Farnell MC02068 perisaltic pump
Koge RP9879 air pump
Digikey 1528-1402-ND red laser
Mouser 856-TSL235R-LF light sensor
Digikey 259-1461-ND CPU fan
Arduino UNO & Genuino UNO
Arduino UNO & Genuino UNO
Versilon SPX-60 FB silicone tubing (4mm)


Read more

Custom parts and enclosures

Valve shaft

Valve base

Tube housing



Simultaneous control of the peristaltic pump and pinch valve, under control of potentiometers and switches for demonstration purposes
#include <Servo.h>

//Pins for peristaltic pump
const int OUT6 = 6; //1EN
const int OUT10 = 10; //2A
const int OUT11 = 11; //1A
int IN0 = 0; //Analog IN, potentiometer
int IN4 = 4; //Digital IN 4, pushpin

//Pins for pinch valve
int potPin = 1;
int servoPin = 9;
Servo servo;

void setup() {
  //Peristaltic pump setup  
  pinMode(OUT6,OUTPUT);    //sets dpin as output
  pinMode(OUT10,OUTPUT);    //sets dpin as output
  pinMode(OUT11,OUTPUT);    //sets dpin as output
  pinMode(IN4,INPUT_PULLUP);    //sets dpin as output

  //Pinch valve setup:


void loop() {
  //Peristaltic pump with potentiometer for speed and reverse button
  int speed = analogRead(IN0) / 4;
  boolean reverse = digitalRead(IN4);
  analogWrite(OUT6,speed); //Motor turn
  digitalWrite(OUT10,reverse); //Motor turn
  digitalWrite(OUT11,!reverse); //Motor turn

  //Pinch valve operation with potentiometer:
  int reading = analogRead(potPin);     // 0 to 1023
  int angle = reading / 6;              // 0 to 180-ish


Jarrod Shilts

Jarrod Shilts

2 projects • 2 followers
Om Patange

Om Patange

1 project • 1 follower