#include "SolenoidValve.h"

SolenoidValve::SolenoidValve(byte pwm_pin, float frequency)
{
  _pwm_pin = pwm_pin;
  _period = (unsigned long) 1000/frequency; //ms for pwm period
  Serial.println(_period);
}

void SolenoidValve::init()
{
  pinMode(_pwm_pin, OUTPUT);
  digitalWrite(_pwm_pin, 0);
  _pwm = 0;
  _last_step_time = 0;
}

void SolenoidValve::update()
{
  unsigned long current_millis = millis();
  if ( (current_millis-_last_step_time)*256 < _period*_pwm ) digitalWrite(_pwm_pin, HIGH); 
  else digitalWrite(_pwm_pin,LOW);
  if ( current_millis-_last_step_time > _period) _last_step_time = current_millis;
}

void SolenoidValve::set_pwm(byte pwm){
  _pwm = pwm;
}
byte SolenoidValve::get_pwm(){
  return _pwm;
}
