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

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

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

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

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

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

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

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

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

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

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

    По умолчанию 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  temp2, temp3;// t2 - улица, t3-салон
    byte bytes[8];
    int err2, err3;
    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 motor1, motor2, motor3;//АЦП приводов
    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=5, f=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(Thermometer2, 2)) err2=1;//ошибка. нет датчика 2 - улица
      
    if (!sensors.getAddress(Thermometer3, 3)) err3=1;//ошибка. нет датчика 3 - салон

      
    sensors.setResolution(Thermometer2, 9);
      
    sensors.setResolution(Thermometer3, 9);

      
    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.write( bytes,4);//отправляем ее в комп
      
    Serial.println(analogRead(var)); 
    }

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

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

    void termometer()
    {
      
    int m0, m1, m;
      
    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.write( bytes,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.write( bytes,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.write( bytes,4);
        
    delay(150);
      }
      
      if(
    res_dt1>=176 && res_dt1<=186)//кнопка SOURCE
      
    {
        
    EEPROM.write(address, temp_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.write( bytes,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.write( bytes,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.write( bytes,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.write( bytes,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.write( bytes,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.write( bytes,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(screen, 96,32, BLACK);
      if(
    flow==1)GLCD.DrawBitmap(legs, 96,32, BLACK);
      if(
    flow==2)GLCD.DrawBitmap(side, 96,32, BLACK);
      if(
    flow==3)GLCD.DrawBitmap(both, 96,32, BLACK); 
    } 

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

    По умолчанию 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
    Возраст
    48
    Сообщений
    414
    Вес репутации
    465

    По умолчанию 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
    Возраст
    54
    Сообщений
    396
    Вес репутации
    347

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

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

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

    По умолчанию 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
    Возраст
    54
    Сообщений
    396
    Вес репутации
    347

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

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

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

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

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

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

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

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

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

Ваши права

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