Страница 9 из 19 ПерваяПервая ... 3456789101112131415 ... ПоследняяПоследняя
Показано с 81 по 90 из 184
  1. #81
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    319

    Сообщение Re: Замена ручного управления печкой

    manu_245
    Я уже дошел до того чтобы завести мотор .
    Дисплей работает нормально на все реагирует пока не пытаешься вкарячить мотор к температуре.
    Или мотор работает,или температура на дисплее изменяется.
    И еще хотелось бы знать,как другие моторы видят кнопки,сам никак не пойму.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Снимок.JPG 
Просмотров:	1008 
Размер:	105.6 Кб 
ID:	14163  
    Последний раз редактировалось basurman971; 26.03.2012 в 00:26.

  2. #82
    Продвинутый
    Регистрация
    15.12.2008
    Возраст
    38
    Сообщений
    229
    Вес репутации
    394

    По умолчанию Re: Замена ручного управления печкой

    Другие моторы не видят кнопки. на кнопки прописаны заранее установленные положения приводов (соответствующие положениям заслонок), а кнопками только выбор осуществляется. Тоже самое можно делать и вообще без кнопок, через терминал или программу управляющую (в этой теме выкладывал).
    Если подключить мотор на кнопки (третий привод так и подключен), то при его движении (кнопка нажата) АЦП res_dt1 не будет равно 1023 и не будет выполняться termometer(); Сделано это было для страховки от глюков при опросе датчиков. Можно попробовать termometer() просто в loop поставить, без таймера. Тогда нажатие кнопок не будет влиять на температуру и ее отображение.

  3. #83
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    319

    По умолчанию Re: Замена ручного управления печкой

    В идеале конечно хорошо бы все под себя переписать.Но это на данный момент нереально.Не осилю,поэтому мучаюсь с тем что есть.
    Меня вполне бы устроило регулирование на десять положений заслонки
    с увеличением в два градуса,скажем от 16 до 36.
    Но блин этож китайская грамота,чем дальше лезу,тем больше непонятней.
    Крайние положения определил,мотор крутится,как положено,но на дисплее тишина.
    Другие моторы не видят кнопки. на кнопки прописаны заранее установленные положения приводов (соответствующие положениям заслонок), а кнопками только выбор осуществляется.
    Как это возможно?НЕ могу понять.Я понимаю,что здесь не семинар по програмированию,но куда еще идти?

  4. #84
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    319

    По умолчанию Re: Замена ручного управления печкой

    Добрый вечер.
    Мучался я мучался,ну и что-то вроде получилось.
    Только вот мотор дергается во всех положениях, подскажите пожалуйста как это можно победить.Мотор это который температуру регулирует.
    Вот скетч:
    PHP код:
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <EEPROM.h>
    #include <ks0108.h>

    #include "ks0108_Mega.h"  // include this for the Arduino Mega other ATmega1280 boards
    #include "SystemFont5x7.h"//шрифт 5х7 
    #include "legs1.h"//значек(воздух вниз)
    #include "both1.h"//значек(воздух вверх-вниз)
    #include "screen1.h"//значек(воздух вверх)
    #include "side1.h"//значек (воздух вперед)
    #include "DS1.h"//шрифт крупный(температура)
    int address 0;

    #define ONE_WIRE_BUS 50 //датчики на 50 ноге
    #define TEMPERATURE_PRECISION 9

    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);

    uint8_t  Thermometer2[8], Thermometer3[8];//адреса датчиков
    float  temp2temp3;// t2 - улица, t3-салон
    byte bytes[8];
    int err2err3;
    int error=0;
    int vent_set=2;

    #define m1_l  39 //первый влево (ноги)
    #define m1_r  40 //первый вправо (ноги)
    #define m2_l  41 //второй влево (боковые)
    #define m2_r  42 //второй вправо(стекло)
    #define m3_l  43 //третий влево(заслонка горячий-холодный)
    #define m3_r  44 //третий вправо(заслонка горячий-холодный)
    #define enl  38 //enable
    #define JOY 1 //АЦП джойстик
    #define val2 5 //АЦП второго мотора
    #define val1 6 //АЦП первого мотора
    #define var 7 //АЦП третьего мотора
    #define vent 31 //ШИМ вентилятора

    int res_dt1;//джойстик
    int motor1motor2motor3;//АЦП приводов
    int var_0 132//(заслонка горячий-холодный)
    int var_1 144//(заслонка горячий-холодный)
    int var_2 162//(заслонка горячий-холодный)
    int var_3 206//(заслонка горячий-холодный)
    int var_4 275//(заслонка горячий-холодный)
    int var_5 342//(заслонка горячий-холодный)
    int var_6 396//(заслонка горячий-холодный)
    int var_7 451//(заслонка горячий-холодный)
    int var_8 506//(заслонка горячий-холодный)
    int var_9 561//(заслонка горячий-холодный)
    int var_10 620//(заслонка горячий-холодный)
    int var_11 685//(заслонка горячий-холодный)
    int var_12 760//(заслонка горячий-холодный)
    int var_13 805//(заслонка горячий-холодный)
    int var_14 856//(заслонка горячий-холодный)
    int var_15 896//(заслонка горячий-холодный)
    int min_2 185//боковые
    int max_2 450//стекло
    int centr_1 310//среднее первый
    int min_1 310//ноги
    int max_1 490//ноги закрыто
    int centr_2 370//среднее второй
    int vent_s=3;
    int vent_speed=3;
    int t=5f=0;
    int flow=5;
    int temp_s=17;
    unsigned long time;


    void setup(void)
    {
      
    pinMode(m1_l,OUTPUT); 
      
    pinMode(m1_r,OUTPUT);
      
    pinMode(m2_l,OUTPUT); 
      
    pinMode(m2_r,OUTPUT);
      
    pinMode(m3_l,OUTPUT);
      
    pinMode(m3_r,OUTPUT);
      
    pinMode(enl,OUTPUT);
      
    pinMode(vent,OUTPUT);
      
    digitalWrite(m1_l,LOW);
      
    digitalWrite(m1_r,LOW);
      
    digitalWrite(m2_l,LOW);
      
    digitalWrite(m2_r,LOW);
      
    digitalWrite(m3_l,LOW);
      
    digitalWrite(m3_r,LOW);
      
    digitalWrite(enl,HIGH);
      
    digitalWrite(vent,LOW );
      
    sensors.begin();
      
    Serial.begin(115200);
      
    TCCR2B TCCR2B 0b11111000 0x04;

      
    //devices=sensors.getDeviceCount();//считаем сколько датчиков подключено  
      
    if (!sensors.getAddress(Thermometer22)) err2=1;//ошибка. нет датчика 2 - улица
      
    if (!sensors.getAddress(Thermometer33)) err3=1;//ошибка. нет датчика 3 - салон

      
    sensors.setResolution(Thermometer29);
      
    sensors.setResolution(Thermometer39);

      
    GLCD.Init(NON_INVERTED);   // initialise the library, non inverted writes pixels onto a clear screen
      
    GLCD.ClearScreen(); 

      
    GLCD.SelectFont(System5x7);
      
    GLCD.CursorTo(0,5);
      
    GLCD.Puts("OUTSIDE:");
      
    GLCD.CursorTo(0,6);
      
    GLCD.Puts("VENT SPEED:");

      
    /*
      if(analogRead(val1) > max_1-10 && analogRead(val2) < min_2+10) flow=2;
       if(analogRead(val1) > max_1-10 && analogRead(val2) > max_2-10) flow=0;
       if(analogRead(val1) > min_1-10 && analogRead(val1) < min_1+10) flow=1; 
        */

      
    temp_s EEPROM.read(address);//читаем заданую температуру из еепром
      
    bytes[0] = 0xFF
      
    bytes[1] = temp_s;
      
    bytes[2] = flow;
      
    bytes[3] = 0;
      
    Serial.writebytes,4);//отправляем ее в комп
      
    Serial.println(analogRead(var)); 
    }

    void loop(void)

       
    res_dt1 analogRead(JOY); // прочитать данные АЦП
       
    buttons();
       
    motor1 analogRead(val1); // прочитать данные АЦП 
       
    motor2 analogRead(val2); // прочитать данные АЦП
       
    motor3 analogRead(var); // прочитать данные АЦП 
       
      
      
    byte ab;
      if (
    Serial.available() > 1)
       { 
        
    Serial.read();  
        
    Serial.read();
        if(
    a==0x64)temp_s=b;
        if(
    a==0xFF)f=b;
        if(
    a==0x78)vent_s=b*10;
      }

      
    analogWrite(ventvent_s);//вентилятор
      
    if ((millis()-time)>500 && res_dt1 == 1023//запуск процедур по таймеру
      
    {    
        
    time millis();
        
    termometer();
      }
      
    motors();
      
    lcd(); 
      
    vent_speed=vent_s/17
    }

    void termometer()
    {
      
    int m0m1m;
      
    sensors.requestTemperatures();
      
    temp2 sensors.getTempC(Thermometer2);
      
    temp3 sensors.getTempC(Thermometer3);

      if(
    temp3<0)
      {
        
    m0=1;
        
    temp3=-temp3;
      }
      else 
    m0=0;

      if(
    temp2<0)
      {
        
    m1=1;
        
    temp2=-temp2;
      }
      else 
    m1=0;

      
    m=m0*10+m1;

      
    bytes[0] = 0x64//префикс
      
    bytes[1] = temp3//салон
      
    bytes[2] = m;
      
    bytes[3] = temp2//улица
      
    Serial.writebytes,4);
    }
     
     
    void motors()
    {
      if(
    temp_s)//мотор заслонки температуры
      
    {
      if(
    temp_s==40)
      {
        if (
    analogRead(var)<var_15)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_15)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      } 
     
      if(
    temp_s==38)
      {
        if (
    analogRead(var)<var_14)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_14)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);

      }

      if(
    temp_s==36)
      {
        if (
    analogRead(var)<var_13)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_13)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }

      if(
    temp_s==34)
      {  
        if (
    analogRead(var)<var_12)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_12)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }

      if(
    temp_s==32)
      {
        if (
    analogRead(var)<var_11)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_11)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);  
      }

      if(
    temp_s==30)
       {
        if (
    analogRead(var)<var_10)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_10)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }

      if(
    temp_s==28)
      {
        if (
    analogRead(var)<var_9)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_9)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }

      if(
    temp_s==26
       { 
        if (
    analogRead(var)<var_8)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_8)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==24)
      {
        if (
    analogRead(var)<var_7)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_7)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==22)
       {
        if (
    analogRead(var)<var_6)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var) >var_6)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==20)
       {
        if (
    analogRead(var)<var_5)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_5)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==18)
      {
        if (
    analogRead(var)<var_4)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_4)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==16
      { 
        if (
    analogRead(var)<var_3)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_3)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==14)
      {  
        if (
    analogRead(var)<var_2)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_2)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==12)
      {
        if (
    analogRead(var)<var_1)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_1)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==10)
      {
        if (
    analogRead(var)>var_0)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
        if (
    analogRead(var)<var_0)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
      }  
     }
      
      if(
    flow==0)//стекло
      
    {
        if (
    analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
        else 
    digitalWrite(m2_r,LOW);
        if (
    analogRead(val1)<max_1)digitalWrite(m1_l,HIGH);
        else 
    digitalWrite(m1_l,LOW);
        
      }

      if(
    flow==1)//в ноги
      
    {
        if (
    analogRead(val1)>min_1)digitalWrite(m1_r,HIGH);
        else 
    digitalWrite(m1_r,LOW);
      }
      if(
    flow==2)//боковые
      
    {
        if (
    analogRead(val2)>min_2)digitalWrite(m2_l,HIGH);
        else 
    digitalWrite(m2_l,LOW);
        if (
    analogRead(val1)<max_1)digitalWrite(m1_l,HIGH);
        else 
    digitalWrite(m1_l,LOW);
      }
      if(
    flow==3)//стекло и ноги 
      
    {
        if (
    analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
        else 
    digitalWrite(m2_r,LOW);
        if (
    analogRead(val1)>min_1)digitalWrite(m1_r,HIGH);
        else 
    digitalWrite(m1_r,LOW);
      }
     
    }

    void buttons()
    {
      if(
    res_dt1>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP
      
    {
        if(
    temp_s<40)
        {
         
    temp_s=temp_s+2;
          
    delay(30);
        }
        
    bytes[0] = 0x5A//префикс
        
    bytes[1] = temp_s;
        
    bytes[2] = 0;
        
    bytes[3] = 0
        
    Serial.writebytes,4);
        
    delay(150);
       }
       
      if(
    res_dt1>=635 && res_dt1<=645)//temp_s--. кнопка VOL DOWN
      
    {  
         if(
    temp_s>10)
        {
         
    temp_s=temp_s-2;
         
    delay(30);
        }
        
    bytes[0] = 0x5A//префикс
        
    bytes[1] = temp_s;
        
    bytes[2] = 0;
        
    bytes[3] = 0
        
    Serial.writebytes,4);
        
    delay(150);
      }
      
      if(
    res_dt1>=176 && res_dt1<=186)//кнопка SOURCE
      
    {
        
    EEPROM.write(addresstemp_s);//пишем в еепром temp_set
        
    delay(500);
      }

      if(
    res_dt1>=556 && res_dt1<=566)//vent_s ++. кнопка TRACK UP
      
    {
        
    vent_s=vent_s+10;
        
    delay(30);
        if(
    vent_s 250)vent_s=255;
        
    bytes[0] = 0xC8//префикс
        
    bytes[1] = vent_s/10;
        
    bytes[2] = 0;
        
    bytes[3] = 0;
        
    Serial.writebytes,4);
        
    delay(80);
      }

      if(
    res_dt1>=475 && res_dt1<=485)//vent_s --. кнопка TRACK DOWN
      
    {
        
    vent_s=vent_s-10;
        
    delay(30);
        if(
    vent_s <=0)vent_s=0;
        
    bytes[0] = 0xC8//префикс
        
    bytes[1] = vent_s/10;
        
    bytes[2] = 0;
        
    bytes[3] = 0;
        
    Serial.writebytes,4);
        
    delay(80);
      }

      if((
    res_dt1>=843 && res_dt1<=853) || f==0)// на стекло. кнопка MODE
      
    {
        
    flow=0;
        
    f=5;
        
    bytes[0] = 0x4B;
        
    bytes[1] = flow;
        
    bytes[2] = 0;
        
    bytes[3] = 0
        
    Serial.writebytes,4);
        
    delay(80);
      }

      if((
    res_dt1>=401 && res_dt1<=411) || f==1)//в ноги. кнопка FILE
      
    {
        
    flow=1;
        
    f=5;
        
    bytes[0] = 0x4B;
        
    bytes[1] = flow;
        
    bytes[2] = 0;
        
    bytes[3] = 0
        
    Serial.writebytes,4);
        
    delay(80);
      }

      if((
    res_dt1>=784 && res_dt1<=794) || f==2)//боковые. кнопка SEL
      
    {
        
    flow=2;
        
    f=5;
        
    bytes[0] = 0x4B;
        
    bytes[1] = flow;
        
    bytes[2] = 0;
        
    bytes[3] = 0
        
    Serial.writebytes,4);
        
    delay(80);
      }

      if((
    res_dt1>=307 && res_dt1<=327) || f==3)//на стекло и в ноги. кнопка ATT
      
    {
        
    flow=3;
        
    f=5;
        
    bytes[0] = 0x4B;
        
    bytes[1] = flow
        
    bytes[2] = 0;
        
    bytes[3] = 0;
        
    Serial.writebytes,4);
        
    delay(80);
      }
    }

    void lcd()
    {

      
    GLCD.SelectFont(DS);
      
    GLCD.CursorTo(0,0);
      
    GLCD.PrintNumber(temp3);
      
    GLCD.Puts("/  ");
      if(
    temp_s>=10)GLCD.CursorTo(5,0);
      else 
    GLCD.CursorTo(6,0);
      
    GLCD.PrintNumber(temp_s);
      
    GLCD.Puts("/");
      
    GLCD.SelectFont(System5x7);
      
    GLCD.CursorTo(8,5);
      
    GLCD.PrintNumber(temp2);
      
    GLCD.Puts(" C");

      
    int i=0;
      for(
    i=0;i<vent_speed;i++)
      {
        
    GLCD.CursorTo(i,7);
        
    GLCD.Puts("0");
      }
      
    int j=0;
      for(
    j=vent_speed;j<15;j++)
      {
        
    GLCD.CursorTo(j,7);
        
    GLCD.Puts(" ");
      }

      if(
    flow==0)GLCD.DrawBitmap(screen96,32BLACK);
      if(
    flow==1)GLCD.DrawBitmap(legs96,32BLACK);
      if(
    flow==2)GLCD.DrawBitmap(side96,32BLACK);
      if(
    flow==3)GLCD.DrawBitmap(both96,32BLACK); 


  5. #85
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    319

    По умолчанию Re: Замена ручного управления печкой

    Ура!!!!
    Победил.Вроде все так просто и втоже время так сложно.
    PHP код:
     void motors()
    {
      if(
    temp_s)//мотор заслонки температуры
      
    {
      if(
    temp_s==40)
      {
        if (
    analogRead(var)<var_15)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_15)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      } 
     
      if(
    temp_s==38)
      {
        if (
    analogRead(var)<var_15)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_14)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);

      }

      if(
    temp_s==36)
      {
        if (
    analogRead(var)<var_14)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_13)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }

      if(
    temp_s==34)
      {  
        if (
    analogRead(var)<var_13)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_12)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }

      if(
    temp_s==32)
      {
        if (
    analogRead(var)<var_12)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_11)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);  
      }

      if(
    temp_s==30)
       {
        if (
    analogRead(var)<var_11)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_10)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }

      if(
    temp_s==28)
      {
        if (
    analogRead(var)<var_10)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_9)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }

      if(
    temp_s==26
       { 
        if (
    analogRead(var)<var_9)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_8)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==24)
      {
        if (
    analogRead(var)<var_8)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_7)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==22)
       {
        if (
    analogRead(var)<var_7)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var) >var_6)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==20)
       {
        if (
    analogRead(var)<var_6)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_5)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
       }
      if(
    temp_s==18)
      {
        if (
    analogRead(var)<var_5)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_4)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==16
      { 
        if (
    analogRead(var)<var_4)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_3)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==14)
      {  
        if (
    analogRead(var)<var_3)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_2)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==12)
      {
        if (
    analogRead(var)<var_2)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
        if (
    analogRead(var)>var_1)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
      }
      if(
    temp_s==10)
      {
        if (
    analogRead(var)>var_0)digitalWrite(m3_l,HIGH);
        else 
    digitalWrite(m3_l,LOW);
        if (
    analogRead(var)<var_0)digitalWrite(m3_r,HIGH);
        else 
    digitalWrite(m3_r,LOW);
      }  
     } 
    Всего то.Теперь буду дисплей мучать.

  6. #86
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    437

    По умолчанию Re: Замена ручного управления печкой

    ээээ.
    Предлагаю сделать массив. Кода будет меньше и он будет читабелен.
    Код:
    // константа, определяющая вместо конкретного положения, отрезок (<нужное значение> - DeltaConst)..  (<нужное значение> + DeltaConst). Будет жужать - увеличить константу.
    define DeltaConst 3
    int16_t vars[16]={132,144,162,206,275,342,396,451,506,561,620,685,760,805,856,896};
    
      int8_t TempIndex=(temp_s-10)/2;//при temp_s=10 на выходе 0, при temp_s=40 на выходе 15, конец массива, что и требуется.
      int16_t var_n=vars[TempIndex]; // получили var_n
    
      int16_t CurrentInput=analogRead(var); //получили положение 
    
      if (CurrentInput<var_n+DeltaConst)
        digitalWrite(m3_r,HIGH);
      else
        digitalWrite(m3_r,LOW);
      if (CurrentInput>var_n-DeltaConst)
        digitalWrite(m3_l,HIGH);
      else
        digitalWrite(m3_l,LOW);
      }

  7. #87
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    319

    По умолчанию Re: Замена ручного управления печкой

    SBorovkov
    Ну конечно моя писанина не бог весть что и вобщем то я думал о чем то подобном.Так я ж не понимаю в этом ничего так сказать первые шаги.
    В любом случае спасибо за участие.Я буду опять кипеть как все это приспособить.Хотя сейчас пытаюсь разобраться с дисплеем.
    Интерфейс чуть переделать.Изначально смотрел на вашу печку,но понял
    что неосилю.

  8. #88
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    437

    По умолчанию Re: Замена ручного управления печкой

    надо просто заменить кусок из 85-го сообщения на приведенный мной код. И все :-)

    Это фактически тот же код, что и Ваш, отличается двумя вещами:
    1. Вместо кучи идентичных if стоит один.
    2. Добавлена DeltaConst, то есть диапазон значений, мертвая зона, в которой двигатель стоит (оба вывода в high).
    Вы этот диапазон организовали так:
    if (analogRead(var)<var_15)digitalWrite(m3_r,HIGH);
    else digitalWrite(m3_r,LOW);
    if (analogRead(var)>var_14)digitalWrite(m3_l,HIGH);
    else digitalWrite(m3_l,LOW);
    а я - впрямую прописал.

    Без диапазона (как у Вас с temp_s==40) всегда будет жужать потому, что и АЦП шумит немнгого (значение не постоянно) и двигатель не может мгновенно остановиться, да и внутри сервомеханизма переменный резистор не идеален. Чуть проскочило в одну сторону, начинает в обратную, потом опять и тд. А так есть мертвая зона, в нее зашли и мотор стоит.

  9. #89
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    319

    По умолчанию Re: Замена ручного управления печкой

    SBorovkov
    Спасибо. Буду пробовать.Все равно не все понятно.А S==40 и S==10 я не использую - мотор дергается,я ничего лучше не придумал и убрал 10 и 40.

  10. #90
    Модератор
    Регистрация
    06.07.2008
    Возраст
    46
    Сообщений
    414
    Вес репутации
    437

    По умолчанию Re: Замена ручного управления печкой

    напиши что непонятно, я объясню

Страница 9 из 19 ПерваяПервая ... 3456789101112131415 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •