#include <MIDI.h>
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
MIDI_CREATE_DEFAULT_INSTANCE();
// el valor MIDI màxim és 127, primer potenciòmetre/anterior
// El moviment ha de ser sempre diferent del valor anterior
int AnalogValue = 0; // define variables for the controller data
int lastAnalogValue = 128;
int volum = 64; // Es el volum que estableixo d'entrada
int laser = 2; // Pin del punter laser
int contador = 300; // Control apagat laser
int contador1 = 0;
void setup()
{
Serial.begin(31250);
// Serial.begin(9600);
MIDI.begin(MIDI_CHANNEL_OMNI); // Si volem fer proves amb el monitor sèrie hem de comentar aquesta línia
pinMode(laser, OUTPUT);
digitalWrite(laser, LOW);
// Iniciar sensor
Serial.println("VL53L0X test");
if (!lox.begin()) { // En cas que la placa no detecti el sensor de proximitat entre en un bucle
Serial.println(F("Error al iniciar VL53L0X"));
while(1);
}
Serial.println("En marxa");
}
void loop()
{
contolVolum();
MIDI.sendControlChange(7, volum, 1);
}
void contolVolum(){
VL53L0X_RangingMeasurementData_t measure;
//Serial.print("Leyendo sensor... ");
lox.rangingTest(&measure, false); // si se pasa true como parametro, muestra por puerto serie datos de debug
if (measure.RangeStatus != 4)
{
if(measure.RangeMilliMeter <= 1270){
digitalWrite(laser, HIGH);
contador1 = 1;
// Serial.print("Distancia (mm): ");
// Serial.print(measure.RangeMilliMeter);
volum = map(measure.RangeMilliMeter, 1, 1270, 1, 254); // 127
// Serial.print("\t"); Serial.println(volum);
delay(50);
}
} else { // Control per apagar el laser desprews de uns 10 serons sense acticitat
if (contador1 == contador){
contador1 = 0;
digitalWrite(laser, LOW);
} else {
contador1 = contador1 + 1;
}
}
}