├── README.md └── IBM_project_asm.ino /README.md: -------------------------------------------------------------------------------- 1 | # Smart_Parking -------------------------------------------------------------------------------- /IBM_project_asm.ino: -------------------------------------------------------------------------------- 1 | #include //include the servo library 2 | #include 3 | #include 4 | Liquidcrystal_I2c 1cd(ox27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 5 | 6 | Servo myservo; 7 | 8 | #define ir_enter 2 9 | #define ir_back 4 10 | 11 | #define ir_car1 5 12 | #define ir_car2 6 13 | #define ir_car3 7 14 | #define ir_car4 8 15 | #define ir_car5 9 16 | #define ir_car6 10 17 | 18 | int S1=o, S2=O, S3=O, S4=O, S5=O, S6=O; 19 | int flag1=D, flag2=o; 20 | int slot = 6; 21 | 22 | void setup(){ 23 | Serial.begin(9600); 24 | 25 | pinMode(ir_car1, INPUT); 26 | pinMode(ir_car2, INPUT); 27 | pinMode(ir_car3, INPUT); 28 | pinMode(ir_car4, INPUT); 29 | pinMode(ir_car5, INPUT); 30 | pinMode(ir_car6, INPUT); 31 | 32 | pinMode(ir_enter, INPUT); 33 | pinMode(ir_back, INPUT); 34 | 35 | myservo.attach(3); 36 | myservo.write(90); 37 | 38 | lcd.begin(20, 4); 39 | lcd.setcursor(0,1); 40 | lcd.print(" car parking "); 41 | lcd.setCursor(0,2); 42 | lcd.print(" system "); 43 | delay(2000); 44 | lcd.clear(); 45 | 46 | Read_Sensor(); 47 | 48 | int total = S1+S2+S3+S4+S5+S6; 49 | slot = slot-total; 50 | 51 | 52 | 53 | } 54 | 55 | void loop(){ 56 | Read_Sensor(); 57 | 58 | lcd.setCursor(0,0); 59 | lcd.print(" Have slot: "); 60 | lcd.print(slot); 61 | lcd.print(" "); 62 | lcd.setCursor(0,1); 63 | if(S1==1){lcd.print("S1 :Fill ");} 64 | else{lcd.print("S1:Empty");} 65 | 66 | lcd.setCursor(10,1); 67 | if(S2==1){lcd.print("S2:Fill");} 68 | else{lcd.print("S2:Empty");} 69 | 70 | lcd.setCursor(0,2); 71 | if(S3==1){lcd.print("S3:Fill ");} 72 | else{lcd.print("S3:Empty");} 73 | 74 | lcd.setCursor (10,2); 75 | if(S4==1){lcd.print("S4:Fill");} 76 | else{lcd.print("S4:Empty");} 77 | 78 | lcd.setCursor(0,3); 79 | if(S5==1){lcd.print("S5:Fill");} 80 | else{lcd.print("S5:Empty");} 81 | 82 | lcd.setCursor (10,3); 83 | if(S6==1){lcd.print("S6:Fill");} 84 | else{lcd.print("S6:Empty");} 85 | 86 | if(digitalRead(ir_enter)== 0 && flag1==0){ 87 | if(slot>0){flag1=1; 88 | if(flag2==0)(myservo.write(180); slot = slot-1;) 89 | }else{ 90 | lcd.setCursor (0, 0); 91 | lcd.print(" Sorry Parking Full "); 92 | delay(1500); 93 | 94 | 95 | } 96 | } 97 | if(digitalRead(ir_back)==0 && flag2==0){flag2=1; 98 | if(flag1==0)(myservo.write(180); slot = slot+1;) 99 | } 100 | if(flag1==1 && flag2==1){ 101 | delay(1000); 102 | myservo.write(50); 103 | flag1=0, flag2=0; 104 | } 105 | 106 | delay(1); 107 | } 108 | 109 | void Read_Sensor(){ 110 | S1=0, S2=0, S3=0, S4=0, S5=0, S6=0; 111 | 112 | if(digitalRead(ir_car1) == 0){S1=1;} 113 | if(digitalRead(ir_car2) == 0){S2=1;} 114 | if(digitalRead(ir_car3) == 0){S3=1;} 115 | if(digitalRead(ir_car4) == 0){S4=1;} 116 | if(digitalRead(ir_car5) == 0){S5=1;} 117 | if(digitalRead(ir_car6) == 0){S6=1;} 118 | 119 | 120 | } 121 | --------------------------------------------------------------------------------