A theremin project

Dependencies:   mbed RN41_Raw_Serial RN41 BLE_API HCSR04

main.cpp

Committer:
ruroz
Date:
2021-12-30
Revision:
0:007004c7f41e

File content as of revision 0:007004c7f41e:

#include "mbed.h"
#include "HCSR04.h"
#include "RN41/RN41.h"
#include "ble/BLE.h"
#include "ble/Gap.h"
#include <string>

#define MIN_DISTANCE 2
#define MAX_DISTANCE 110

Serial pc(USBTX, USBRX, 115200);
HCSR04 sensorVolume(p22, p21);
HCSR04 sensorFreq(p24, p23);
RN41 ble(p9, p10);
float freqValue;
float volumeValue; //0 to 100

void configSystem() {
    //config sensors
    sensorFreq.setRanges(MIN_DISTANCE, MAX_DISTANCE);
    sensorVolume.setRanges(MIN_DISTANCE, MAX_DISTANCE);
    freqValue = 0.0f;
    volumeValue = 0.0f;
    //config BLE
    pc.printf("Hello");
    bool a = ble.setDeviceName("theremin");
    bool b = ble.setAuthenticationMode(0);
    bool c = ble.setMode(4);
    pc.printf("deviceName : %d %d %d", a, b, c);
}

void transformValues() {
    freqValue = freqValue / MAX_DISTANCE;
    volumeValue = (MAX_DISTANCE - volumeValue) / MAX_DISTANCE;
}

float measureSensor(HCSR04 &sensor) {
    sensor.startMeasurement();
    while(!sensor.isNewDataReady());
    return sensor.getDistance_mm();
}

void sendDataBluetooth(string line) {
    //rn41.sendLine(line);
    //pc.printf(rn41.getLine().c_str());
}

int main() {
    configSystem();
    //TODO: Cambiar ranges con bluetooth a través de la app? Se necesitan dos modulos bluetooth, no
    while(true) {
        freqValue = measureSensor(sensorFreq);
        volumeValue = measureSensor(sensorVolume);
        //pc.printf("Frequency: %f mm. Volume: %f mm. \n\r", freqValue, volumeValue);
        transformValues();
        //sendDataBluetooth("foo");
        //pc.printf("getConnectionStatus: " + ble.getConnectionStatus());
        //pc.printf("getConnectionStatus: " + ble.getConnectionStatus());
        //TODO (Manuel): enviar por bluetooth
        //sendBluetooth();
        wait(0.5);
    }
}