Programma voor HIDScope (lecture 3 tutorial)
Dependencies: mbed QEI HIDScope biquadFilter MODSERIAL FastPWM
main.cpp@0:a75335365b8c, 2019-09-20 (annotated)
- Committer:
- freek100
- Date:
- Fri Sep 20 12:46:54 2019 +0000
- Revision:
- 0:a75335365b8c
Eerste versie voor assignment 2 van lecture 3 tutorial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
freek100 | 0:a75335365b8c | 1 | #include "mbed.h" |
freek100 | 0:a75335365b8c | 2 | #include "HIDScope.h" |
freek100 | 0:a75335365b8c | 3 | //#include "QEI.h" |
freek100 | 0:a75335365b8c | 4 | #include "MODSERIAL.h" |
freek100 | 0:a75335365b8c | 5 | //#include "BiQuad.h" |
freek100 | 0:a75335365b8c | 6 | //#include "FastPWM.h" |
freek100 | 0:a75335365b8c | 7 | #include <string> |
freek100 | 0:a75335365b8c | 8 | |
freek100 | 0:a75335365b8c | 9 | |
freek100 | 0:a75335365b8c | 10 | DigitalOut ledr(LED_RED); |
freek100 | 0:a75335365b8c | 11 | DigitalOut ledg(LED_GREEN); |
freek100 | 0:a75335365b8c | 12 | DigitalOut ledb(LED_BLUE); |
freek100 | 0:a75335365b8c | 13 | PwmOut led1(D10); |
freek100 | 0:a75335365b8c | 14 | DigitalIn button1(D2); |
freek100 | 0:a75335365b8c | 15 | AnalogIn potmeter(A1); |
freek100 | 0:a75335365b8c | 16 | DigitalIn sw(SW2); |
freek100 | 0:a75335365b8c | 17 | MODSERIAL pc(USBTX, USBRX); |
freek100 | 0:a75335365b8c | 18 | |
freek100 | 0:a75335365b8c | 19 | HIDScope scope(2); //Going to send 2 channels of data. To access data go to 'http:/localhost:18082/' after starting HIDScope application. |
freek100 | 0:a75335365b8c | 20 | Ticker AInTicker; |
freek100 | 0:a75335365b8c | 21 | AnalogIn aIn1(A1); |
freek100 | 0:a75335365b8c | 22 | |
freek100 | 0:a75335365b8c | 23 | volatile float x; |
freek100 | 0:a75335365b8c | 24 | volatile float x_prev=0; |
freek100 | 0:a75335365b8c | 25 | volatile float y; //filtered 'output' of Read Analog |
freek100 | 0:a75335365b8c | 26 | |
freek100 | 0:a75335365b8c | 27 | void ReadAnalogInAndFilter() |
freek100 | 0:a75335365b8c | 28 | { |
freek100 | 0:a75335365b8c | 29 | x=aIn1; //capture data |
freek100 | 0:a75335365b8c | 30 | scope.set(0,x); //store data in first element of scope memory (store 1st data point) |
freek100 | 0:a75335365b8c | 31 | y=(x_prev+x)/2.0; //averaging filter |
freek100 | 0:a75335365b8c | 32 | scope.set(1,y); //store data in second element of scope memory (store second data point) |
freek100 | 0:a75335365b8c | 33 | x_prev= x; //prepare for next round |
freek100 | 0:a75335365b8c | 34 | |
freek100 | 0:a75335365b8c | 35 | scope.send(); //send what's in scope memory to PC |
freek100 | 0:a75335365b8c | 36 | } |
freek100 | 0:a75335365b8c | 37 | |
freek100 | 0:a75335365b8c | 38 | int main() |
freek100 | 0:a75335365b8c | 39 | { |
freek100 | 0:a75335365b8c | 40 | pc.baud(115200); |
freek100 | 0:a75335365b8c | 41 | pc.printf("\r\nStarting...\r\n\r\n"); |
freek100 | 0:a75335365b8c | 42 | |
freek100 | 0:a75335365b8c | 43 | AInTicker.attach(&ReadAnalogInAndFilter, 0.01); |
freek100 | 0:a75335365b8c | 44 | while(true){/*do nothing. You could use y here if you wish*/}; |
freek100 | 0:a75335365b8c | 45 | |
freek100 | 0:a75335365b8c | 46 | } |