Помогите поменять в скетче вращение серво

Тема в разделе "Arduino & Shields", создана пользователем иванвака, 14 янв 2020 в 20:34.

  1. /*http://geektimes.ru/post/252796/
    питание с подсветки экрана ->8 (Enable_pin) 1 - нагрев вкл / 0 откл
    датчик DS18B20 -> 2 (One_wire_bas_pin)
    резистор уст нужной температуры ->A5 (R1_pin) 0-1023 => 31- 51
    светодиод ->7 (led_pin)
    серва -> 9 (servo_pin)
    */
    //#1
    constint Enable_pin =8;// пин питание с подсветки экрана
    uint8_t Enable =0;// 1 работа / 0 нет

    #include <OneWire.h>
    constint One_wire_bas_pin =2;// пин на шину OneWire
    OneWire oneWire(One_wire_bas_pin);
    #include <DallasTemperature.h>
    DallasTemperature sensors(&oneWire);// подключаем датчик DS18B20 на шину OneWire

    float temperature;// текущая температура
    constint R1_pin = A5;// пин на потенциометр уст температуры
    float right_temperature ;// нужная температура в колонке уст потенциометром
    //#2
    constint led_pin =7;// пин светодиода
    #include <Servo.h>
    Servo myservo;
    constint servo_pin =9;// пин сервы
    uint8_t Enable_servo =0;// 1 вкл сервы/ 0 откл сервы
    uint8_t pause =0;// пауза для прогрева 0-50
    uint8_t Angle;// позиция сервы
    constint minAngle =5;
    constint maxAngle =100;

    void setup(){
    Serial.begin(9600);//включаем сериал
    //#1
    pinMode(Enable_pin, INPUT);//подключаем пин питание с подсветки экрана
    sensors.begin();
    //#2
    pinMode(led_pin, OUTPUT);
    digitalWrite(led_pin, Enable_servo =0); //гасим лампочку
    }

    void loop(){
    staticuint32_t MILLIS ;
    MILLIS = millis();
    //#1
    staticuint32_t future1 =0;
    if(MILLIS >= future1){
    future1 = MILLIS +200;
    Enable = digitalRead(Enable_pin);
    right_temperature = map(analogRead( R1_pin), 0, 1023, 31, 51);// выставляем температуру 31 - 51 градусов
    Serial.print("Right_temperature =");
    Serial.println(right_temperature);
    sensors.requestTemperatures();// послать команду измерить температуру
    temperature = sensors.getTempCByIndex(0);// получить температуру с 1 датчика(0)
    Serial.print("Temperature =");
    Serial.println(temperature);
    }
    //#2 200 миллисекунд управление сервой.
    staticuint32_t future2 =0;
    if(MILLIS >= future2){
    future2 = MILLIS +200;
    switch(Enable_servo *2+ Enable){
    case1: // Enable_servo==0 Enable==1 ВКЛ сервы
    if(pause ==0){
    myservo.attach(servo_pin);//атачим серву
    myservo.write(50); //ставим на середину
    Serial.println("BOILER ON");
    }
    pause++;
    if(pause >50){// делаем паузу 50*200=10000 или 10 секунд
    pause =0;
    digitalWrite(led_pin, Enable_servo =1); //вкл лампочку
    }
    break;
    case2: // Enable_servo==1 Enable==0 ОТКЛ сeрвы
    myservo.write(50); //ставим серву посредине
    myservo.detach(); //детачим чтоб не жужжала
    Serial.println("BOILER OFF");
    digitalWrite(led_pin, Enable_servo =0); //гасим лампочку
    break;
    case3: // Enable_servo==1 Enable==1 РЕГУЛИРОВКА ТЕМПЕРАТУРЫ
    if(temperature < right_temperature){
    Angle = myservo.read();
    Angle +=2;// 2 скорость регулировки
    if(Angle > maxAngle ) Angle = maxAngle;
    myservo.write(Angle);
    }
    elseif( temperature > right_temperature){
    Angle = myservo.read();
    Angle -=2;// 2 скорость регулировки
    if(Angle < minAngle ) Angle = maxAngle;
    myservo.write(Angle);
    }
    break;
    }
    }
    }
     
  2. BAR__MEN

    BAR__MEN Вселенский Няш Администратор

    Screenshot_2020-01-14 Амперка Форум.png.png
     
    KindMan и Daniil нравится это.
  3. sser

    sser Гик

    Angle -=2;
    Angle +=2;
    Поменяй местами и всё.