Advertisement
rabanialfarisi

MINTA TOLONG SUHU

Sep 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 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,tombolvar;
  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. tombolvar = 0;
  20. tombol = digitalRead(8); // baca pushbutton value
  21. // kondisi awal saat power on belum dipencet tombol
  22. lcd.begin (16,2);
  23. lcd.print ("Posisikan valve pada");
  24. lcd.setCursor (3,1);
  25. lcd.print ("Full Open");
  26. delay(500);
  27. if (tombol == LOW && tombolvar==0) {// pencet tombol satu kali
  28. tombol = HIGH;
  29.  
  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==HIGH && tombolvar==0){// selesei deteksi FO tampilkan ini
  50. lcd.begin(16,2);
  51. lcd.print("posisikan FC");
  52. tombolvar++;
  53. }
  54. if (tombol==LOW && tombolvar>0){// kondisi mengukur FC persen bukaan setelah dapat nilai FO
  55. tombol = HIGH;
  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. volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
  68. distancefc = 13*pow(volts, -1)-1; // worked out from datasheet graph
  69. rata2 = rata2 + distancefc;
  70. delay (25); // tunggu 25 ms each read
  71. distancefc = rata2/200;
  72. fc = distancefc;
  73. }
  74. }
  75. while (tombol==HIGH && tombolvar>0) {// selesei dapat FO, tampilkan pengukuran pembukaan valvenya
  76. int rata2, persen, var;
  77. float fo, fc, volts,distancefo, distance;
  78. rata2 = 0;
  79. volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
  80. distance = 13*pow(volts, -1)-1; // worked out from datasheet graph
  81. persen = (distance-fc)/(fo-fc)*100;
  82. delay (500);
  83. if (persen >100){
  84. lcd.begin (16,2);
  85. lcd.print (" Pembukaan valve");
  86. lcd.setCursor (6,1);
  87. lcd.print ("100%");
  88. }
  89. else if (persen <0){
  90. lcd.begin (16,2);
  91. lcd.print (" Pembukaan valve");
  92. lcd.setCursor (6,1);
  93. lcd.print ("0%");
  94. }
  95. else {
  96. lcd.begin (16,2);
  97. lcd.print (" Pembukaan valve");
  98. lcd.setCursor (6,1);
  99. lcd.print (persen);
  100. lcd.print ("%");
  101.  
  102. }
  103. }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement