Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Sharp IR GP2Y0A41SK0F Distance Test
- // http://tinkcore.com/sharp-ir-gp2y0a41-skf/
- #define sensor A0 // Sharp IR GP2Y0A41SK0F (4-30cm, analog)
- #include <LiquidCrystal.h>
- // initialize the library with the numbers of the interface pins
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
- bool tombol,tombolvar;
- void setup() {
- Serial.begin(9600); // start the serial port
- pinMode(8, INPUT_PULLUP);
- tombol = digitalRead (8);
- }
- void loop() {
- tombol = 0;
- tombolvar = 0;
- tombol = digitalRead(8); // baca pushbutton value
- // kondisi awal saat power on belum dipencet tombol
- lcd.begin (16,2);
- lcd.print ("Posisikan valve pada");
- lcd.setCursor (3,1);
- lcd.print ("Full Open");
- delay(500);
- if (tombol == LOW && tombolvar==0) {// pencet tombol satu kali
- tombol = HIGH;
- int rata2, persen, var;
- float fo, fc, volts,distancefo, distance;
- rata2 = 0;
- for (int i=0; i<200; i++) {// mendeteksi variable FO
- lcd.begin(16,2);
- lcd.setCursor (2,0);
- lcd.print ("Mendeteksi");
- lcd.setCursor (3,1);
- lcd.print ("Full Open");
- volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
- distancefo = 13*pow(volts, -1)-1; // worked out from datasheet graph
- rata2 = rata2 + distancefo;
- delay (25); // tunggu 25 ms each read
- distancefo = rata2/200;
- fo = distancefo;
- }
- }
- while (tombol==HIGH && tombolvar==0){// selesei deteksi FO tampilkan ini
- lcd.begin(16,2);
- lcd.print("posisikan FC");
- tombolvar++;
- }
- if (tombol==LOW && tombolvar>0){// kondisi mengukur FC persen bukaan setelah dapat nilai FO
- tombol = HIGH;
- int rata2, persen, var;
- float fo, fc, volts,distancefc, distance;
- rata2 = 0;
- for (int j=0; j<200; j++) {// mendeteksi variable FC
- lcd.begin(16,2);
- lcd.setCursor (2,0);
- lcd.print ("Mendeteksi");
- lcd.setCursor (3,1);
- lcd.print ("Full Close");
- volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
- distancefc = 13*pow(volts, -1)-1; // worked out from datasheet graph
- rata2 = rata2 + distancefc;
- delay (25); // tunggu 25 ms each read
- distancefc = rata2/200;
- fc = distancefc;
- }
- }
- while (tombol==HIGH && tombolvar>0) {// selesei dapat FO, tampilkan pengukuran pembukaan valvenya
- int rata2, persen, var;
- float fo, fc, volts,distancefo, distance;
- rata2 = 0;
- volts = analogRead(sensor)*0.0048828125; // value from sensor * (5/1024)
- distance = 13*pow(volts, -1)-1; // worked out from datasheet graph
- persen = (distance-fc)/(fo-fc)*100;
- delay (500);
- if (persen >100){
- lcd.begin (16,2);
- lcd.print (" Pembukaan valve");
- lcd.setCursor (6,1);
- lcd.print ("100%");
- }
- else if (persen <0){
- lcd.begin (16,2);
- lcd.print (" Pembukaan valve");
- lcd.setCursor (6,1);
- lcd.print ("0%");
- }
- else {
- lcd.begin (16,2);
- lcd.print (" Pembukaan valve");
- lcd.setCursor (6,1);
- lcd.print (persen);
- lcd.print ("%");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement