Tehničko veleučilište u Zagrebu Elektrotehnički odjel Mikroupravaljači, 2013. Laboratorijski zadatak br. 8

Dependencies:   mbed TextLCD

Zadatak

Sklopovsko okruženje mikroupravljača dano je prema shemi u prilogu. Pokazivač je LCD displej 16x1.

Procesna trasa je prozirna cijev na čijim krajevima su postavljeni ventilatori koji tjeraju zrak u suprotnim smjerovima. Na trasi se nalazi celuloidna loptica koja se pokreče tjerana tlakom zraka. Na podnožju trase, simetrično oko sredine smješteni su infracrveni senzori koji odsjajem detektiraju prisutnost predmeta. Loptica se pokreče po trasi naizmjeničnim pokretanje ventilatora. Dvije LEDice na izlaznim priključcima MBEDa služe za indikaciju aktivacije pojedinog senzora.

Na displeju se treba prikazati smjer kretanja loptice, te njezina linearna brzina u smjeru kretanja.

Osciloskopom treba snimiti signale uključenja ventilatora kao i signale sa infracrvenih senzora. Pokušati programski regulirati da se loptica zadržava točno na sredini trase između dva senzora.

Demonstrirati rad prototipa te objasniti napisanu programsku podršku.

Shema

/media/uploads/mdraganic/zadatak8_1.png

Dokumentacija

Files at this revision

API Documentation at this revision

Comitter:
jcaplic
Date:
Tue Mar 18 19:07:03 2014 +0000
Parent:
1:aca0a1dbae28
Commit message:
asdfasdrg

Changed in this revision

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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Tue Mar 18 19:07:03 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- a/main.cpp	Tue Feb 04 17:21:06 2014 +0000
+++ b/main.cpp	Tue Mar 18 19:07:03 2014 +0000
@@ -1,29 +1,119 @@
 #include "mbed.h"
+#include "TextLCD.h"
 
-DigitalIn SenzorL(p15);
-DigitalIn SenzorD(p16);
-/*AnalogOut VentL(p11);
-AnalogOut VentD(p10);*/
+AnalogIn SenzorL(p15);
+AnalogIn SenzorD(p16);
 DigitalOut led1(p5);
-DigitalOut led2(p7);
-DigitalOut myled(LED1);
+DigitalOut led2(p8);
+DigitalOut MotorD(p10);
+DigitalOut MotorL(p11);
+TextLCD lcd(p25, p26, p27, p28, p29, p30);
+/*DigitalOut led01(LED1);
+DigitalOut led02(LED2);
+DigitalOut led03(LED3);
+DigitalOut led04(LED4);*/
 
 
 int main() {
-    enum poz {lijevo, sredina, desno};
-    /*poz pozicija;
-    VentL=1;
-    wait(5);
-    VentL=0;
-    pozicija=desno;*/
-    while(1) {              
-       if(SenzorL==1) {
-           led1=1;
-           }
-        if(SenzorD==1) {
-            led2=2;
+    //enum poz {L,LS,S,DS,D};
+        //poz pozicija;
+        
+        lcd.cls();
+        
+       /* MotorD=1;
+        MotorL=0;
+        led1=0;
+        led2=0;
+        wait(3);
+        MotorD=0;*/
+        
+        //pozicija=L;
+        
+        
+   while(1) {              
+    
+       if(SenzorL>0.9) {
+          led1=1;
+           MotorD=0;
+           MotorL=1;
+            }
+             else {
+               led1=0;
+               MotorL=0;
+                }
+            
+        if(SenzorD>0.9) {
+            led2=1;
+            MotorD=1;
+            MotorL=0;
+            }
+            else {
+            led2=0;
+            MotorD=0;
             }
-       
-       
-    }
-}
+
+            
+            
+            /*if(SenzorL>0.9 && MotorD==1) {
+                pozicija=L;
+                }
+            if(SenzorD>0.9 && MotorL==1) {
+                pozicija=D;
+                }
+            if(SenzorD>0.9 && MotorD==0 && MotorL==0) {
+                pozicija=DS;
+                }
+            if(SenzorL>0.9 && MotorD==0 && MotorL==0) {
+                pozicija=LS;
+                }
+            if(SenzorD>0.9 && SenzorD>0.9 && MotorD==0 && MotorL==0 && pozicija!=L && pozicija!=D) {
+                pozicija=S;
+                }
+            
+            if(pozicija==L || pozicija==LS) {
+                MotorD=0;
+                MotorL=1;
+                }
+                
+            if(pozicija==D || pozicija==DS) {
+                MotorD=1;
+                MotorL=2;
+                }
+                
+            if(pozicija==S) {
+                MotorD=0;
+                MotorL=0;
+                }
+                
+            if(pozicija==L) {
+                led01=1;
+                led02=0;
+                led03=0;
+                led04=0;
+                }
+                
+            if(pozicija==LS) {
+                led01=0;
+                led02=1;
+                led03=0;
+                led04=0;
+                }                
+                
+            if(pozicija==DS) {
+                led01=0;
+                led02=0;
+                led03=1;
+                led04=0;
+                }
+                
+            if(pozicija==D) {
+                led01=0;
+                led02=0;
+                led03=0;
+                led04=1;
+                }*/
+                
+                 
+         }       
+        }  
+