tim008 tim008
/
priprema
LV4_tim008_Z01 Sumejja Porča
Revision 0:7347981f933d, committed 2014-03-24
- Comitter:
- tim008
- Date:
- Mon Mar 24 14:08:39 2014 +0000
- Commit message:
- Sumejja Por?a
Changed in this revision
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 7347981f933d main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Mar 24 14:08:39 2014 +0000 @@ -0,0 +1,111 @@ +#include "mbed.h" +// 0 1 2 3 4 5 6 7 8 9 a b c d e * # +char lookup[17] = { 0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0x20, 0x03, 0x46, 0x21, 0x04, 0x09, 0x01}; +DigitalOut displays[3] = { dp25, dp24, dp23 }; +DigitalOut dec_p = dp4; +AnalogIn ain(dp9); + +// Mapiranja su: +// A - dp26 (bit 0) +// B - dp27 (bit 1) +// C - dp5 (bit 2) +// D - dp6 (bit 3) +// E - dp28 (bit 4) +// F - dp1 (bit 5) +// G - dp2 (bit 6) + +BusOut segments (dp26, dp27, dp5, dp6, dp28, dp1, dp2); +/* +* Funkcija treba pisati na segment displaya, argumenti su: +* index - kaze na koji display treba pisati (moguce vrijednosti su 2 do 4) +* value - vrijednost koja se treba zapisati (moguce vrijednosti su cifre od 0 do 9) +* decimal_point - vrijednost koja kaze da li treba decimalnu tacku osvijetliti (moguce vrijednosti su +0 ili 1; 0 - iskljuceno, 1 - ukljuceno) +*/ +void write_segment(int index, char value, int decimal_point) +{ + if(value >= '0' && value <= '9') +// Preslikavanje vrijednosti broja u kod +segments = lookup[value - '0']; + +else +segments = 0xff; + +// DP je spojen na dp4 +dec_p = !(decimal_point & (1 << 0)); + +// Aktiviramo odgovarajuci display +// D2 je spojen na dp23 +// D3 je spojen na dp24 +// D4 je spojen na dp25 +switch (index) +{ +case 2: +displays[0] = 0; +displays[1] = 1; +displays[2] = 1; +break; +case 3: +displays[0]= 1; +displays[1] = 0; +displays[2] = 1; +break; +case 4: +displays[2] = 1; +displays[2] = 1; +displays[2] = 0; +break; +} +} + +int main() +{ +// Varijabla koja ce reci koji display je trenutno aktivan (ima vrijednosti od 2 do 4) +int index = 2; + +float value, old_value(3.3 * ain); +// Vrijednosti na pojedinim displayjima: +char d2 = 'N', d3 = 'N', d4 = 'N'; + +while (true) +{ +// Pisanje cifara na display +switch (index) +{ +case 2: +write_segment(index, d2, 0); +break; + +case 3: +write_segment(index, d3, 0); +break; +case 4: +write_segment(index, d4, 1); +break; +} +// 1 ms cekanje +// Ako je pauza izmedju pojedinih pisanja 1ms to znaci da je za 3 displaya potrebno 3ms +// Sto ispadne 1s / 3ms = 333.33 osvjezavanja u sekundi +wait(0.001); + +value = 3.3 * ain; + +if (value != old_value ) +{ +d4 = int(value); + +d3 = int((value - int(value))*10); + +d2 = int(((value*10) - int(value*10))*10) ; +} + + +old_value = value; +// Prelazimo na iduci display +index++; +if (index == 5) +index = 2; +} +return 0; +} + \ No newline at end of file
diff -r 000000000000 -r 7347981f933d mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Mar 24 14:08:39 2014 +0000 @@ -0,0 +1,1 @@ +http://world3.dev.mbed.org/users/mbed_official/code/mbed/builds/824293ae5e43 \ No newline at end of file