Natemelju izmjerenih fotonapona modulira se svjetlost LE dioda D1-D4. Dioda D5 se pali kada je svjetlost iz svih smjerova jednaka (unutar 5%) Maltarić&Pavlek

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /***************************************************
00002 ***********Prostorni svjetlomjer********************
00003 * Na temelju izmjerenih fotonapona modulira se *****
00004 * svjetlost LE dioda D1-D4. Dioda D5 pali se   *****
00005 * kada je svjetlost iz svih smjerova jednaka   *****
00006 *unutar vrijednosti od 5%                      *****
00007 ****************************************************
00008 */
00009 
00010 #include "mbed.h"
00011 
00012 Serial pc(USBTX, USBRX); //za i
00013 
00014 AnalogIn LDR1(p17);     //Deklaracija Analognih ulaza 
00015 AnalogIn LDR2(p18);     //za čitanje napona s LDR-a, 
00016 AnalogIn LDR3(p19);     // ta vrijednost se kreće u granicama od 0 do 1
00017 AnalogIn LDR4(p20);
00018 
00019 PwmOut OUT1(p21);         //Deklaracija PWM izlaza za LED1
00020 PwmOut OUT2(p22);         //Deklaracija PWM izlaza za LED2
00021 PwmOut OUT3(p23);         //Deklaracija PWM izlaza za LED3
00022 PwmOut OUT4(p24);         //Deklaracija PWM izlaza za LED4
00023 PwmOut OUT5(p25);         //Deklaracija PWM izlaza za LED5
00024 
00025 float IN1, IN2, IN3, IN4,PW, IN1min, IN1max, INmin;         //deklaracija varijabli za spremanje Analognih vrijednosti napona s LDR-a
00026 
00027 int main() {                     //glavna funkcija
00028 
00029 pc.printf("Vrijednosi A/D pretvorbe na fotootporniku:... \n\r");  //vijednosti A/D pretvorbe LDR-a
00030 pc.printf("IN3,       IN4 \n\r");
00031 
00032     OUT1.period(0.010);          //postavljanje trajanja periode PWM signala na 10ms
00033     OUT2.period(0.010);          //za svih 5 izlaza OUT1 do OUT5
00034     OUT3.period(0.010);
00035     OUT4.period(0.010);
00036     OUT5.period(0.010);
00037     
00038 
00039     while(1) {                   //beskonačna petlja, non stop se vrti u krug; čita stanja ulaza i prema tome setira stanja izlaza
00040     
00041         OUT5.write(0);          //ugasi izlaz 5 tj. LED 5
00042   
00043         IN1=1-LDR1-0.2;         //INVERTIRAMO VRIJEDNOSTI
00044         IN2=1-LDR2-0.2;         //i umanjujemo za 0.2, inače se LED ne ugasi do kaja
00045         IN3=1-LDR3-0.2;  
00046         IN4=1-LDR4-0.2;
00047         
00048        
00049         OUT1.write(IN1);        //Izlaz OUT1 postavu u vrijednost varijable IN1
00050        
00051         OUT2.write(IN2);        //Izlaz OUT2 postavu u vrijednost varijable IN2
00052         
00053         OUT3.write(IN3);        //Izlaz OUT3 postavu u vrijednost varijable IN3
00054         
00055         OUT4.write(IN4);        //Izlaz OUT4 postavu u vrijednost varijable IN4
00056         wait(0.01);             //čekaj 10 ms
00057         
00058         INmin = IN1;            //traži najmanju vrijednost od 4 ulaza            
00059         if (INmin >= IN2){      //od IN1 do IN4 
00060             INmin = IN2;
00061             }
00062         else if (INmin >= IN3){
00063             INmin = IN3;
00064             }
00065             else if (INmin >= IN4){
00066                 INmin = IN4;
00067             }      
00068             
00069         IN1min = 0,950 * INmin;        //da izvučemo 5% od najmanje vrijednost, minimalnavrijednost unutar 5%
00070         IN1max = 1,00 * INmin;        //maximalna vrijednost unutar 5%
00071         
00072          
00073          pc.printf("%f %f \n\r",IN3, IN4);
00074  
00075         
00076         if((IN1 < IN1max)&&(IN1 > IN1min)&&(IN2 < IN1max)&&(IN2 > IN1min)&&(IN3 < IN1max)&&(IN3 > IN1min)&&(IN4 < IN1max)&&(IN4 > IN1min)) {    //ispitujemo jesu li navedeni uvjeti ispunjeni i ako jesu...
00077             OUT5.write(1);                                                                                                                      //pali se dioda na izlazu OUT5
00078             wait(2);    
00079             
00080                                                                                                                                 //čekaj 2 sekunde
00081         }
00082     }
00083 }