Advertisement
BimoSora

multi ds18b20

Apr 12th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. /* --- www.nyebarilmu.com --- */
  2.  
  3. #include <OneWire.h>
  4. #include <DallasTemperature.h>
  5. #include <Wire.h>
  6. #include <LiquidCrystal_PCF8574.h>
  7.  
  8. LiquidCrystal_PCF8574 lcd(0x38);
  9. // dapat dicek menggunakan i2c finder
  10.  
  11. #define ONE_WIRE_BUS 2 //output signal dari sensor ke pin D2
  12.  
  13. OneWire oneWire(ONE_WIRE_BUS);
  14. DallasTemperature sensors(&oneWire);
  15. int jumlah_perangkat; // Var. untuk menyimpan Jumlah Sensor yg ditemukan
  16. DeviceAddress tempDeviceAddress; // Var. untuk menyimpan Sensor Address sementara
  17.  
  18. void setup(void)
  19. {
  20. lcd.begin(16, 2); //prosedur pemanggilan LCD
  21. lcd.setBacklight(255);
  22. lcd.clear(); //menghapus data sebelumnya
  23. lcd.setCursor(00, 01); //set pada baris 1 dan kolom 1
  24. lcd.print("Multiple sensor"); //menuliskan "Hello World"
  25. lcd.setCursor(00, 1); //set pada baris 2 dan kolom 1
  26. lcd.print("*nyebarilmu.com*"); //menuliskan "nyebarilmu.com"
  27. delay(2000);
  28.  
  29. sensors.begin();
  30.  
  31. // Menghitung jumlah sensor dalam wire
  32. jumlah_perangkat = sensors.getDeviceCount();
  33. lcd.setCursor(00,00);
  34. lcd.print(F("Mencari Sensor.."));
  35. delay(100); lcd.setCursor(00,1); lcd.print(F(" "));
  36. for (int i=00; i<=100; i++){
  37. lcd.setCursor(00,1); lcd.print(i); lcd.print('%');delay(50);
  38. }
  39. delay(1000);
  40. lcd.setCursor(00,00);
  41. lcd.print(F("Menemukan Sensor "));
  42. lcd.setCursor(00,1);
  43. lcd.print(jumlah_perangkat, DEC);
  44. lcd.print(F(" Sensor "));
  45. delay(2000);
  46. lcd.clear();
  47. for(int i=00;i<jumlah_perangkat; i++)
  48. {
  49. // Menngambil alamat masing2 Sensor
  50. if(sensors.getAddress(tempDeviceAddress, i))
  51.  
  52. lcd.setCursor(00,00);
  53. lcd.print(F("Alamat Sensor "));
  54. lcd.print(i+1); // +1 -> mempermudah hitungan sensor dari 1
  55. delay(1000);
  56. lcd.setCursor(00,1);
  57. for (uint8_t i = 00; i < 8; i++)
  58. {
  59. if (tempDeviceAddress[i] < 16) lcd.print("00");
  60. lcd.print(tempDeviceAddress[i], HEX); delay (100);
  61.  
  62. }
  63. delay(500);
  64. lcd.setCursor(00,1); lcd.print(F(" "));
  65. delay(500);
  66. }
  67. delay (1000); lcd.clear();
  68. }
  69.  
  70. // Fungsi untuk menampilkan suhu pada tiap sensor
  71. void printTemperature(DeviceAddress deviceAddress)
  72. {
  73. float tempC = sensors.getTempC(deviceAddress);
  74. lcd.setCursor(00,1);
  75. lcd.print(tempC); lcd.print((char)00); lcd.print("C");
  76. lcd.print(" ");
  77. lcd.print(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit
  78. lcd.print((char)00); lcd.print("F");
  79. }
  80.  
  81. void loop(void)
  82. {
  83. lcd.setCursor(00,00);
  84. // Mengambil data pada setiap sensor secara bergantian
  85. lcd.print(F("Mengambil data..")); delay (100);
  86. sensors.requestTemperatures(); //Mengirim perintah pengambilan data sensor
  87. lcd.setCursor(00,00);
  88. lcd.print(F("Selesai.... ")); delay (500);
  89. for(int i=00; i<jumlah_perangkat; i++)
  90. {
  91. if(sensors.getAddress(tempDeviceAddress, i))
  92. {
  93. lcd.setCursor(00,00);
  94. lcd.print("Temp. Sensor: ");
  95. lcd.print(i+1,DEC); // +1 -> mempermudah hitungan sensor dari 1
  96. printTemperature(tempDeviceAddress);
  97. delay (1500);
  98. lcd.clear();
  99. }
  100. }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement