![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
We made an instrument using buttons and a temperature/humidity sensor. Currently the sounds are mapped to the harmonic series with sine / saw / square waves mix. The humidity sensor triggers the timbral change.
Dependencies: DHT11 HC_SR04_Ultrasonic_Library mbed
Revision 0:257c833fe9de, committed 2017-06-28
- Comitter:
- nonchalamment
- Date:
- Wed Jun 28 22:26:55 2017 +0000
- Commit message:
- We made an instrument activated by buttons and a humidity sensor.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DHT11.lib Wed Jun 28 22:26:55 2017 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/fossum_13/code/DHT11/#5da6f6de3e42
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HC_SR04_Ultrasonic_Library.lib Wed Jun 28 22:26:55 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/ejteb/code/HC_SR04_Ultrasonic_Library/#e0f9c9fb4cf3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 28 22:26:55 2017 +0000 @@ -0,0 +1,99 @@ +#include "mbed.h" +#include "ultrasonic.h" +#include "Dht11.h" +#include <stdio.h> +Serial pc(USBTX, USBRX); // tx, rx + +// pull down +DigitalIn b1(D9); +DigitalIn b2(D8); +DigitalIn b3(D7); +DigitalIn b4(D6); +DigitalIn b5(D5); +DigitalIn b6(D4); +DigitalIn b7(D3); +DigitalIn b8(D2); + +Dht11 tmpSensor(D0); + +DigitalIn buttons[8]={b1,b2,b3,b4,b5,b6,b7,b8}; +int buttonNames[] = {1,2,3,4,5,6,7,8}; + + +// values for temp/humidity sensor; +int tempSamples[5]; +int humiSamples[5]; +int counter = 0; + +int tempValue = 0; +int minTemp = 0; + +int humiValue = 0; +int minHumi = 0; + +float findMedian(int x[]) { + float temp; + int i, j; + // the following two loops sort the array x in ascending order + for(i=0; i < 4; i++) { + for(j=i+1; j<5; j++) { + if(x[j] < x[i]) { + // swap elements + temp = x[i]; + x[i] = x[j]; + x[j] = temp; + } + } + } + return x[2]; +} + + + +void averageTH(int temperature, int humidity) { + if (counter==5){ + counter=0; + int medTemp = findMedian(tempSamples); + int medHumi = findMedian(humiSamples); + if (medTemp >= minTemp && medHumi >= minHumi) { + tempValue = medTemp; + humiValue = medHumi; + printf("tmp %d\r\n", tempValue); + printf("hum %d\r\n", humiValue); + } + + } else { + tempSamples[counter] = temperature; + humiSamples[counter] = humidity; + counter += 1; + //printf("Temperature changed to %dmm\r\n", temperature); + } + + + +} + +void waitforbuttons() { + for (int i = 0; i < 8; i++) { + DigitalIn button = buttons[i]; + int name = buttonNames[i]; + if (button.read() == 0) { + pc.printf("button %d\r\n", name); + } + } + wait(0.1); +} + + + +int main(){ + + + + while(1) + { + tmpSensor.read(); + averageTH(tmpSensor.getFahrenheit(), tmpSensor.getHumidity()); + waitforbuttons(); + } + } \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Jun 28 22:26:55 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/mbed_official/code/mbed/builds/64910690c574 \ No newline at end of file