Advertisement
rabanialfarisi

R1

Sep 25th, 2017
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.10 KB | None | 0 0
  1. // Sharp IR GP2Y0A41SK0F Distance Test
  2. // http://tinkcore.com/sharp-ir-gp2y0a41-skf/
  3.  
  4. #define sensor A0 // Sharp IR GP2Y0A41SK0F (4-30cm, analog)
  5. #include <LiquidCrystal.h>
  6.  
  7. // initialize the library with the numbers of the interface pins
  8. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  9. bool tombol;
  10.  
  11. void setup() {
  12. Serial.begin(9600); // start the serial port
  13. pinMode(8, INPUT_PULLUP);
  14. tombol = digitalRead (8);
  15. }
  16.  
  17. void loop() {
  18. tombol = 0;
  19. tombol = digitalRead(8); // baca pushbutton value
  20. // kondisi awal saat power on belum dipencet tombol
  21. lcd.begin (16,2);
  22. lcd.print ("Posisikan valve pada");
  23. lcd.setCursor (3,1);
  24. lcd.print ("Full Open");
  25.  
  26.  
  27. delay(500);
  28. if (tombol == LOW) {// pencet tombol satu kali
  29. tombol = 0;
  30. int rata2, persen, var;
  31. float fo, fc, volts,distancefo, distance;
  32. rata2 = 0;
  33.  
  34. for (int i=0; i<200; i++) {// mendeteksi variable FO
  35. lcd.begin(16,2);
  36. lcd.setCursor (2,0);
  37. lcd.print ("Mendeteksi");
  38. lcd.setCursor (3,1);
  39. lcd.print ("Full Open");
  40.  
  41. volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
  42. distancefo = 13*pow(volts, -1)-1; // worked out from datasheet graph
  43. rata2 = rata2 + distancefo;
  44. delay (25); // tunggu 25 ms each read
  45. distancefo = rata2/200;
  46. fo = distancefo;
  47. }
  48. }
  49. while (tombol==LOW){// selesei deteksi FO tampilkan ini
  50. lcd.begin(16,2);
  51. lcd.print("posisikan FC");
  52. tombol++;
  53. }
  54. if (tombol==0){// kondisi mengukur FC persen bukaan setelah dapat nilai FO
  55.  
  56.  
  57. int rata2, persen, var;
  58. float fo, fc, volts,distancefc, distance;
  59. rata2 = 0;
  60.  
  61. for (int j=0; j<200; j++) {// mendeteksi variable FC
  62. lcd.begin(16,2);
  63. lcd.setCursor (2,0);
  64. lcd.print ("Mendeteksi");
  65. lcd.setCursor (3,1);
  66. lcd.print ("Full Close");
  67.  
  68. volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
  69. distancefc = 13*pow(volts, -1)-1; // worked out from datasheet graph
  70. rata2 = rata2 + distancefc;
  71. delay (25); // tunggu 25 ms each read
  72. distancefc = rata2/200;
  73. fc = distancefc;
  74. }
  75. }
  76. while (tombol==0) {// selesei dapat FO, tampilkan pengukuran pembukaan valvenya
  77. int rata2, persen, var;
  78. float fo, fc, volts,distancefo, distance;
  79. rata2 = 0;
  80. volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
  81. distance = 13*pow(volts, -1)-1; // worked out from datasheet graph
  82. persen = (distance-fc)/(fo-fc)*100;
  83. delay (500);
  84. if (persen >100){
  85. lcd.begin (16,2);
  86. lcd.print (" Pembukaan valve");
  87. lcd.setCursor (6,1);
  88. lcd.print ("100%");
  89. }
  90. else if (persen <0){
  91. lcd.begin (16,2);
  92. lcd.print (" Pembukaan valve");
  93. lcd.setCursor (6,1);
  94. lcd.print ("0%");
  95. }
  96. else {
  97. lcd.begin (16,2);
  98. lcd.print (" Pembukaan valve");
  99. lcd.setCursor (6,1);
  100. lcd.print (persen);
  101. lcd.print ("%");
  102.  
  103. tombol++;
  104. }
  105. }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement