Управление печкой

Тема в разделе "Arduino & Shields", создана пользователем Алексей40, 12 мар 2017.

  1. Всем здравствуйте. Вот задумал переделать печку с тросиков на сервомоторы. Все бы хорошо только вот мотор печки не как не хочет работать. И не как не пойму где моя ошибка в программе. Люди добрые помогите. В полном тупике.

    Код (C++):

    #include <Servo.h>
    String readString, servo1, servo2, servo3,servo4;
    Servo myservo1;
    Servo myservo2;
    Servo myservo3;
    Servo myservo4;
    int kn1 = 2;
    int kn2 = 4;
    int kn3 = 7;
    int kn4 = 8;
    int potPin1 = 0;
    int potPin2 = 1;

    void setup() {
      Serial.begin(9600);
    myservo1.attach(3);
    myservo2.attach(5);
    myservo3.attach(6);
    myservo4.attach(9);
    pinMode(kn1, INPUT);
    pinMode(kn2, INPUT);
    pinMode(kn3, INPUT);
    pinMode(kn4, INPUT);
    pinMode(10, OUTPUT);
    }

    void loop() {
      int reading = analogRead(potPin1);
      int angle = reading / 6;
      myservo1.write(angle);
      int reading1 = analogRead(potPin2);
      int val = reading1 / 4;
      Serial.println(val);
      analogWrite(10, val);
     
      if (digitalRead(kn4) == HIGH)
          { myservo2.write(150);}
        else { myservo2.write(30);}
      if (digitalRead(kn2) == HIGH)
          { myservo3.write(150);}
        else { myservo3.write(30);}
      if (digitalRead(kn1) == HIGH && digitalRead(kn3) == HIGH)
          { myservo4.write(90);}
      if (digitalRead(kn1) == LOW && digitalRead(kn3) == LOW)
          { myservo4.write(90);}
      if (digitalRead(kn1) == LOW && digitalRead(kn3) == HIGH)
          { myservo4.write(10);}
      if (digitalRead(kn1) == HIGH && digitalRead(kn3) == LOW)
          { myservo4.write(170);}
    }
    [​IMG]
     
  2. rkit

    rkit Гуру

    Правая половина схемы - тихий ужас. Полевик никогда не откроется, оптопара бесполезная, пара дидов последовательно зачем-то.
    Подтягивающие резисторы для кнопок в ардуино уже встроны, включаются через pinMode(pin, INPUT_PULLUP);
     
  3. Тут я с тобой не согласен эта часть схемы рабочая и причем уже 2 года как стоит на машине. Без сбоев и нареканий
     
  4. rkit

    rkit Гуру

    Ну хорошо. Откуда на затворе полевика возьмется напряжение в 16 вольт для открытия? Ну можно предположить, что конструкция с диодами и конденсатором это кусок умножителя напряжения. но он явно не завершен.
    И хоть убей не понимаю, зачем нужны мучения с умножителем, когда достаточно поставить полевик нижним плечом.
     
  5. Все разобрался. Пересадил с 10 ноги на 11 и все заработало[​IMG]
    Код (C++):
    #include <Servo.h>
    String readString, servo1, servo2, servo3,servo4;
    Servo myservo1;
    Servo myservo2;
    Servo myservo3;
    Servo myservo4;
    int kn1 = 2;
    int kn2 = 4;
    int kn3 = 7;
    int kn4 = 8;
    int potPin1 = 0;
    int potPin2 = 1;

    void setup() {
    myservo1.attach(3);
    myservo2.attach(5);
    myservo3.attach(6);
    myservo4.attach(9);
    pinMode(kn1, INPUT);
    pinMode(kn2, INPUT);
    pinMode(kn3, INPUT);
    pinMode(kn4, INPUT);
    pinMode(11, OUTPUT);
    pinMode(1, OUTPUT);
    pinMode(0, OUTPUT);
    pinMode(12, OUTPUT);
    }

    void loop() {
      int reading = analogRead(potPin1);
      int angle = reading / 6;
      if (angle <= 10)
          { digitalWrite (12, LOW);}
          else {digitalWrite (12, HIGH);}
        myservo1.write(angle);
        int reading1 = analogRead(potPin2);
      int val = reading1 / 4;
      analogWrite(11, val);
     
      if (digitalRead(kn4) == HIGH)
          { myservo2.write(150);}
        else { myservo2.write(30);}
      if (digitalRead(kn2) == HIGH)
          { myservo3.write(150);}
        else { myservo3.write(30);}
      if (digitalRead(kn1) == HIGH && digitalRead(kn3) == HIGH)
          { myservo4.write(90);}
      if (digitalRead(kn1) == LOW && digitalRead(kn3) == LOW)
          { myservo4.write(90);}
      if (digitalRead(kn1) == LOW && digitalRead(kn3) == HIGH)
          { myservo4.write(10);}
      if (digitalRead(kn1) == HIGH && digitalRead(kn3) == LOW)
          { myservo4.write(170);}
    }
     
  6. rkit

    rkit Гуру

    А для реле надо защитный диод ставить
     
  7. Согласен. Он и стоит уже в колодке. Это я дополнительную помпу завел на это реле.
    Теперь не надо вспоминать о ней. Когда кран перекрываешь радиатора.