قياس درجة حرارة الماء باستخدام الاردوينو

مبتدئ

image_pdf

الكود البرمجي

نقوم بتحميل مكتبة  DallasTemperature بالبحث عن المكتبات عن طريق Tools > Manage Libraries لبرمجة DS18B20 مستشعر درجة الحرارة المقاوم للماء

 درجة حرارة الماء

و مكتبة OneWire Arduino library

 درجة حرارة الماء

ثم ستقوم برفع الكود البرمجي التالي :

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
display.display(); // show splashscreen
delay(2000);
display.clearDisplay(); // clears the screen and buffer
Serial.begin(9600);
sensors.begin();
}
void loop() {
// Send the command for all devices on the bus to perform a temperature conversion:
sensors.requestTemperatures();

// Fetch the temperature in degrees Celsius for device index:
float tempC = sensors.getTempCByIndex(0); // the index 0 refers to the first device
// Fetch the temperature in degrees Fahrenheit for device index:
float tempF = sensors.getTempFByIndex(0);

// Print the temperature in Celsius in the Serial Monitor:
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);

display.println("Temp: ");
display.print(tempC);
display.print((char)247); // degree symbol
display.print("C");
display.display();
delay(2000);
// routine for displaying text for temp/hum readout

}

 شرح الكود البرمجي

استدعاء المكتبات التي ستساعدنا في برمجة شاشة OLED Display و حساس الحرارة

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>

نقوم بتعريف المنفذ الذي سيتم توصيل and حساس الحرارة معه

#define ONE_WIRE_BUS 2

بعد ذلك ، نقوم بإنشاء كائن
من أجل التواصل مع مستشعر DS18B20 ، نحتاج إلى إنشاء كائن من مكتبة DallasTemperature

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

نكتب بروتوكول إعادة الضبط

#define OLED_RESET 4 
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

في دالة void setup()نحتاج إلى تهيئة حساس الحرارة و تهيئة العرض ومسحه لشاشة OLED Display تأكد من كتابة عنوان  I2Cلشاشة العرض

void setup()   {                
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
  display.display(); // show splashscreen
  delay(2000);
  display.clearDisplay();   // clears the screen and buffer
  Serial.begin(9600);
  sensors.begin();  
}

نعطي الأمر استشعار  درجة الحرارة

void loop() {
  sensors.requestTemperatures();

  float tempC = sensors.getTempCByIndex(0); // the index 0 refers to the first device

نعطي الأمر بطباعة درجة الحرارة بالدرجة المئوية على شاشة OLED Display

  // Print the temperature in Celsius in the Serial Monitor:
 display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);

  display.println("Temp: ");
  display.print(tempC);
  display.print((char)247); // degree symbol 
  display.print("C");
    display.display();
    delay(2000);    
  }
X
تم إضافة المنتج إلى السلة بنجاح