~
Dependencies: 4DGL-uLCD-SE SDFileSystem
main.cpp@4:f5bc5d9a790b, 2016-09-23 (annotated)
- Committer:
- fkhan39
- Date:
- Fri Sep 23 19:45:44 2016 +0000
- Revision:
- 4:f5bc5d9a790b
- Parent:
- 3:99acbebbed6c
- Child:
- 5:151b0fa1fb44
added mems microphone test;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fkhan39 | 0:570683b2d0c9 | 1 | #include "mbed.h" |
fkhan39 | 0:570683b2d0c9 | 2 | |
fkhan39 | 4:f5bc5d9a790b | 3 | BusOut myleds(LED1,LED2,LED3,LED4); |
fkhan39 | 4:f5bc5d9a790b | 4 | |
fkhan39 | 4:f5bc5d9a790b | 5 | class microphone |
fkhan39 | 4:f5bc5d9a790b | 6 | { |
fkhan39 | 4:f5bc5d9a790b | 7 | public : |
fkhan39 | 4:f5bc5d9a790b | 8 | microphone(PinName pin); |
fkhan39 | 4:f5bc5d9a790b | 9 | float read(); |
fkhan39 | 4:f5bc5d9a790b | 10 | operator float (); |
fkhan39 | 4:f5bc5d9a790b | 11 | private : |
fkhan39 | 4:f5bc5d9a790b | 12 | AnalogIn _pin; |
fkhan39 | 4:f5bc5d9a790b | 13 | }; |
fkhan39 | 4:f5bc5d9a790b | 14 | microphone::microphone (PinName pin): |
fkhan39 | 4:f5bc5d9a790b | 15 | _pin(pin) |
fkhan39 | 4:f5bc5d9a790b | 16 | { |
fkhan39 | 4:f5bc5d9a790b | 17 | } |
fkhan39 | 4:f5bc5d9a790b | 18 | float microphone::read() |
fkhan39 | 4:f5bc5d9a790b | 19 | { |
fkhan39 | 4:f5bc5d9a790b | 20 | return _pin.read(); |
fkhan39 | 4:f5bc5d9a790b | 21 | } |
fkhan39 | 4:f5bc5d9a790b | 22 | inline microphone::operator float () |
fkhan39 | 4:f5bc5d9a790b | 23 | { |
fkhan39 | 4:f5bc5d9a790b | 24 | return _pin.read(); |
fkhan39 | 4:f5bc5d9a790b | 25 | } |
fkhan39 | 4:f5bc5d9a790b | 26 | |
fkhan39 | 4:f5bc5d9a790b | 27 | microphone mymicrophone(p16); |
fkhan39 | 4:f5bc5d9a790b | 28 | |
fkhan39 | 4:f5bc5d9a790b | 29 | int main() |
fkhan39 | 4:f5bc5d9a790b | 30 | { |
fkhan39 | 4:f5bc5d9a790b | 31 | while(1) { |
fkhan39 | 4:f5bc5d9a790b | 32 | //read in, subtract 0.67 DC bias, take absolute value, and scale up .1Vpp to 15 for builtin LED display |
fkhan39 | 4:f5bc5d9a790b | 33 | myleds = int(abs((mymicrophone - (0.67/3.3)))*500.0); |
fkhan39 | 4:f5bc5d9a790b | 34 | //Use an 8kHz audio sample rate (phone quality audio); |
fkhan39 | 4:f5bc5d9a790b | 35 | wait(1.0/8000.0); |
fkhan39 | 4:f5bc5d9a790b | 36 | } |
fkhan39 | 4:f5bc5d9a790b | 37 | } |
fkhan39 | 4:f5bc5d9a790b | 38 | /* |
fkhan39 | 4:f5bc5d9a790b | 39 | |
fkhan39 | 1:4ed94566512a | 40 | AnalogOut aout(p18); |
fkhan39 | 1:4ed94566512a | 41 | AnalogIn ain(p15); |
fkhan39 | 0:570683b2d0c9 | 42 | DigitalOut led1(LED1); |
fkhan39 | 1:4ed94566512a | 43 | DigitalOut led2(LED2); |
fkhan39 | 1:4ed94566512a | 44 | DigitalOut led3(LED3); |
fkhan39 | 1:4ed94566512a | 45 | DigitalOut led4(LED4); |
fkhan39 | 0:570683b2d0c9 | 46 | |
fkhan39 | 1:4ed94566512a | 47 | int main() |
fkhan39 | 1:4ed94566512a | 48 | { |
fkhan39 | 4:f5bc5d9a790b | 49 | |
fkhan39 | 4:f5bc5d9a790b | 50 | |
fkhan39 | 4:f5bc5d9a790b | 51 | /* |
fkhan39 | 2:20b2a7eb4bd8 | 52 | // part 1 |
fkhan39 | 1:4ed94566512a | 53 | const double pi = 3.141592653589793238462; |
fkhan39 | 1:4ed94566512a | 54 | const double amplitude = 1.0f; |
fkhan39 | 1:4ed94566512a | 55 | const double offset = 65535/2; // 0xFFFF/2 |
fkhan39 | 1:4ed94566512a | 56 | double rads = 0.0; |
fkhan39 | 1:4ed94566512a | 57 | uint16_t sample = 0; |
fkhan39 | 1:4ed94566512a | 58 | |
fkhan39 | 1:4ed94566512a | 59 | while(1) { |
fkhan39 | 1:4ed94566512a | 60 | // analog out |
fkhan39 | 1:4ed94566512a | 61 | |
fkhan39 | 1:4ed94566512a | 62 | for (int i = 0; i < 720; i++) { |
fkhan39 | 1:4ed94566512a | 63 | rads = (pi * i) / 180.0f; |
fkhan39 | 1:4ed94566512a | 64 | sample = (uint16_t)(amplitude * (offset * (cos(rads + pi))) + offset); |
fkhan39 | 1:4ed94566512a | 65 | aout.write_u16(sample); |
fkhan39 | 1:4ed94566512a | 66 | } |
fkhan39 | 1:4ed94566512a | 67 | |
fkhan39 | 1:4ed94566512a | 68 | |
fkhan39 | 1:4ed94566512a | 69 | // analog in |
fkhan39 | 1:4ed94566512a | 70 | led1 = (ain > 0.2f) ? 1 : 0; |
fkhan39 | 1:4ed94566512a | 71 | led2 = (ain > 0.4f) ? 1 : 0; |
fkhan39 | 1:4ed94566512a | 72 | led3 = (ain > 0.6f) ? 1 : 0; |
fkhan39 | 1:4ed94566512a | 73 | led4 = (ain > 0.8f) ? 1 : 0; |
fkhan39 | 1:4ed94566512a | 74 | wait(.01); |
fkhan39 | 0:570683b2d0c9 | 75 | } |
kswanson31 | 3:99acbebbed6c | 76 | |
kswanson31 | 3:99acbebbed6c | 77 | /* part 5 |
kswanson31 | 3:99acbebbed6c | 78 | // demo from https://docs.mbed.com/docs/mbed-os-api-reference/en/5.1/APIs/communication/network_sockets/ |
kswanson31 | 3:99acbebbed6c | 79 | |
kswanson31 | 3:99acbebbed6c | 80 | printf("Example network-socket HTTP client\n"); |
kswanson31 | 3:99acbebbed6c | 81 | |
kswanson31 | 3:99acbebbed6c | 82 | // Brings up the network interface |
kswanson31 | 3:99acbebbed6c | 83 | eth.connect(); |
kswanson31 | 3:99acbebbed6c | 84 | const char *ip = eth.get_ip_address(); |
kswanson31 | 3:99acbebbed6c | 85 | const char *mac = eth.get_mac_address(); |
kswanson31 | 3:99acbebbed6c | 86 | printf("IP address is: %s\n", ip ? ip : "No IP"); |
kswanson31 | 3:99acbebbed6c | 87 | printf("MAC address is: %s\n", mac ? mac : "No MAC"); |
kswanson31 | 3:99acbebbed6c | 88 | |
kswanson31 | 3:99acbebbed6c | 89 | // Open a socket on the network interface, and create a TCP connection to mbed.org |
kswanson31 | 3:99acbebbed6c | 90 | socket.open(ð); |
kswanson31 | 3:99acbebbed6c | 91 | socket.connect("developer.mbed.org", 80); |
kswanson31 | 3:99acbebbed6c | 92 | |
kswanson31 | 3:99acbebbed6c | 93 | // Send a simple http request |
kswanson31 | 3:99acbebbed6c | 94 | char sbuffer[] = "GET / HTTP/1.1\r\nHost: developer.mbed.org\r\n\r\n"; |
kswanson31 | 3:99acbebbed6c | 95 | int scount = socket.send(sbuffer, sizeof sbuffer); |
kswanson31 | 3:99acbebbed6c | 96 | printf("sent %d [%.*s]\r\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer); |
kswanson31 | 3:99acbebbed6c | 97 | |
kswanson31 | 3:99acbebbed6c | 98 | // Recieve a simple http response and print out the response line |
kswanson31 | 3:99acbebbed6c | 99 | char rbuffer[64]; |
kswanson31 | 3:99acbebbed6c | 100 | int rcount = socket.recv(rbuffer, sizeof rbuffer); |
kswanson31 | 3:99acbebbed6c | 101 | printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer); |
kswanson31 | 3:99acbebbed6c | 102 | |
kswanson31 | 3:99acbebbed6c | 103 | // Close the socket to return its memory and bring down the network interface |
kswanson31 | 3:99acbebbed6c | 104 | socket.close(); |
kswanson31 | 3:99acbebbed6c | 105 | eth.disconnect(); |
kswanson31 | 3:99acbebbed6c | 106 | |
kswanson31 | 3:99acbebbed6c | 107 | printf("Done\n"); |
kswanson31 | 3:99acbebbed6c | 108 | */ |