Josip Papratović
/
1_MIKROUPRAVLJACI
Programsko rješenje za uređaj koji mjeri nagib i udaljenost.
main.cpp@1:024485d1c677, 2019-11-16 (annotated)
- Committer:
- jpapratov
- Date:
- Sat Nov 16 13:15:11 2019 +0000
- Revision:
- 1:024485d1c677
- Parent:
- 0:34c1f05d8d2c
uC
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jpapratov | 0:34c1f05d8d2c | 1 | #include "mbed.h" |
jpapratov | 0:34c1f05d8d2c | 2 | #include "MPU.h" |
jpapratov | 0:34c1f05d8d2c | 3 | #include "HCSR04.h" |
jpapratov | 0:34c1f05d8d2c | 4 | #include "TextLCD.h" |
jpapratov | 0:34c1f05d8d2c | 5 | |
jpapratov | 1:024485d1c677 | 6 | /* |
jpapratov | 0:34c1f05d8d2c | 7 | class LED_interrupt |
jpapratov | 0:34c1f05d8d2c | 8 | { |
jpapratov | 0:34c1f05d8d2c | 9 | |
jpapratov | 1:024485d1c677 | 10 | public: |
jpapratov | 1:024485d1c677 | 11 | LED_interrupt(PinName tipkalo_pin, PinName led_pin) : _tipkalo(tipkalo_pin), _stanje(led_pin) |
jpapratov | 1:024485d1c677 | 12 | { |
jpapratov | 1:024485d1c677 | 13 | _tipkalo.fall(callback(this, &LED_interrupt::promjena)); |
jpapratov | 1:024485d1c677 | 14 | off(); |
jpapratov | 1:024485d1c677 | 15 | }; |
jpapratov | 1:024485d1c677 | 16 | |
jpapratov | 1:024485d1c677 | 17 | void off(void) |
jpapratov | 1:024485d1c677 | 18 | { |
jpapratov | 1:024485d1c677 | 19 | _stanje = 1; |
jpapratov | 1:024485d1c677 | 20 | }; |
jpapratov | 1:024485d1c677 | 21 | |
jpapratov | 1:024485d1c677 | 22 | void promjena(void) |
jpapratov | 1:024485d1c677 | 23 | { |
jpapratov | 1:024485d1c677 | 24 | _stanje = !_stanje; |
jpapratov | 1:024485d1c677 | 25 | }; |
jpapratov | 1:024485d1c677 | 26 | |
jpapratov | 1:024485d1c677 | 27 | private: |
jpapratov | 1:024485d1c677 | 28 | DigitalOut _stanje; |
jpapratov | 1:024485d1c677 | 29 | InterruptIn _tipkalo; |
jpapratov | 1:024485d1c677 | 30 | |
jpapratov | 0:34c1f05d8d2c | 31 | }; |
jpapratov | 1:024485d1c677 | 32 | */ |
jpapratov | 1:024485d1c677 | 33 | DigitalOut led(LED1); |
jpapratov | 1:024485d1c677 | 34 | Timer debounce; |
jpapratov | 0:34c1f05d8d2c | 35 | |
jpapratov | 1:024485d1c677 | 36 | void flip() |
jpapratov | 1:024485d1c677 | 37 | { |
jpapratov | 1:024485d1c677 | 38 | if (debounce.read_ms()>200) |
jpapratov | 1:024485d1c677 | 39 | led = !led; |
jpapratov | 1:024485d1c677 | 40 | debounce.reset(); |
jpapratov | 1:024485d1c677 | 41 | } |
jpapratov | 0:34c1f05d8d2c | 42 | |
jpapratov | 0:34c1f05d8d2c | 43 | Serial pc(USBTX,USBRX); |
jpapratov | 0:34c1f05d8d2c | 44 | Senzor mpu(p9,p10); // žiroskop (Sda, Scl) |
jpapratov | 0:34c1f05d8d2c | 45 | HCSR04 sensor(p7,p8); // ultrazvučni senzor (trig, echo) |
jpapratov | 0:34c1f05d8d2c | 46 | TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD16x2); // display (rs, e, d4-d7) |
jpapratov | 1:024485d1c677 | 47 | InterruptIn _tipkalo(p12); |
jpapratov | 0:34c1f05d8d2c | 48 | |
jpapratov | 0:34c1f05d8d2c | 49 | void calc() |
jpapratov | 0:34c1f05d8d2c | 50 | { |
jpapratov | 0:34c1f05d8d2c | 51 | sensor.startMeasurement(); |
jpapratov | 0:34c1f05d8d2c | 52 | } |
jpapratov | 0:34c1f05d8d2c | 53 | |
jpapratov | 0:34c1f05d8d2c | 54 | int main() |
jpapratov | 0:34c1f05d8d2c | 55 | { |
jpapratov | 0:34c1f05d8d2c | 56 | float angle[3] = {0, 0, 0}; |
jpapratov | 0:34c1f05d8d2c | 57 | float temp; |
jpapratov | 0:34c1f05d8d2c | 58 | float sampleTime = 0.5; |
jpapratov | 0:34c1f05d8d2c | 59 | Ticker ticker; |
jpapratov | 0:34c1f05d8d2c | 60 | float distance; |
jpapratov | 0:34c1f05d8d2c | 61 | |
jpapratov | 0:34c1f05d8d2c | 62 | pc.printf("\nPocnimo\n"); |
jpapratov | 0:34c1f05d8d2c | 63 | |
jpapratov | 0:34c1f05d8d2c | 64 | sensor.setRanges(2, 400); |
jpapratov | 0:34c1f05d8d2c | 65 | pc.printf("Minimum sensor range = %g cm\n\rMaximum sensor range = %g cm\n\r", sensor.getMinRange(), sensor.getMaxRange()); |
jpapratov | 0:34c1f05d8d2c | 66 | ticker.attach(&calc, sampleTime); |
jpapratov | 0:34c1f05d8d2c | 67 | |
jpapratov | 1:024485d1c677 | 68 | //LED_interrupt(p12,LED1); |
jpapratov | 1:024485d1c677 | 69 | debounce.start(); |
jpapratov | 1:024485d1c677 | 70 | _tipkalo.rise(&flip); |
jpapratov | 0:34c1f05d8d2c | 71 | |
jpapratov | 1:024485d1c677 | 72 | while(true) { |
jpapratov | 0:34c1f05d8d2c | 73 | |
jpapratov | 0:34c1f05d8d2c | 74 | mpu.finalAngle(angle); |
jpapratov | 0:34c1f05d8d2c | 75 | temp=mpu.getTemp(); |
jpapratov | 0:34c1f05d8d2c | 76 | distance = sensor.getDistance_mm(); |
jpapratov | 0:34c1f05d8d2c | 77 | |
jpapratov | 0:34c1f05d8d2c | 78 | //lcd.cls(); |
jpapratov | 0:34c1f05d8d2c | 79 | //lcd.locate(0,1); |
jpapratov | 1:024485d1c677 | 80 | pc.printf("\n\rpitch: %.4f", angle[0]); |
jpapratov | 0:34c1f05d8d2c | 81 | |
jpapratov | 0:34c1f05d8d2c | 82 | //lcd.locate(0,0); |
jpapratov | 1:024485d1c677 | 83 | pc.printf("\n\rroll: %.4f", angle[1]); |
jpapratov | 0:34c1f05d8d2c | 84 | |
jpapratov | 1:024485d1c677 | 85 | pc.printf("\n\rTemp: %.4f",temp); |
jpapratov | 1:024485d1c677 | 86 | pc.printf("\n\rDistance: %f mm\r", distance); |
jpapratov | 0:34c1f05d8d2c | 87 | |
jpapratov | 0:34c1f05d8d2c | 88 | wait(1); |
jpapratov | 0:34c1f05d8d2c | 89 | |
jpapratov | 0:34c1f05d8d2c | 90 | } |
jpapratov | 0:34c1f05d8d2c | 91 | } |