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

main.cpp

Committer:
jcaplic
Date:
2014-03-18
Revision:
2:661d11a933ba
Parent:
1:aca0a1dbae28

File content as of revision 2:661d11a933ba:

#include "mbed.h"
#include "TextLCD.h"

AnalogIn SenzorL(p15);
AnalogIn SenzorD(p16);
DigitalOut led1(p5);
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 {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;
                }*/
                
                 
         }       
        }