#define red_pin 3 //задается вывод 6 для красного светодиода
#define green_pin 5 //задается вывод 5 для зеленого светодиода
#define blue_pin 6 //задается вывод 3 для синего светодиода
const float BETA = 3950; //коэффициент температурной чувствительности
void setup() {
Serial.begin(9600); // Устанавливается последовательное соединение и задается скорость передачи данных 9600 бит/c
//определяем выводы
pinMode(A0, INPUT);
pinMode(red_pin, OUTPUT);
pinMode(green_pin, OUTPUT);
pinMode(blue_pin, OUTPUT);
}
// создаем функцию RGB_color для объединения красного, зеленого и синего цвета в новый цвет из палитры RGB
void RGB_color (int red_value, int green_value, int blue_value ) {
analogWrite(red_pin, red_value);
analogWrite(green_pin, green_value);
analogWrite(blue_pin, blue_value);
}
void loop() {
int temp = analogRead(A0); //в переменную temp записываем значение с аналогового вывода A0
Serial.println(temp);
float celsius = 1 / (log(1 / (1023. / temp - 1)) / BETA + 1.0 / 298.15) - 273.15; //в переменную celsius записываем результат выражения перевода аналогового значения на датчике в градусы цельсия
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" ℃");
delay(1000);
int r = 0;
int g = 0;
int b = 0;
//делим отрезок аналоговых значений на выходе датчика (от 115 до 953) пополам
// и в переменные r, g, b записываем значения от 0 до 255 в зависимости от выходного значения на датчике
if (temp <= 534)
{
r = map(temp, 115, 534, 255, 0);
g = map(temp, 115, 534, 0, 255);
b = 0;
}
else
{
r = 0;
g = map(temp, 534, 953, 255, 0);
b = map(temp, 534, 953, 0, 255);
}
RGB_color (r, g, b); //вызываем функцию RGB_color и получаем оттенок цвета при смешивании красного, зеленого и синего соответствующего уровня яркости
//чем выше температура, тем больше преобладает красный цвет, на средних температурах - зеленый цвет, на низких температурах - синий цвет
}