Programsko rješenje za uređaj koji mjeri nagib i udaljenost.

Dependencies:   mbed TextLCD

/https:/os.mbed.com/media/uploads/jpapratov/skiron_ii.jpeg

Committer:
jpapratov
Date:
Sat Nov 16 10:14:58 2019 +0000
Revision:
0:34c1f05d8d2c
Child:
1:024485d1c677
Test.

Who changed what in which revision?

UserRevisionLine numberNew 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 }