#include <Arduino.h>
const float BETA = 3950; // Nilai Beta sesuai karakteristik termistor
TaskHandle_t Task1; // Handle tugas untuk membaca suhu
TaskHandle_t Task2; // Handle tugas untuk mencetak suhu
float suhu(int pin) {
int analogValue = analogRead(pin); // Membaca nilai analog dari pin yang diberikan
float celsius = 1 / (log(1 / (4095. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
return celsius; // Mengembalikan nilai suhu dalam format float
}
void readTemperatureTask(void *pvParameters) {
(void)pvParameters; // Parameter tidak digunakan
for (;;) {
float temperature = suhu(15); // Membaca suhu dari pin 15 (sesuaikan dengan koneksi termistor)
vTaskDelay(pdMS_TO_TICKS(1000)); // Jeda 1 detik
}
}
void printTemperatureTask(void *pvParameters) {
(void)pvParameters; // Parameter tidak digunakan
for (;;) {
float temperature = suhu(15); // Membaca suhu dari pin 15 (sesuaikan dengan koneksi termistor)
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" ℃");
vTaskDelay(pdMS_TO_TICKS(1000)); // Jeda 1 detik
}
}
void setup() {
Serial.begin(9600); // Inisialisasi koneksi Serial ke PC untuk debugging
xTaskCreatePinnedToCore(readTemperatureTask, "readTemperatureTask", 10000, NULL, 1, &Task1, 0); // Task untuk membaca suhu di core 0
xTaskCreatePinnedToCore(printTemperatureTask, "printTemperatureTask", 10000, NULL, 1, &Task2, 1); // Task untuk mencetak suhu di core 1
}
void loop() {
// Tidak ada kode yang berjalan di loop utama
}