munther_abdellatif

elevator

Apr 24th, 2020
313
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h>
  2. // connection
  3. LiquidCrystal lcd(9,8,10,11,12,13);
  4. byte elevator =7 ;
  5. byte levelSensor= 6 ;
  6. byte f1=1; byte f2=2; byte f3=3 ; byte f4=4 ; byte f5=5;
  7. byte service = 0;
  8. //up = A2; down = A4;break = A3;start time = A0 ; stop time = A1;
  9. // variables
  10. byte flour = 0; byte level = 1; bool motorstatus=0;
  11. int Tstop=0; int Tstart=0;
  12. void setup()
  13. { // setup
  14.   lcd.begin(16,2);
  15.   lcd.print("    stand by    ");
  16.    pinMode(elevator,OUTPUT);  pinMode(levelSensor,OUTPUT);
  17.    pinMode(f1,INPUT_PULLUP);  pinMode(f2,INPUT_PULLUP);
  18.    pinMode(f3,INPUT_PULLUP);  pinMode(f4,INPUT_PULLUP);
  19.    pinMode(f5,INPUT_PULLUP);  pinMode(service,INPUT_PULLUP);
  20.    pinMode(A2,OUTPUT);  pinMode(A4,OUTPUT);pinMode(A3,OUTPUT);
  21.    digitalWrite(A3,0);digitalWrite(A2,0);digitalWrite(A4,0);
  22.   // check current floar
  23.   digitalWrite(elevator,1);digitalWrite(levelSensor,0);
  24.   if      (digitalRead(f1)==0){ level =1;}
  25.   else if (digitalRead(f2)==0){ level =2;}
  26.   else if (digitalRead(f3)==0){ level =3;}
  27.   else if (digitalRead(f4)==0){ level =4;}
  28.   else if (digitalRead(f5)==0){ level =5;}
  29.  
  30.   if (level >0){lcd.setCursor(0,1); lcd.print("     flour ");lcd.print(level);}
  31.   // check start and stop time
  32.     Tstart=analogRead(A0);
  33.     Tstop =analogRead(A1);
  34.     Tstart=map(Tstart,0,1023,0,10000);
  35.     Tstop =map(Tstop ,0,1023,0,10000);
  36. }
  37. void loop()
  38. {
  39.  // service mode
  40.  if (digitalRead(service)==0){
  41.     lcd.setCursor(0,0); lcd.print(" service mode   ");
  42.     lcd.setCursor(0,1); lcd.print("                ");
  43.     delay (2000);
  44.     while(digitalRead(service)==0){
  45.     Tstart=analogRead(A0);
  46.     Tstop =analogRead(A1);
  47.     Tstart=map(Tstart,0,1023,0,10000);
  48.     Tstop =map(Tstop ,0,1023,0,10000);
  49.     lcd.setCursor(0,0); lcd.print(" T start ");lcd.print(Tstart);lcd.print("ms  ");
  50.     lcd.setCursor(0,1); lcd.print(" T stop  ");lcd.print(Tstop );lcd.print("ms  ");
  51.     }
  52.    // seting before going out service mode
  53.      lcd.setCursor(0,0); lcd.print("    stand by    ");
  54.      lcd.setCursor(0,1); lcd.print("                ");
  55.      lcd.setCursor(0,1); lcd.print("     flour "); lcd.print(level);
  56.    }
  57.  else {
  58.   // check switchs
  59.   digitalWrite(elevator,0);digitalWrite(levelSensor,1);
  60.   if      (digitalRead(f1)==0){ flour =1;}
  61.   else if (digitalRead(f2)==0){ flour =2;}
  62.   else if (digitalRead(f3)==0){ flour =3;}
  63.   else if (digitalRead(f4)==0){ flour =4;}
  64.   else if (digitalRead(f5)==0){ flour =5;}
  65.  
  66.   // check floar and move motor
  67.   if (flour >0){
  68.     lcd.setCursor(0,0);lcd.print(" go to flour "); lcd.print(flour);lcd.print("  ");
  69.     // check current floar
  70.     digitalWrite(elevator,1);digitalWrite(levelSensor,0);
  71.     if      (digitalRead(f1)==0){ level =1;}
  72.     else if (digitalRead(f2)==0){ level =2;}
  73.     else if (digitalRead(f3)==0){ level =3;}
  74.     else if (digitalRead(f4)==0){ level =4;}
  75.     else if (digitalRead(f5)==0){ level =5;}
  76.     // move motor
  77.     if (flour>level){
  78.       lcd.setCursor(0,1);lcd.print("    move up   ");
  79.       digitalWrite(A2,1);digitalWrite(A4,0);delay(Tstart); digitalWrite(A3,1);}
  80.     else if (flour<level){
  81.       lcd.setCursor(0,1);lcd.print("    move down   ");
  82.       digitalWrite(A2,0);digitalWrite(A4,1);delay(Tstart); digitalWrite(A3,1);}
  83.     // Wait for arrival
  84.     digitalWrite(elevator,1);digitalWrite(levelSensor,0);
  85.     if      (flour==1){while(digitalRead(f1)==1){}
  86.                       level=1;}
  87.     else if (flour==2){while(digitalRead(f2)==1){}
  88.                       level=2;}
  89.     else if (flour==3){while(digitalRead(f3)==1){}
  90.                       level=3;}
  91.     else if (flour==4){while(digitalRead(f4)==1){}
  92.                       level=4;}
  93.     else if (flour==5){while(digitalRead(f5)==1){}
  94.                       level=5;}
  95.   }
  96.   // stand by and stop motor
  97.   if (digitalRead(A3)==1){
  98.      digitalWrite(A3,0);delay(Tstop);digitalWrite(A2,0);digitalWrite(A4,0);
  99.      lcd.setCursor(0,0); lcd.print("    stand by    ");
  100.      lcd.setCursor(0,1); lcd.print("                ");
  101.      flour=0;
  102.      lcd.setCursor(0,1); lcd.print("     flour "); lcd.print(level);}
  103.  }
  104. }
RAW Paste Data