Guest User

Untitled

a guest
Jul 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(6, 7, 8, 9, 10, 11);
  3.  
  4. #define DT A2
  5. #define SCK A3
  6. #define sw 13
  7.  
  8. long sample=0;
  9. float val=0;
  10. long count=0;
  11.  
  12. unsigned long readCount(void)
  13. {
  14. unsigned long Count;
  15. unsigned char i;
  16. pinMode(DT, OUTPUT);
  17. digitalWrite(DT,HIGH);
  18. digitalWrite(SCK,LOW);
  19. Count=0;
  20. pinMode(DT, INPUT);
  21. while(digitalRead(DT));
  22. for (i=0;i<24;i++)
  23. {
  24. digitalWrite(SCK,HIGH);
  25. Count=Count<<1;
  26. digitalWrite(SCK,LOW);
  27. if(digitalRead(DT))
  28. Count++;
  29. }
  30. digitalWrite(SCK,HIGH);
  31. Count=Count^0x800000;
  32. digitalWrite(SCK,LOW);
  33. return(Count);
  34. }
  35.  
  36. void setup()
  37. {
  38. Serial.begin(9600);
  39. pinMode(SCK, OUTPUT);
  40. pinMode(sw, INPUT_PULLUP);
  41. lcd.begin(16, 2);
  42. lcd.print(" Weight ");
  43. lcd.setCursor(0,1);
  44. lcd.print(" Measurement ");
  45. delay(1000);
  46. lcd.clear();
  47. calibrate();
  48. }
  49.  
  50. void loop()
  51. {
  52. count= readCount();
  53. int w=(((count-sample)/val)-2*((count-sample)/val));
  54. Serial.print("weight:");
  55. Serial.print((int)w);
  56. Serial.println("g");
  57. lcd.setCursor(0,0);
  58. lcd.print("Weight ");
  59. lcd.setCursor(0,1);
  60. lcd.print(w);
  61. lcd.print("g ");
  62.  
  63. if(digitalRead(sw)==0)
  64. {
  65. val=0;
  66. sample=0;
  67. w=0;
  68. count=0;
  69. calibrate();
  70. }
  71. }
  72.  
  73. void calibrate()
  74. {
  75. lcd.clear();
  76. lcd.print("Calibrating...");
  77. lcd.setCursor(0,1);
  78. lcd.print("Please Wait...");
  79. for(int i=0;i<100;i++)
  80. {
  81. count=readCount();
  82. sample+=count;
  83. Serial.println(count);
  84. }
  85. sample/=100;
  86. Serial.print("Avg:");
  87. Serial.println(sample);
  88. lcd.clear();
  89. lcd.print("Put 100g & wait");
  90. count=0;
  91. while(count<1000)
  92. {
  93. count=readCount();
  94. count=sample-count;
  95. Serial.println(count);
  96. }
  97. lcd.clear();
  98. lcd.print("Please Wait....");
  99. delay(2000);
  100. for(int i=0;i<100;i++)
  101. {
  102. count=readCount();
  103. val+=sample-count;
  104. Serial.println(sample-count);
  105. }
  106. val=val/100.0;
  107. val=val/100.0; // put here your calibrating weight
  108. lcd.clear();
  109. }
Add Comment
Please, Sign In to add comment