Столкнулся с тем, что когда одновременно опрашиваешь датчик температуры DS18B20 с помощью библиотеки OneWire и рулишь сервами, сервы как-то странно себя ведут. Я понимаю что это связано с библиотекой и что и сервы по одиночному проводу работают, и что датчик температуры тоже данные шлёт по одному проводу (у каждого устройства свой одиночный провод для данных). Даже если опрашивать датчик раз в секунду. Но как это стабилизировать это всё я не знаю. Прошу помощи. Заранее спасибо.
C++:
#include <Servo.h>
#include <OneWire.h>
OneWire ds(7);
Servo H_servo;
Servo C_servo;
int angle = 45; // normal angle
int REV_angle = 45; // reverse angle
float temperature;
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(8, 0);
digitalWrite(9, 1);
H_servo.attach(2);
C_servo.attach(3);
}
void loop() {
detectTemperature();
H_servo.write(angle);
C_servo.write(REV_angle);
}
void detectTemperature() {
byte data[2];
ds.reset();
ds.write(0xCC);
ds.write(0x44);
ds.reset();
ds.write(0xCC);
ds.write(0xBE);
data[0] = ds.read();
data[1] = ds.read();
temperature = ((data[1] << 8) | data[0]) * 0.0625;
}