TVZ2019
/
1_MIKROUPRAVLJACI
Programsko rješenje za uređaj koji mjeri nagib i udaljenost.
main.cpp@0:34c1f05d8d2c, 2019-11-16 (annotated)
- Committer:
- jpapratov
- Date:
- Sat Nov 16 10:14:58 2019 +0000
- Revision:
- 0:34c1f05d8d2c
- Child:
- 1:024485d1c677
Test.
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 | 0:34c1f05d8d2c | 6 | class LED_interrupt |
jpapratov | 0:34c1f05d8d2c | 7 | { |
jpapratov | 0:34c1f05d8d2c | 8 | |
jpapratov | 0:34c1f05d8d2c | 9 | public: |
jpapratov | 0:34c1f05d8d2c | 10 | LED_interrupt(PinName tipkalo_pin, PinName led_pin) : _stanje(tipkalo_pin), _tipkalo(led_pin) |
jpapratov | 0:34c1f05d8d2c | 11 | { |
jpapratov | 0:34c1f05d8d2c | 12 | _tipkalo.fall(callback(this, &LED_interrupt::promjena)); |
jpapratov | 0:34c1f05d8d2c | 13 | off(); |
jpapratov | 0:34c1f05d8d2c | 14 | }; |
jpapratov | 0:34c1f05d8d2c | 15 | |
jpapratov | 0:34c1f05d8d2c | 16 | void off(void) |
jpapratov | 0:34c1f05d8d2c | 17 | { |
jpapratov | 0:34c1f05d8d2c | 18 | _stanje = 0; |
jpapratov | 0:34c1f05d8d2c | 19 | }; |
jpapratov | 0:34c1f05d8d2c | 20 | |
jpapratov | 0:34c1f05d8d2c | 21 | void promjena(void) |
jpapratov | 0:34c1f05d8d2c | 22 | { |
jpapratov | 0:34c1f05d8d2c | 23 | _stanje = !_stanje; |
jpapratov | 0:34c1f05d8d2c | 24 | }; |
jpapratov | 0:34c1f05d8d2c | 25 | |
jpapratov | 0:34c1f05d8d2c | 26 | private: |
jpapratov | 0:34c1f05d8d2c | 27 | DigitalOut _stanje; |
jpapratov | 0:34c1f05d8d2c | 28 | InterruptIn _tipkalo; |
jpapratov | 0:34c1f05d8d2c | 29 | }; |
jpapratov | 0:34c1f05d8d2c | 30 | |
jpapratov | 0:34c1f05d8d2c | 31 | |
jpapratov | 0:34c1f05d8d2c | 32 | Serial pc(USBTX,USBRX); |
jpapratov | 0:34c1f05d8d2c | 33 | Senzor mpu(p9,p10); // žiroskop (Sda, Scl) |
jpapratov | 0:34c1f05d8d2c | 34 | HCSR04 sensor(p7,p8); // ultrazvučni senzor (trig, echo) |
jpapratov | 0:34c1f05d8d2c | 35 | TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD16x2); // display (rs, e, d4-d7) |
jpapratov | 0:34c1f05d8d2c | 36 | |
jpapratov | 0:34c1f05d8d2c | 37 | void calc() |
jpapratov | 0:34c1f05d8d2c | 38 | { |
jpapratov | 0:34c1f05d8d2c | 39 | sensor.startMeasurement(); |
jpapratov | 0:34c1f05d8d2c | 40 | } |
jpapratov | 0:34c1f05d8d2c | 41 | |
jpapratov | 0:34c1f05d8d2c | 42 | int main() |
jpapratov | 0:34c1f05d8d2c | 43 | { |
jpapratov | 0:34c1f05d8d2c | 44 | float angle[3] = {0, 0, 0}; |
jpapratov | 0:34c1f05d8d2c | 45 | float temp; |
jpapratov | 0:34c1f05d8d2c | 46 | float sampleTime = 0.5; |
jpapratov | 0:34c1f05d8d2c | 47 | Ticker ticker; |
jpapratov | 0:34c1f05d8d2c | 48 | float distance; |
jpapratov | 0:34c1f05d8d2c | 49 | |
jpapratov | 0:34c1f05d8d2c | 50 | pc.printf("\nPocnimo\n"); |
jpapratov | 0:34c1f05d8d2c | 51 | |
jpapratov | 0:34c1f05d8d2c | 52 | sensor.setRanges(2, 400); |
jpapratov | 0:34c1f05d8d2c | 53 | pc.printf("Minimum sensor range = %g cm\n\rMaximum sensor range = %g cm\n\r", sensor.getMinRange(), sensor.getMaxRange()); |
jpapratov | 0:34c1f05d8d2c | 54 | ticker.attach(&calc, sampleTime); |
jpapratov | 0:34c1f05d8d2c | 55 | |
jpapratov | 0:34c1f05d8d2c | 56 | while(true) { |
jpapratov | 0:34c1f05d8d2c | 57 | |
jpapratov | 0:34c1f05d8d2c | 58 | LED_interrupt(p15,p16); |
jpapratov | 0:34c1f05d8d2c | 59 | |
jpapratov | 0:34c1f05d8d2c | 60 | mpu.finalAngle(angle); |
jpapratov | 0:34c1f05d8d2c | 61 | temp=mpu.getTemp(); |
jpapratov | 0:34c1f05d8d2c | 62 | distance = sensor.getDistance_mm(); |
jpapratov | 0:34c1f05d8d2c | 63 | |
jpapratov | 0:34c1f05d8d2c | 64 | //lcd.cls(); |
jpapratov | 0:34c1f05d8d2c | 65 | //lcd.locate(0,1); |
jpapratov | 0:34c1f05d8d2c | 66 | pc.printf("\npitch: %.4f", angle[0]); |
jpapratov | 0:34c1f05d8d2c | 67 | |
jpapratov | 0:34c1f05d8d2c | 68 | //lcd.locate(0,0); |
jpapratov | 0:34c1f05d8d2c | 69 | pc.printf("\nroll: %.4f", angle[1]); |
jpapratov | 0:34c1f05d8d2c | 70 | |
jpapratov | 0:34c1f05d8d2c | 71 | pc.printf("\nTemp: %.4f",temp); |
jpapratov | 0:34c1f05d8d2c | 72 | pc.printf("\nDistance: %f mm\r", distance); |
jpapratov | 0:34c1f05d8d2c | 73 | |
jpapratov | 0:34c1f05d8d2c | 74 | wait(1); |
jpapratov | 0:34c1f05d8d2c | 75 | |
jpapratov | 0:34c1f05d8d2c | 76 | } |
jpapratov | 0:34c1f05d8d2c | 77 | } |