VErzija

Dependencies:   TextLCD mbed

Files at this revision

API Documentation at this revision

Comitter:
resetar
Date:
Wed Jan 17 19:24:24 2018 +0000
Commit message:
Druga Verzija

Changed in this revision

KEY_PAD.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r d6a8d83e08bc KEY_PAD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/KEY_PAD.lib	Wed Jan 17 19:24:24 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/resetar/code/key-pad/#e30bb8d3d806
diff -r 000000000000 -r d6a8d83e08bc TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Wed Jan 17 19:24:24 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/resetar/code/textlcd/#5054db37870d
diff -r 000000000000 -r d6a8d83e08bc main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jan 17 19:24:24 2018 +0000
@@ -0,0 +1,161 @@
+#include "mbed.h"
+/** Initial test of the ultrasonic sensor HC-SR04  */
+#include "TextLCD.h"
+#include "KEY_PAD.h"
+TextLCD lcd(p7, p8, p9, p10, p11, p12);
+InterruptIn echo(p5);       // echo pin
+DigitalOut trigger(p6);     // trigger pin
+Timer timer;                // echo pulsewidth measurement
+Timer timer2;
+float brzina=0;
+float predzadnji;
+float vrijeme=0;
+float distance = 0;
+DigitalOut led1(p28);//crveno
+DigitalOut led2(p29);
+DigitalOut led3(p30);
+/** Start the echo pulsewidth measurement */
+void startTimer()
+{
+    timer.start(); // start the timer
+}
+/** Stop the echo pulsewidth measurement */
+void stopTimer()
+{
+    timer.stop(); // stop the timer
+}
+
+Ticker debounce;
+
+
+
+
+
+
+void enable_keys(){
+    red1.fall(&get_row1);
+    red2.fall(&get_row2);
+    red3.fall(&get_row3);
+    red4.fall(&get_row4);
+    
+    debounce.detach();
+}
+
+int main() {
+    
+    /** configure the rising edge to start the timer */
+    echo.rise(&startTimer);
+
+    /** configure the falling edge to stop the timer */
+    echo.fall(&stopTimer);
+    timer2.start();
+    led1=0;
+    led2=0;
+    led3=1;
+    
+    stupci.mode(OpenDrain);
+    stupci.mode(PullUp);
+    
+    red1.mode(PullUp);
+    red2.mode(PullUp);
+    red3.mode(PullUp);
+    red4.mode(PullUp);
+    
+    red1.fall(&get_row1);
+    red2.fall(&get_row2);
+    red3.fall(&get_row3);
+    red4.fall(&get_row4);
+    
+    while(1) {
+            if(red1 == 1 && red2 == 1 && red3 == 1 && red4 == 1){
+                if(key>0){
+                    izlaz=key;
+                    //pc.printf("\n\r %d", code);
+                    __enable_irq();
+                    debounce.attach(&enable_keys, 0.5); ////////////////////////////////
+                }
+                key=0;
+                wait_ms(100);
+            }
+            
+            switch(pass_code){
+                case(0):
+                    lcd.locate(0,3);
+                    lcd.printf("Unesite mod rada");
+                break;
+                
+                case(123):
+                    /** Start the measurement by sending the 10us trigger pulse */
+                    trigger = 1;
+                    wait_us(10);
+                    trigger = 0;
+                    /** Wait for the sensor to finish measurement (generate rise and fall interrupts).
+                    *  Minimum wait time is determined by maximum measurement distance of 400 cm.
+                    *  t_min = 400 * 58 = 23200 us = 23.2 ms */
+                    wait(0.2);
+                    predzadnji=distance;
+                    /** calculate the distance in cm */
+                    distance = timer.read() * 1e6 / 58;
+                    timer.reset(); // reset the timer to 0
+                    brzina=(distance-predzadnji)/(timer2.read()-vrijeme);
+                    timer2.reset();
+                    timer2.start();
+                    vrijeme=timer2.read();
+                    /** Print the result in cm to the terminal with 1 decimal place
+                    *  (number 5 after % means that total of 5 digits will be reserved
+                    *  for printing the number, including the dot and one decimal place). */
+     
+                    if (brzina>=20) {
+                        lcd.cls();
+                        lcd.locate(0,0);
+                        lcd.printf("Daljina:%5.1f cm", distance);
+                        lcd.locate(0,1);
+                        lcd.printf("Brzina:%5.1f cm/s",brzina);
+                        lcd.locate(0,2);
+                        lcd.printf("Palim crveno!!!");
+                        led3=0;
+                        led2=1;
+                        wait(3);
+                        led2=0;
+                        led1=1;
+                        wait(10);
+                        led2=1;
+                        wait(4);
+                        led3=1;
+                        led1=0;
+                        led2=0;
+                    } else if (brzina < 20 && brzina >5) {
+                        lcd.cls();
+                        lcd.locate(0,0);
+                        lcd.printf("Daljina:%5.1f cm", distance);
+                        lcd.locate(0,1);
+                        lcd.printf("Brzina:%5.1f cm/s",brzina);
+                        lcd.locate(0,2);
+                        lcd.printf("Usporite!");
+                        wait(2);
+                    } else {
+                        lcd.cls();
+                        lcd.locate(0,0);
+                        lcd.printf("Daljina:%5.1f cm", distance);
+                        lcd.locate(0,1);
+                        lcd.printf("Brzina:%5.1f cm/s",brzina);
+                        lcd.locate(0,2);
+                        lcd.printf("OK");
+                    }
+                break;
+                
+                case(456):
+                    lcd.cls();
+                    lcd.locate(0,3);
+                    lcd.printf(" %d", pass_code);
+                break;
+
+                case(789):
+                    lcd.cls();
+                    lcd.locate(0,3);
+                    lcd.printf(" %d", pass_code);
+                break;
+            }
+        
+    }
+}
\ No newline at end of file
diff -r 000000000000 -r d6a8d83e08bc mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Jan 17 19:24:24 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/7130f322cb7e
\ No newline at end of file