Жужжит громко при максимальной скорости сервы, если по медленней сделать, то оч тихо будет. Если соединитель (сделанный из термоусадки) недостаточно прочен и при вращении проминается или закручивается, то можно по верх одной термоусадки еще парочку для прочности посадить. Такая система работает достаточно долго, никаких проблем небыло.
P.S. Самое важное забыл написать:
Так как есть нагрузка на валу сервы, есть определённая "пружинистость" (упругость) нашего соединительного вала из термоусадки, и учитывая свойства сервы, она всегда пытается сохранить своё положение, то постоянно слышен треск из сервы. Я решил эту проблему снятием питания с сервы. Тоесть в момент регулирования подаю напряжение и сигнал на серву, после отпускания кнопки все провода отключаются через релюху. Так и безопаснее, не хочется самоделки постоянно держать под напряжением, мало ли чего...
Во скетч для ардуинки:
PHP код:
#include <Servo.h>
Servo servoJAL1; // Жалюзи №1
Servo servoJAL2; // Жалюзи №2
int pos1; //Позиция жалюзи1 (Угол)
int pos2; //Позиция жалюзи2 (Угол)
int jalousieMin1 = 22; //Жалюзи1 уменьшаем угол Вход 22Pin
int jalousieMax1 = 23; //Жалюзи1 увеличиваем угол Вход 23Pin
int jalousieMin2 = 24; //Жалюзи2 уменьшаем угол Вход 24Pin
int jalousieMax2 = 25; //Жалюзи2 увеличиваем угол Вход 25Pin
int power = 13; //Питание релюшки
void setup()
{
servoJAL1.attach(11); // Servo Жалюзи №1 присоединен к 11 выводу
servoJAL2.attach(12); // Servo Жалюзи №2 присоединен к 12 выводу
pinMode(jalousieMin1, INPUT);
pinMode(jalousieMax1, INPUT);
pinMode(jalousieMin2, INPUT);
pinMode(jalousieMax2, INPUT);
pinMode(power, OUTPUT);
pos1 = 90;
pos2 = 90;
}
void loop()
{
//======================== Управление Сервой №1 ============================
//------------------ Уменьшаем угол открытия Сервы №1 ----------------------
if (digitalRead(jalousieMin1) == HIGH && pos1>0)
{
delay(10);
pos1--;
}
//----------------------------------------------------------------------------
//----------------- Увеличиваем угол открытия Сервы №1 ----------------------
if (digitalRead(jalousieMax1) == HIGH && pos1<180)
{
delay(10);
pos1++;
}
//--------------------------------------------------------------------------
//==========================================================================
//======================== Управление Сервой №2 ============================
//------------------ Уменьшаем угол открытия Сервы №2 ----------------------
if (digitalRead(jalousieMin2) == HIGH && pos2>0)
{
delay(10);
pos2--;
}
//----------------------------------------------------------------------------
//----------------- Увеличиваем угол открытия Сервы №2 ----------------------
if (digitalRead(jalousieMax2) == HIGH && pos2<180)
{
delay(10);
pos2++;
}
//---------------------------------------------------------------------------
//===========================================================================
//==================== Питание на серву ========================================
//Подаём только когда нужно управлять сервой.
if (digitalRead(jalousieMax1) == HIGH || digitalRead(jalousieMin1) == HIGH || digitalRead(jalousieMax2) == HIGH || digitalRead(jalousieMin2) == HIGH)
{
digitalWrite(power, HIGH);
}
else
{
digitalWrite(power, LOW);
}
//==============================================================================
servoJAL1.write(pos1);
servoJAL2.write(pos2);
}
Ну и соответственно питание на сервы подаём через реле, например, управление которого идёт с пина 13, которое включится только тогда когда мы будем управлять какой либо сервой.
Необходимо помнить что напрямую реле подключать к выходам ардуино нельзя, так как ток потребления обмотки реле наверняка превышает возможности выходов ардуино.