000

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HW2.cpp Source File

HW2.cpp

00001 #include "mbed.h"
00002 AnalogIn analog_value(A1);
00003 DigitalOut l1(D13);
00004 DigitalOut l2(D12);
00005 DigitalOut l3(D11);
00006 DigitalOut l4(D10);
00007 DigitalOut l5(D9);
00008 DigitalOut l6(D8);
00009 DigitalOut l7(D7);
00010 DigitalOut l8(D6);
00011 
00012 DigitalOut sd(PC_0);
00013 DigitalOut sc(PC_1);
00014 DigitalOut sb(PB_0);
00015 DigitalOut sa(PA_4);
00016 DigitalOut sdo(PB_2);
00017 
00018 
00019 DigitalOut s2d(PB_8);
00020 DigitalOut s2c(PB_9);
00021 DigitalOut s2b(PB_5);
00022 DigitalOut s2a(PB_3);
00023 
00024 DigitalIn  sw(D5);
00025 
00026 void led(float mv)
00027 {
00028     if (mv>413) {
00029         l1=1;
00030     } else {
00031         l1=0;
00032     }
00033 
00034     if (mv>825) {
00035         l2=1;
00036     } else {
00037         l2=0;
00038     }
00039 
00040     if (mv>1238) {
00041         l3=1;
00042     } else {
00043         l3=0;
00044     }
00045 
00046     if (mv>1650) {
00047         l4=1;
00048     } else {
00049         l4=0;
00050     }
00051 
00052     if (mv>2063) {
00053         l5=1;
00054     } else {
00055         l5=0;
00056     }
00057 
00058     if (mv>2475) {
00059         l6=1;
00060     } else {
00061         l6=0;
00062     }
00063 
00064     if (mv>2888) {
00065         l7=1;
00066     } else {
00067         l7=0;
00068     }
00069 
00070     if (mv>3200) {
00071         l8=1;
00072     } else {
00073         l8=0;
00074     }
00075 
00076     wait(0.02);
00077 }
00078 
00079 void ss(float x)
00080 {
00081     //int segment[10][4]={{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},{1,0,0,0},{1,0,0,1}};
00082     int nu1 = x/1000;
00083     int nu15 = (int)x%1000;
00084     int nu2=nu15/100;
00085     BusOut a(PA_4,PB_0,PC_1,PC_0);
00086     a=nu1;
00087     BusOut b(PB_3,PB_5,PB_9,PB_8);        
00088     b=nu2;
00089     sdo=1;
00090     
00091 }    
00092 int main()
00093 {
00094     
00095     int x=0;
00096     while(1) {
00097         float meas_r = analog_value.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
00098         float mv = meas_r * 3300; // Converts value in the 0V-3.3V range
00099         if (sw==1){
00100             wait(0.5);
00101             x+=1;
00102             if (x>2){x=0;
00103             }
00104             }
00105         if (x==0){
00106             ss(mv);
00107             l1=0;
00108             l2=0;
00109             l3=0;
00110             l4=0;
00111             l5=0;
00112             l6=0;
00113             l7=0;
00114             l8=0;
00115             wait(0.01);
00116         }
00117         else {led(mv);
00118             ss(0);
00119         }
00120         
00121     }
00122 }