/* Arduino Nano circuit
Connect SDA pin of Sensor to A4, pull up with 10K Ohm resistor to 5V
Connect SCL pin of Sensor to A5, pull up with 10K ohm resistor to 5V
Connect VCC of sensor to 5V of Arduino Nano
Connecto GND of sensor to GND of Arduino Nano
*/
//#include "SFM3X00.h"
//SFM3X00 flowSensor(0x40);
#define v_gate 5
#define flow_v A0
#define indication A1
unsigned int pwm_value=100;
unsigned int pwm_max;
unsigned int pwm_min;
float flow;
bool ascending=false;
bool descending=true;
void setup() {
// Wire.begin();
Serial.begin(9600);
pinMode(v_gate, OUTPUT);
pinMode(flow_v, INPUT);
pinMode(indication, OUTPUT);
// flowSensor.begin();
delay(1000);
// Serial.println();
// Serial.print("sensor serial number: ");
// Serial.println(flowSensor.serialNumber, HEX);
// Serial.print("sensor article number: ");
// Serial.println(flowSensor.articleNumber, HEX);
// Serial.println();
// Serial.print("read scale factor: ");
// Serial.println(flowSensor.flowScale);
// Serial.print("read flow offset: ");
// Serial.println(flowSensor.flowOffset);
// flowSensor.begin();
// Serial.println("Sensor Initialized..");
delay(5);
}
void loop() {
read_flow();
if(!ascending)
{
pwm_value--;
if(pwm_value <= 0 || pwm_value > 50000)
{
pwm_value=0;
}
analogWrite(v_gate,pwm_value);
analogWrite(indication,pwm_value);
_print(flow,pwm_value);
if(flow == 0)
{
pwm_min=pwm_value;
// Serial.print("Minimum Value : ");Serial.println(pwm_min);
descending=false;
ascending=true;
}
}
if(!descending)
{
pwm_value=pwm_value+1;
if(pwm_value >=255)
{
pwm_value=255;
}
analogWrite(indication,pwm_value);
analogWrite(v_gate,pwm_value);
_print(flow,pwm_value);
if(flow > 10)
{
pwm_max=pwm_value;
// Serial.print("Maximum Value : ");Serial.println(pwm_max);
ascending = false;
descending=true;
}
}
// delay(1);
}
unsigned int read_flow()
{
// read flow from sensor and print
// flow = flowSensor.readFlow();
return flow;
}
void _print(float _flow,unsigned int _pwm)
{
Serial.print("Flow:");
Serial.print(F(_flow));
Serial.print(",");
Serial.print("PWM Value:");
Serial.println(F(_pwm));
}