Add 'main.c'

This commit is contained in:
Jack Hadrill 2020-06-25 20:25:12 +00:00
parent ad3d4bb8e0
commit 3f38258a20

70
main.c Normal file
View File

@ -0,0 +1,70 @@
#define SENSOR_PIN A3
#define RELAY_PIN 3
#define SENSOR_SAMPLE_COUNT 50
#define SENSOR_THRESHOLD 50
#define RELAY_SHUTOFF_DELAY 5000
bool RELAY_STATE = HIGH;
int INDEX = 0;
int SAMPLES[SENSOR_SAMPLE_COUNT] = {0};
int getMaxIntFromArray(int *arr, int len)
{
int maxValue = 0;
for (int i = 0; i < len; i++)
{
if (arr[i] > maxValue)
{
maxValue = arr[i];
}
}
return maxValue;
}
int getSensorValue()
{
for (int i = 0; i < SENSOR_SAMPLE_COUNT; i++)
{
INDEX = (INDEX + 1) % SENSOR_SAMPLE_COUNT;
SAMPLES[INDEX] = abs(analogRead(SENSOR_PIN) - 512);
delay(10);
}
return getMaxIntFromArray(SAMPLES, SENSOR_SAMPLE_COUNT);
}
void setup()
{
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH);
}
void loop()
{
int sensorValue = getSensorValue();
if (sensorValue < SENSOR_THRESHOLD)
{
if (RELAY_STATE == LOW)
{
delay(RELAY_SHUTOFF_DELAY);
sensorValue = getSensorValue();
}
if (sensorValue < SENSOR_THRESHOLD)
{
// Vacuum off.
RELAY_STATE = HIGH;
}
}
else
{
// Vacuum on.
RELAY_STATE = LOW;
}
digitalWrite(RELAY_PIN, RELAY_STATE);
}