Страница 18 из 19 ПерваяПервая ... 81213141516171819 ПоследняяПоследняя
Показано с 171 по 180 из 184
  1. #171
    Местный
    Регистрация
    23.01.2011
    Возраст
    44
    Сообщений
    183
    Вес репутации
    236

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

    Вложение 18058Вложение 18057
    В общем я растеренности.пересобрал все на макетке заново. Не работает !!!!
    Заменил дисплей на мэлт мт-12864, заменил сдвиговый регистор и ардуино. На дисплее ноль. Только яркость регулируется.
    Что за ?????

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

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

    Цитата Сообщение от Artemka181 Посмотреть сообщение
    Вложение 18058Вложение 18057
    В общем я растеренности.пересобрал все на макетке заново. Не работает !!!!
    Заменил дисплей на мэлт мт-12864, заменил сдвиговый регистор и ардуино. На дисплее ноль. Только яркость регулируется.
    Что за ?????
    Повторяешься? Напиши что заливаешь и чем(какой версией). Тут по всякому уже пробовали, либо старой иде, либо скетч править. Так как с написанием у меня туго, сношался с софтом.

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

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

    Библиотеки с которыми я прошивал Мегу. IDE023.
    Вложения Вложения

  4. #174
    Местный
    Регистрация
    23.01.2011
    Возраст
    44
    Сообщений
    183
    Вес репутации
    236

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

    Использую Arduino IDE023. Скетч
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #include <EEPROM.h>
    #include <ks0108.h>

    #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 13 //датчики на 13 ноге
    #define TEMPERATURE_PRECISION 9

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

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

    #define m1_l 5 //первый влево
    #define m1_r 7 //первый вправо
    #define m2_l 8 //второй влево (боковые)
    #define m2_r 9 //второй вправо(стекло)
    #define en 6 //enable
    #define JOY 4 //АЦП джойстик
    #define val2 5 //АЦП первого мотора
    #define val1 6 //АЦП второго мотора
    #define vent 3 //ШИМ вентилятора
    #define kran 4 //управление клапаном ОЖ

    int res_dt1;//джойстик
    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=0;
    int vent_speed=0;
    int t=5, f=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(en,OUTPUT);
    pinMode(kran,OUTPUT);
    pinMode(vent,OUTPUT);
    digitalWrite(m1_l,LOW);
    digitalWrite(m1_r,LOW);
    digitalWrite(m2_l,LOW);
    digitalWrite(m2_r,LOW);
    digitalWrite(en,HIGH);
    digitalWrite(kran,LOW);
    digitalWrite(vent,LOW );
    sensors.begin();
    Serial.begin(115200);
    TCCR2B = TCCR2B & 0b11111000 | 0x04;

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

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

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

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

    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);//вентилятор
    buttons();
    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();
    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.write( bytes,4);


    if(temp3>=temp_s+1)
    {
    if(temp1>temp_s-5)digitalWrite(kran,HIGH);//закрываем клапан - охлаждаем салон
    else digitalWrite(kran,LOW);
    }
    if(temp3<=temp_s-1)digitalWrite(kran,LOW);//открываем - греем

    }

    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>=715 && res_dt1<=725)//temp_s++. кнопка VOL UP
    {
    if(temp_s<40)
    {
    temp_s++;
    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--;
    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("#");
    }
    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);
    }
    Схема
    Нажмите на изображение для увеличения. 

Название:	схема.jpg 
Просмотров:	1434 
Размер:	82.9 Кб 
ID:	18060
    Работала исправно, но потом соеденил с cubieboard a20, c ним тоже исправно поработала и потом просто перестал показывать дисп. Дисплей подменял (есть второй МЭЛТ) ардуино и сдвиговый регистор тоже. Показания осцилографа тоже ни чего не дали.

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

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

    У меня все время был гемор с библиотекой ks0108, поэтому я использовал библиотеку GLCD. Может потому что я изначально строил на Меге. Последний раз когда прошивал(система на ББ поменялась), библиотеки поменял и все. А с ks0108 у меня дисплей тож не показывал.

  6. #176
    Местный
    Регистрация
    23.01.2011
    Возраст
    44
    Сообщений
    183
    Вес репутации
    236

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

    можешь свой скетч выложить на мегу ? дисп у меня есть winstar b МЭЛТ

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

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

    Цитата Сообщение от Artemka181 Посмотреть сообщение
    можешь свой скетч выложить на мегу ? дисп у меня есть winstar b МЭЛТ
    147 пост

  8. #178
    Местный
    Регистрация
    23.01.2011
    Возраст
    44
    Сообщений
    183
    Вес репутации
    236

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

    Приветствую. Проверил я всю схему с осцилографом, в общем дохлый дисплей. Заказал по инету новый дисплей МЭлт МТ-12864.
    Будем ждать !

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

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

    Цитата Сообщение от Artemka181 Посмотреть сообщение
    Приветствую. Проверил я всю схему с осцилографом, в общем дохлый дисплей. Заказал по инету новый дисплей МЭлт МТ-12864.
    Будем ждать !
    Эт который черный на зеленом... И нравится? Или все равно какой. Я на таком начинал делать, какой то он ни о чем.)))

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

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

    Цитата Сообщение от Artemka181 Посмотреть сообщение
    дисп у меня есть winstar b МЭЛТ
    Чет не просек сразу, у меня дисплей-WG12864. Распиновка другая. И у тебя в 110 посте точно не винстар или уже менял.

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

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

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

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

Ваши права

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