123
Dependencies: TM1638 mbed HCSR04
main.cpp
00001 #include "mbed.h" 00002 #include "hcsr04.h" 00003 #include "TM1638.h" 00004 00005 Serial pc(SERIAL_TX, SERIAL_RX); 00006 DigitalOut led1(PC_10); 00007 Ticker distancee; 00008 AnalogOut Da(PA_5); 00009 /*********************************************************************************************************************/ 00010 //Display 00011 TM1638::KeyData_t keydata; 00012 TM1638_LEDKEY8 LEDKEY8(PB_5,PB_4,PB_3,PA_10); 00013 /*********************************************************************************************************************/ 00014 //PULT 00015 /*InterruptIn D(PA_14); //D //D1 00016 InterruptIn A(PA_13); //A //D2 00017 InterruptIn B(PA_15); //B //D0 00018 InterruptIn C(PC_12); //C //D3*/ 00019 /********************************************************************************************************************/ 00020 //DigitalOut myled(LED2); 00021 00022 //DigitalOut trig(PA_3); 00023 //DigitalIn echo(PD_7); 00024 HCSR04 usensor(PB_13,PB_14); 00025 unsigned int dist=0; 00026 int flag1, flag2, flag3 = 0; 00027 int i,j,k,m,size=0; 00028 int a,b,c,d,e,f,g,h = 0; 00029 00030 /*void BB() { 00031 led1 = !led1; 00032 } 00033 void DD() { 00034 led1= !led1; 00035 } 00036 void AA() { 00037 led1 = !led1; 00038 } 00039 void CC() { 00040 led1 = !led1; 00041 }*/ 00042 00043 void ddistance () 00044 { 00045 usensor.start(); 00046 dist=usensor.get_dist_cm(); 00047 } 00048 00049 void sbros () 00050 { 00051 a=0; 00052 b=0; 00053 c=0; 00054 d=0; 00055 e=0; 00056 f=0; 00057 g=0; 00058 h=0; 00059 } 00060 void perebros () 00061 { 00062 if(h>9) 00063 { 00064 g++; 00065 h=0; 00066 if(g>9) 00067 { 00068 f++; 00069 g=0; 00070 h=0; 00071 if(f>9) 00072 { 00073 sbros(); 00074 } 00075 } 00076 00077 } 00078 } 00079 00080 int main() 00081 { 00082 /* B.rise(&BB); 00083 D.rise(&DD); 00084 A.rise(&AA); 00085 C.rise(&CC);*/ 00086 int verh; 00087 int nij; 00088 while(1) { 00089 ddistance(); 00090 LEDKEY8.printf ("%d%d%d%d%d%d%d%d", a, b, c, d, e, f, g, h); 00091 verh = 80; 00092 nij = 10; 00093 if(dist >verh) 00094 { 00095 flag1=1; 00096 } 00097 if(flag1==1 && dist < nij) 00098 { 00099 flag2=1; 00100 } 00101 if (flag1==1 && flag2==1 && dist>verh) 00102 { 00103 flag3=1; 00104 } 00105 if( flag1==1 && flag2==1 && flag3==1) 00106 { 00107 flag1=0; 00108 flag2=0; 00109 flag3=0; 00110 h++; 00111 perebros(); 00112 } 00113 if (LEDKEY8.getKeys(&keydata)) { 00114 // pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]); 00115 if (keydata[0] == 0x01) { //sw1 00116 int k; 00117 k=h; 00118 h++; 00119 if(h-k==1) 00120 { 00121 wait(0.3); 00122 perebros(); 00123 } 00124 } 00125 if (keydata[1] == 0x01) { //sw1 00126 sbros(); 00127 } 00128 if (keydata[2] == 0x01) { //sw1 00129 if (e<9) 00130 { 00131 e++; 00132 wait(0.3); 00133 } 00134 else e=0; 00135 } 00136 if (keydata[3] == 0x01) { 00137 /*if(h+g+f<e) 00138 { 00139 h=0; 00140 g=0; 00141 f=0; 00142 e=0; 00143 } */ 00144 if(h>=e) 00145 { 00146 h=h-e; 00147 } 00148 else if(h<e) 00149 { 00150 if(g==0) 00151 { 00152 f=f-1; 00153 g=g+10-(e-h); 00154 h=h+10; 00155 h=h-g; 00156 } 00157 else if(g!=0) 00158 { 00159 h=h+10; 00160 h=h-e; 00161 g=g-1; 00162 } 00163 } 00164 wait(0.3); 00165 } 00166 } 00167 } 00168 }
Generated on Sat Jul 16 2022 13:56:43 by
1.7.2