Add 'main.c'
This commit is contained in:
parent
ad3d4bb8e0
commit
3f38258a20
70
main.c
Normal file
70
main.c
Normal 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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user