bangnaga

Hack PH Meter Murah

Jun 13th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.05 KB | None | 0 0
  1. /*
  2. https://www.facebook.com/photo.php?fbid=10207546406244684&set=a.3625799690043.2130107.1425549170&type=3&theater
  3. */
  4.  
  5. int latchPin = 3;
  6. int dataPin = 4;
  7. int clockPin = 2;
  8. int pH_1=0;
  9. float pH_2=0;
  10. float pH=0;
  11.  
  12. byte switchVar1 = 0;
  13. byte switchVar2 = 0;
  14.  
  15. void setup() {
  16.   Serial.begin(9600);
  17.  
  18.   pinMode(latchPin, OUTPUT);
  19.   pinMode(clockPin, OUTPUT);
  20.   pinMode(dataPin, INPUT);
  21.  
  22. }
  23.  
  24. void loop() {
  25.  
  26.   digitalWrite(latchPin,1);
  27.   delayMicroseconds(20);
  28.   digitalWrite(latchPin,0);
  29.  
  30.   switchVar1 = shiftIn(dataPin, clockPin);
  31.   switchVar2 = shiftIn(dataPin, clockPin);
  32.  
  33.  // Serial.println(switchVar1, BIN);
  34. //Serial.println(switchVar2, BIN);
  35.  
  36. // Translating the first two digits
  37.   switch (switchVar1) {
  38.   case B00000110:
  39.     pH_1=1;
  40.     break;
  41.   case B01011011:
  42.     pH_1=2;
  43.     break;
  44.   case B01001111:
  45.     pH_1=3;
  46.     break;
  47.   case B01100110:
  48.     pH_1=4;
  49.     break;    
  50.   case B01101101:
  51.     pH_1=5;
  52.     break;        
  53.   case B01111101:
  54.     pH_1=6;
  55.     break;    
  56.   case B00000111:
  57.     pH_1=7;
  58.     break;    
  59.     case B01111111:
  60.     pH_1=8;
  61.     break;    
  62.     case B01101111:
  63.     pH_1=9;
  64.     break;    
  65.     case B00111111:
  66.     pH_1=0;
  67.     break;    
  68.         case B10111111:
  69.     pH_1=10;
  70.     break;  
  71.       case B10000110:
  72.     pH_1=11;
  73.     break;
  74.   case B11011011:
  75.     pH_1=12;
  76.     break;
  77.   case B11001111:
  78.     pH_1=13;
  79.     break;
  80.   case B11100110:
  81.     pH_1=14;
  82.     break;    
  83.   case B11101101:
  84.     pH_1=15;
  85.     break;        
  86.   case B11111101:
  87.     pH_1=16;
  88.     break;    
  89.   case B10000111:
  90.     pH_1=17;
  91.     break;    
  92.     case B11111111:
  93.     pH_1=18;
  94.     break;    
  95.     case B11101111:
  96.     pH_1=19;
  97.   default:
  98.     pH_1=-1;
  99.   }
  100.  
  101. // Translating the digit after the decimal
  102.  switch (switchVar2) {
  103.     case B00000110:
  104.     pH_2=0.1;
  105.     break;
  106.   case B01011011:
  107.     pH_2=0.2;
  108.     break;
  109.   case B01001111:
  110.     pH_2=0.3;
  111.     break;
  112.   case B01100110:
  113.     pH_2=0.4;
  114.     break;    
  115.   case B01101101:
  116.     pH_2=0.5;
  117.     break;        
  118.   case B01111101:
  119.     pH_2=0.6;
  120.     break;    
  121.   case B00000111:
  122.     pH_2=0.7;
  123.     break;    
  124.     case B01111111:
  125.     pH_2=0.8;
  126.     break;    
  127.     case B01101111:
  128.     pH_2=0.9;
  129.     break;    
  130.     case B00111111:
  131.     pH_2=0.0;
  132.     break;  
  133.   default:
  134.     pH_2=-1;
  135.   }
  136.  
  137. // Calculating pH  
  138. pH = pH_1+pH_2;
  139. // Avoiding garbage
  140. if (pH>0){
  141. Serial.print("pH Integer:  ");  
  142. Serial.print(pH_1);  
  143. Serial.print("     pH Decimal:  ");  
  144. Serial.print(pH_2);
  145. Serial.print("          pH Measured:  ");  
  146. Serial.println(pH,1);
  147. } else {
  148.   pH = 0;
  149. }
  150. delay(100);
  151. }
  152.  
  153. byte shiftIn(int myDataPin, int myClockPin) {
  154.   int i;
  155.   int temp = 0;
  156.   int pinState;
  157.   byte myDataIn = 0;
  158.  
  159.   pinMode(myClockPin, OUTPUT);
  160.   pinMode(myDataPin, INPUT);
  161.  
  162.   for (i=7; i>=0; i--)
  163.   {
  164.     digitalWrite(myClockPin, 0);
  165.    delayMicroseconds(10);
  166.     temp = digitalRead(myDataPin);
  167.     if (temp) {
  168.       pinState = 1;
  169.       myDataIn = myDataIn | (1 << i);
  170.     }
  171.     else {
  172.       pinState = 0;
  173.     }
  174.     digitalWrite(myClockPin, 1);
  175.   }
  176.   return myDataIn;
  177. }
Add Comment
Please, Sign In to add comment