#include <SPI.h>
#include <Wire.h> // include Arduino wire library (required for I2C devices)
#include <Adafruit_GFX.h> // include Adafruit graphics library
#include <Adafruit_SSD1306.h> // include Adafruit SSD1306 OLED display driver
#define SCREEN_WIDTH 128 // Lebar layar OLED, dalam piksel
#define SCREEN_HEIGHT 64 // Tinggi layar OLED, dalam piksel
#define OLED_RESET 4 // define display reset pin
Adafruit_SSD1306 display(OLED_RESET);
// Menentukan koneksi pin data LM35
#define LM35_pin A0
void setup(void)
{
Serial.begin(9600);
delay(1000); // wait a second
analogReference(INTERNAL); // set positive reference voltage to 1.1V
// initialize the SSD1306 OLED display with I2C address = 0x3D
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
// clear the display buffer.
display.clearDisplay();
display.setTextSize(1); // text size = 1
display.setTextColor(WHITE, BLACK); // set text color to white and black background
display.setCursor(15, 0); // move cursor to position (15, 0) pixel
display.print("LM35 TEMPERATURE:");
display.display(); // update the display
display.setTextSize(1); // text size = 2
}
int tKelvin, tCelsius, tFahrenheit;
char _buffer[8];
void loop()
{
// Membaca tegangan analog ( = sepersepuluh derajat Celcius)
// 9.3 = 1023/(1.1*100)
tCelsius = 10 * analogRead(LM35_pin) / 9.3;
tKelvin = tCelsius + 2732; // Mengubah sepersepuluh °C menjadi sepersepuluh Kelvin
tFahrenheit = tCelsius * 9/5 + 320 ; // Mengubah sepersepuluh °C menjadi sepersepuluh °Fahrenheit
// suhu cetak dalam derajat Celcius
if (tCelsius >= 1000) // Jika temperature >= 100.0 °C
sprintf(_buffer, "%03u.%1u C", tCelsius / 10, tCelsius % 10);
else
sprintf(_buffer, " %02u.%1u C", tCelsius / 10, tCelsius % 10);
display.setCursor(23, 10);
display.print(_buffer);
// suhu cetak dalam derajat Fahrenheit
if (tFahrenheit >= 1000) // Jika temperature >= 100.0 °F
sprintf(_buffer, "%03u.%1u F", tFahrenheit / 10, tFahrenheit % 10);
else
sprintf(_buffer, " %02u.%1u F", tFahrenheit / 10, tFahrenheit % 10);
display.setCursor(23, 30);
display.print(_buffer);
// suhu cetak dalam Kelvin
sprintf(_buffer, "%03u.%1u K", tKelvin/10, tKelvin%10);
display.setCursor(23, 50);
display.print(_buffer);
// cetak simbol derajat ( ° )
display.drawCircle(88, 12, 2, WHITE);
display.drawCircle(88, 32, 2, WHITE);
// perbarui tampilan
display.display();
delay(1000); // wait a second
}
// end of code.