83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
int in[5] = {A1 , A2, A3, A4, A5};
|
|
#define GREEN 9
|
|
#define RED 10
|
|
#define BLUE 11
|
|
#define TIME 2000
|
|
#define TIME_INC 10
|
|
#define inc 255*TIME_INC/TIME
|
|
|
|
#define COLOUR BLUE
|
|
|
|
const long referenceMv = 5000;
|
|
|
|
void setup() {
|
|
// put your setup code here, to run once:
|
|
Serial.begin(115200);
|
|
pinMode(RED, OUTPUT);
|
|
pinMode(GREEN, OUTPUT);
|
|
pinMode(BLUE, OUTPUT);
|
|
analogWrite(RED, 0);
|
|
analogWrite(GREEN, 0);
|
|
analogWrite(BLUE, 0);
|
|
}
|
|
|
|
unsigned long time_sensor = millis();
|
|
unsigned long time_fade = millis();
|
|
unsigned long time_inc = millis();
|
|
|
|
int value = 0;
|
|
|
|
void loop() {
|
|
// put your main code herddfe, to run repeatedly:
|
|
if ((millis()-time_sensor)>=100)
|
|
{
|
|
Serial.print("Sensor:");
|
|
for(int i=0; i<5; i++)
|
|
{
|
|
int val = analogRead(in[i]);
|
|
int mV = (val * referenceMv) / 1023;
|
|
int cm = getDistance(mV);
|
|
Serial.print(cm);
|
|
if (i<4)Serial.print(",");
|
|
else Serial.println();
|
|
}
|
|
time_sensor = millis();
|
|
}
|
|
if ((millis()-time_fade)<TIME)
|
|
{
|
|
if ((millis()-time_inc)>=TIME_INC)
|
|
{
|
|
if((value+inc)>255) value = 255;
|
|
else value = value+inc;
|
|
analogWrite(COLOUR, value);
|
|
time_inc = millis();
|
|
}
|
|
}
|
|
else if ((millis()-time_fade)<2*TIME)
|
|
{
|
|
if ((millis()-time_inc)>=TIME_INC)
|
|
{
|
|
if((value-inc)<0) value = 0;
|
|
else value = value-inc;
|
|
analogWrite(COLOUR, value);
|
|
time_inc = millis();
|
|
}
|
|
}
|
|
else time_fade = millis();
|
|
|
|
|
|
}
|
|
|
|
//interpolación de la distancia a intervalos de 250mV
|
|
const int TABLE_ENTRIES = 12;
|
|
const int INTERVAL = 250;
|
|
static int distance[TABLE_ENTRIES] = {150,140,130,100,60,50,40,35,30,25,20,15};
|
|
int getDistance(int mV) {
|
|
if (mV > INTERVAL * TABLE_ENTRIES - 1) return distance[TABLE_ENTRIES - 1];
|
|
else {
|
|
int index = mV / INTERVAL;
|
|
float frac = (mV % 250) / (float)INTERVAL;
|
|
return distance[index] - ((distance[index] - distance[index + 1]) * frac);
|
|
}
|
|
}
|