#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
const int voltagePin5V = A0;
const int voltagePin12V = A1;
const int fanPin = 3;
volatile int fanRPM = 0;
unsigned long previousMillis = 0;
const long interval = 1000;
void fanRPMCount() {
fanRPM++;
}
void setup() {
Serial.begin(9600);
sensors.begin();
pinMode(fanPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(fanPin), fanRPMCount, FALLING);
}
float readVoltage(int pin) {
int sensorValue = analogRead(pin);
float voltage = sensorValue * (5.0 / 1023.0);
return voltage * 2;
}
void loop() {
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
float voltage5V = readVoltage(voltagePin5V);
float voltage12V = readVoltage(voltagePin12V);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
int rpm = fanRPM * 60 / 2;
fanRPM = 0;
Serial.print("Температура: ");
Serial.print(temperature);
Serial.println(" C");
Serial.print("Напруга 5V: ");
Serial.print(voltage5V);
Serial.println(" V");
Serial.print("Напруга 12V: ");
Serial.print(voltage12V);
Serial.println(" V");
Serial.print("Оберти вентилятора: ");
Serial.print(rpm);
Serial.println(" RPM");
Serial.println("-------------------");
}
}
Loading
ds18b20
ds18b20