Страница 8 из 19 ПерваяПервая ... 23456789101112131418 ... ПоследняяПоследняя
Показано с 71 по 80 из 184
  1. #71
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    52
    Сообщений
    396
    Вес репутации
    318

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

    manu_245
    Какашка какая не работает.
    Я в шоке.
    Эти кривые буковки меня с ума сводят.
    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 Thermometer0[8], Thermometer1[8], Thermometer2[8], Thermometer3[8];//адреса датчиков
    float temp0temp1temp2temp3temp_s=25;//t0 - двигатель, t1 - воздуховод, t2 - улица, t3 - салон, temp_s - заданая
    byte bytes[8];
    int err0err1err2err3;
    int error=0;
    int vent_set=0;

    #define m3_l  43 //третий влево(заслонка горячий-холодный)
    #define m3_r  44 //третий вправо(заслонка горячий-холодный)
    #define en  38 //enable
    #define JOY 1 //АЦП джойстик



    int res_dt1;//джойстик



    void setup(void)
    {
      
      
    pinMode(m3_l,OUTPUT);
      
    pinMode(m3_r,OUTPUT);
      
    pinMode(en,OUTPUT);
      
    digitalWrite(m3_l,LOW);
      
    digitalWrite(m3_r,LOW);
      
    digitalWrite(en,HIGH);
      
    sensors.begin();
      
    Serial.begin(115200);
     
    }

    void loop(void)


      
    res_dt1 analogRead(JOY); // прочитать данные АЦП
      /*
      bytes[0] = analogRead(val1) & 255;
       bytes[1] = (analogRead(val1) & 768) >> 8;
       bytes[2] = analogRead(val2) & 255;
       bytes[3] = (analogRead(val2) & 768) >> 8;
       bytes[4] = analogRead(val3) & 255;
       bytes[5] = (analogRead(val3) & 768) >> 8;
       Serial.write( bytes,6);//отправляем в комп 
       */

      
    }

    void buttons()
    {
       if(
    res_dt1>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP

      
    digitalWrite(m3_r,HIGH); 

    else 
    digitalWrite(m3_r,LOW); 
       
    if(
    res_dt1>=635 && res_dt1<=645)//temp_s--. кнопка VOL DOWN 

      
    digitalWrite(m3_l,HIGH); 

    else 
    digitalWrite(m3_l,LOW);


    Вот че получилось все равно не работает либо поворачивает мотор и до перезагрузки.

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

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

    В эмуляторе проверил. Работает.
    PHP код:
    #define m3_l  43 //третий влево(заслонка горячий-холодный)
    #define m3_r  44 //третий вправо(заслонка горячий-холодный)
    #define en  38 //enable
    #define val3 7 //АЦП третьего мотора
    #define JOY 1 //АЦП джойстик

    int res_dt1;//джойстик

    void setup(void)
    {
      
    pinMode(m3_l,OUTPUT);
      
    pinMode(m3_r,OUTPUT);
      
    pinMode(en,OUTPUT);
      
    digitalWrite(m3_l,LOW);
      
    digitalWrite(m3_r,LOW);
      
    digitalWrite(en,HIGH);
      
    Serial.begin(115200);
    }

    void loop(void)

      
    res_dt1 analogRead(JOY); // прочитать данные АЦП
      
    buttons();
      
    Serial.println(analogRead(val3));
    }

    void buttons()
    {
       if(
    res_dt1>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP

      
    digitalWrite(m3_r,HIGH); 

    else 
    digitalWrite(m3_r,LOW); 
       
    if(
    res_dt1>=635 && res_dt1<=645)//temp_s--. кнопка VOL DOWN 

      
    digitalWrite(m3_l,HIGH); 

    else 
    digitalWrite(m3_l,LOW);


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

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

    manu_245
    Прикольно и правда работает.
    Ниче не понимаю.Эт называется гляжу в книгу вижу фигу.
    Serial.begin(115200);-это важная весч?
    buttons();
    Serial.println(analogRead(val3));и это
    остальное один в один

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

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

    manu_245
    СПАСИБО!
    Ниче не понимай,но работает.
    Гений ёмаё.
    Сам исче долго кипел бы,блин,тяжело жить с деревянной головой.
    Вечером попробую это дело к большой присобачить.
    Вобчем то мне от заслонки не много надо было,только чтоб поворачивалась сколько температуру выбрал.
    Исче раз спасибо.

  5. #75
    Новичок
    Регистрация
    15.04.2010
    Сообщений
    10
    Вес репутации
    176

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

    Пришла мысля, возник вопрос. А ардуина с тач-скрином может работать?
    В том плане если в автономном режиме без компа перед lcd поставить, и
    не надо джостика!

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

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

    Не лучше энкодер вместо кнопок температуры.
    Вроде сподручней управлять.

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

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


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

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

    Если ардуино использовать одновременно как контроллер тачскрина, то при выключенном компьютере можно будет управлять климатом через тач, если еще картинку вывести. Вот http://www.compcar.ru/forum/showthre...ED%E8%F2%EE%F0

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

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

    manu_245
    Странно.
    Скетч из 72 поста работает как часы.
    Пробую подставлять в свой и тишина.
    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 Thermometer0[8], Thermometer1[8], Thermometer2[8], Thermometer3[8];//адреса датчиков
    float temp0temp1temp2temp3temp_s=25;//t0 - двигатель, t1 - воздуховод, t2 - улица, t3 - салон, temp_s - заданая
    byte bytes[8];
    int err0err1err2err3;
    int error=0;
    int vent_set=0;

    #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 en  38 //enable
    #define JOY 1 //АЦП джойстик
    #define val2 5 //АЦП второго мотора
    #define val1 6 //АЦП первого мотора
    #define val3 7 //АЦП третьего мотора
    #define vent 31 //ШИМ вентилятора

    int res_dt1;//джойстик
    //int min_3 = 115; //(заслонка горячий-холодный)
    //int max_3 = 950; //(заслонка горячий-холодный)
    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;
    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(en,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(en,HIGH);
      
    digitalWrite(vent,LOW );
      
    sensors.begin();
      
    Serial.begin(115200);
      
    TCCR2B TCCR2B 0b11111000 0x04;

      
    //devices=sensors.getDeviceCount();//считаем сколько датчиков подключено  

      
    if (!sensors.getAddress(Thermometer00)) err0=1;//ошибка. нет датчика 0 - двигатель
      
    if (!sensors.getAddress(Thermometer11)) err1=1;//ошибка. нет датчика 1 - воздуховод
      
    if (!sensors.getAddress(Thermometer22)) err2=1;//ошибка. нет датчика 2 - улица
      
    if (!sensors.getAddress(Thermometer33)) err3=1;//ошибка. нет датчика 3 - салон

      
    sensors.setResolution(Thermometer09);
      
    sensors.setResolution(Thermometer19);
      
    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);//отправляем ее в комп 
    }

    void loop(void)

      
    res_dt1 analogRead(JOY); // прочитать данные АЦП
      /*
      bytes[0] = analogRead(val1) & 255;
       bytes[1] = (analogRead(val1) & 768) >> 8;
       bytes[2] = analogRead(val2) & 255;
       bytes[3] = (analogRead(val2) & 768) >> 8;
       bytes[4] = analogRead(val3) & 255;
       bytes[5] = (analogRead(val3) & 768) >> 8;
       Serial.write( bytes,6);//отправляем в комп 
       */
      
    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;
       
    Serial.println(analogRead(val3));
      }

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

    void termometer()
    {
      
    int m0m1m;
      
    sensors.requestTemperatures();
      
    temp0 sensors.getTempC(Thermometer0);
      
    temp1 sensors.getTempC(Thermometer1);
      
    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(
    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>=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("*");
      }
      
    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); 

    И почемуто на моем скетче стал сильно греться драйвер
    напруги все проверил все в норме стоит залить проверочный
    все огонь.
    Последний раз редактировалось basurman971; 22.03.2012 в 23:13.

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

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

    Скетч из последнего поста не содержит управления 3-м приводом, остальные должны работать. Связи между нагревом и скетчем я не вижу. Возможно неправильно подключены приводы.

    Минусом всей этой схемы является то, что обязательно надо проверять направление.
    То есть, если пишем, например,
    PHP код:
    if (analogRead(val2)<max_2)digitalWrite(m2_r,HIGH);
    else 
    digitalWrite(m2_r,LOW); 
    , необходимо обязательно поверить, что при m2_r,HIGH значение АЦП увеличивается, а не уменьшается! Иначе analogRead(val2) всегда будет <max_2, и привод упрется, но будет продолжать крутить.

    Чтобы прописать заслонку температуры необходимо знать АЦП в крайних положениях и, главное, как ее положение должно быть связано с температурой или каким-либо другим параметром. Скорее всего эта зависимость подбирается по месту на конкретной заслонке.
    Вот пока вариант с управлением заслонкой джойстиком. ЖК отключен.
    Предположительно с экраном проблема. Библиотека то не под мегу переписана.
    Как подключен ЖК? Есть схема? Регистр применяется? На меге без регистра лучше даже. Это вынужденная мера была для экономии ног.
    PHP код:
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <EEPROM.h>

    int address 0;

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

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

    uint8_t Thermometer0[8], Thermometer1[8], Thermometer2[8], Thermometer3[8];//адреса датчиков
    float temp0temp1temp2temp3temp_s=25;//t0 - двигатель, t1 - воздуховод, t2 - улица, t3 - салон, temp_s - заданая
    byte bytes[8];
    int err0err1err2err3;
    int error=0;
    int vent_set=0;

    #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 en  38 //enable
    #define JOY 1 //АЦП джойстик
    #define val2 5 //АЦП второго мотора
    #define val1 6 //АЦП первого мотора
    #define val3 7 //АЦП третьего мотора
    #define vent 31 //ШИМ вентилятора

    int res_dt1;//джойстик
    int min_3 115//(заслонка горячий-холодный)
    int max_3 950//(заслонка горячий-холодный)
    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;
    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(en,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(en,HIGH);
      
    digitalWrite(vent,LOW );
      
    sensors.begin();
      
    Serial.begin(115200);
      
    TCCR2B TCCR2B 0b11111000 0x04;

      
    //devices=sensors.getDeviceCount();//считаем сколько датчиков подключено  

      
    if (!sensors.getAddress(Thermometer00)) err0=1;//ошибка. нет датчика 0 - двигатель
      
    if (!sensors.getAddress(Thermometer11)) err1=1;//ошибка. нет датчика 1 - воздуховод
      
    if (!sensors.getAddress(Thermometer22)) err2=1;//ошибка. нет датчика 2 - улица
      
    if (!sensors.getAddress(Thermometer33)) err3=1;//ошибка. нет датчика 3 - салон

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

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

    void loop(void)

      
    res_dt1 analogRead(JOY); // прочитать данные АЦП
      /*
       bytes[0] = analogRead(val1) & 255;
       bytes[1] = (analogRead(val1) & 768) >> 8;
       bytes[2] = analogRead(val2) & 255;
       bytes[3] = (analogRead(val2) & 768) >> 8;
       bytes[4] = analogRead(val3) & 255;
       bytes[5] = (analogRead(val3) & 768) >> 8;
       Serial.write( bytes,6);//отправляем в комп 
      */
      
    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);//вентилятор
      
    buttons();
      if ((
    millis()-time)>500 && res_dt1 == 1023//запуск процедур по таймеру
      
    {    
        
    time millis();
        
    termometer();
      }
      
    motors();
      
    vent_speed=vent_s/17
    }

    void termometer()
    {
      
    sensors.requestTemperatures();
      
    temp0 sensors.getTempC(Thermometer0);
      
    temp1 sensors.getTempC(Thermometer1);
      
    temp2 sensors.getTempC(Thermometer2);
      
    temp3 sensors.getTempC(Thermometer3);

      
    bytes[0] = 0x64//префикс
      
    bytes[1] = temp3+40//салон
      
    bytes[2] = 0;
      
    bytes[3] = temp2+40//улица
      
    Serial.writebytes,4);
    }
     
     
    void motors()
    {
      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>=176 && res_dt1<=186)//кнопка SOURCE
      
    {
        
    EEPROM.write(addresstemp_s);//пишем в еепром temp_set
        
    delay(500);
      }
      
      if(
    res_dt1>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP
      
    {
        
    digitalWrite(m3_r,HIGH); 
      }
      else 
    digitalWrite(m3_r,LOW);
        
      if(
    res_dt1>=635 && res_dt1<=645)//temp_s--. кнопка VOL DOWN
      
    {
        
    digitalWrite(m3_l,HIGH);
      }
      else 
    digitalWrite(m3_l,LOW);
      
      
      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);
      }


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

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

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

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

Ваши права

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