#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; } } }