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
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 }
Generated on Wed Aug 31 2022 21:01:09 by
1.7.2