Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15
  1. #11
    Пользователь
    Регистрация
    29.11.2009
    Возраст
    51
    Сообщений
    65
    Вес репутации
    221

    По умолчанию Re: Информационная панель на LCD

    Вот на три датчика,но можно сделать и больше ,не тяжело разобраться.
    Но есть такой вопросик если кто знает помогите.
    Как сделать так если на входах нет сигнала программа переключалась к примеру к указанию температуры или время,ну во общем нет сигнала прога выбирала место указонное в коде,есть сигнал показывает информацию с датчика.Или если я верно понял надо обьединить два Скетча
    Последний раз редактировалось esau; 27.04.2010 в 04:37.
    D945GCLF2,160gb,2gb-ram,8" TFT LCDTouch+2lcd7" ,Bt,WiFi,SILABS,OBD2,DVBT, ,Audioson,Hertz,Fokal

  2. #12
    Пользователь
    Регистрация
    29.11.2009
    Возраст
    51
    Сообщений
    65
    Вес репутации
    221

    По умолчанию Re: Информационная панель на LCD

    Просьба к Админу открыть подфорум "Программирование Arduino для начинающих" так не будем засорять форум,и думаю в таком под отделе и научится быстрее на вопросах и примерах других участников CompCarовцев.
    Да и для поисковиков полезно
    D945GCLF2,160gb,2gb-ram,8" TFT LCDTouch+2lcd7" ,Bt,WiFi,SILABS,OBD2,DVBT, ,Audioson,Hertz,Fokal

  3. #13
    Пользователь
    Регистрация
    29.11.2009
    Возраст
    51
    Сообщений
    65
    Вес репутации
    221

    По умолчанию Re: Информационная панель на LCD

    вот что намутил за две недели, пока сыровато,но две недели назад я даже не предстовлял что такое ардуино.Купил ардуино мега так как для опытов мне больше подходит да и ардуино 328 входов на порядок меньше






    PHP код:
    #include <LiquidCrystal.h>
    #include <DallasTemperature.h>    
    #include <OneWire.h>
    #include <WProgram.h>
    #include <Wire.h>
    #include <DS1307.h>

    #define temp 10      //выстовляем вход DS18B20  ********************************************************************************** 


    OneWire oneWire(temp);                
    DallasTemperature sensors(&oneWire);
    float tempext = 0;
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // Прописываем для ЖКИ 
    int rtc[7];
    int button = 31;   // указываем на какой выход подключена кнопка     *******************************************************************
    int buttonValue = 0;  // запомненное значение логического выключателя
    int buttonPush = 0;  // указывает нажата ли в данный момент кнопка
    int buttonState = 0; // текущее значение кнопки взятое со входа ардуино

    void setup()
    {
      
    pinMode(button, INPUT);  // кнопка как вход
      
    sensors.begin();    // Запускаем DS18B20
     

    // устанавливаем время
    /*
      RTC.stop();
      RTC.set(DS1307_SEC,0);
      RTC.set(DS1307_MIN,26);
      RTC.set(DS1307_HR,15);
      RTC.set(DS1307_DOW,6);
      RTC.set(DS1307_DATE,29);
      RTC.set(DS1307_MTH,11);
      RTC.set(DS1307_YR,9);
      RTC.start();
    */
      
      
    lcd.begin(20, 4);     // Запускаем ЖКИ и указываем сколько строк
      
    pinMode(22, INPUT);     //Дверь пасажир
    pinMode(24, INPUT);     //Дверь водила
    pinMode(26, INPUT);     //Дверь зад прав
    pinMode(28, INPUT);     //Дверь  зад лев
    pinMode(30, INPUT);     //Багажник
    pinMode(32, INPUT);     // нет Зарядки
    pinMode(34, INPUT);     //Ручник 
    pinMode(36, INPUT);     //Давление масла
    pinMode(38, INPUT);     //уровень в радиаторе
    pinMode(40, INPUT);     //тормоза изношенны
      
      
      
    lcd.print("BUONGIORNO"); // Приветствие
      
    delay(1000);
      
    lcd.clear();
      
     
    }

    char* dayOfWeek[] = {"xxx", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"};    // Дни недели

    void loop()
    {
      
    clock();
      
    knopki();
      
    signal();
    }




    //********************************************              ЧАСЫ И ТЕРМОМЕТР              **************************************************


    void clock()

    {
      
    sensors.requestTemperatures();                              
      
    tempext=sensors.getTempCByIndex(0);                     
      
      
      
      
      
      
    RTC.get(rtc,true);

      
    lcd.setCursor(0,0);
      
    //lcd.print(millis());
      
    printDigits(rtc[2],':');
      
    printDigits(rtc[1],' ');
      
    //printDigits(rtc[0],' ');

      
    lcd.print(dayOfWeek[rtc[3]]);

      
    lcd.setCursor(10,0);
      
    printDigits(rtc[4],'/');
      
    printDigits(rtc[5],'/');
      
    printDigits(rtc[6],' ');
      
             
    lcd.setCursor(4, 1);
             
    lcd.print(tempext);
             
    lcd.setCursor(0, 1);
             
    lcd.print("Tem:");
             
    //lcd.setCursor(19, 1);
             //lcd.print("*");

      
    if(tempext < 3)                // Указываем температуру " ЛЁД НА ДОРОГЕ"
       
    {
      
    lcd.setCursor(0, 3);
           
    lcd.print(" Pericolo Giacio ");   // Надпись которую хотим видеть на ЖКИ  " ЛЁД НА ДОРОГЕ"
           //tone(37, 550,3000);             // можем добавить звук
           
    delay(3000);
           
    lcd.setCursor(0, 3);
           
    lcd.print("                    ");
           
           
           
      }

      
      
    delay(100);
    }

    void printDigits(int digits, char delimiter)
    {
      if(
    digits < 10) {
        
    lcd.print('0');
      }
      
    lcd.print(digits,DEC);
      
    lcd.print(delimiter);
    }



    // **********************************************************  УПРавление КНОПКОЙ    *************************************************


    void knopki()
    {
     
       
    int delayTime = 10;
      
      
    buttonState = digitalRead (button);                             // читаем значение со входа

      
      
    if (buttonState == 0)                                           // если кнопка нажата...
      
    {
        
        
    buttonPush = 1;                                               // ...ставим указатель что кнопка зажата
      
    }
      
      else if (
    buttonState == 1 && buttonPush == 1)                   // .. если кнопка отпущена после того как нажата
      
    {
        
        if (
    buttonValue == 2) buttonValue = 0;                      // меняем значения на кнопке
        
    else                  buttonValue++;

        
    buttonPush = 0;
      }

      
      if (
    buttonValue == 0)                                        // меняем 
     
     
     //                   ************************************* Вольтметр********************************* 
      
    {
      
    float voltage = 5.0 / 3450.0 * analogRead(0);  // читаем со входа для Arduinomega
      
    lcd.setCursor(0, 2);
      
    lcd.print("                    ");             // Забиваем пустотой строку тобишь стираем :)
      
    lcd.setCursor(0, 2);
      
    float realv = voltage * 19.3;
      
    lcd.setCursor(0, 2);
      
    lcd.print(" Voltage: ");
      
    lcd.print(realv);
      
    lcd.print("v");
      
    delay(1000);
    }


      else if (
    buttonValue == 1)
      {
        
    lcd.setCursor(0, 2);
        
    lcd.print("                    ");             // Забиваем пустотой строку тобишь стираем :)
        
        
    lcd.setCursor(0, 2);                           // Здесь в планах зделать расход
        
    lcd.print(" 2Soobschenie");
        
      }
      else if (
    buttonValue == 2)
      {
        
    lcd.setCursor(0, 2);
        
    lcd.print("                    ");             // Забиваем пустотой строку тобишь стираем :)
        
        
        
    lcd.setCursor(0, 2);
        
    lcd.print(" 3Soobschenie");                    // Здесь в планах  зделать сколько оствлось проехать на оставшеймся топливе
        
      
    }

      
    delay(delayTime);
    }


    //              *********************************************** Сообщения*************************************************

    void signal()

      { 
                 if (
    digitalRead(22) == HIGH)
      {
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Porta ANT DX");            //Дверь пасажир
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
          

      }  
                 if (
    digitalRead(24) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Porta ANT LX");           //Дверь водила
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
          

      }
                  
                  if (
    digitalRead(26) == HIGH)
      { 
           
    lcd.setCursor(0, 3);
           
    lcd.print(" Porta POST DX");         //Дверь зад прав
           
    delay(3000);
           
    lcd.setCursor(0, 3);
           
    lcd.print("                    ");
      }
       
                if (
    digitalRead(28) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Porta POST LX");          //Дверь  зад лев
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
      
                if (
    digitalRead(30) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Porta Bagagliaio");       //Багажник
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
      
                if (
    digitalRead(32) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Non carica Batteria");    // нет Зарядки
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
                  if (
    digitalRead(34) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Freno Stazionamento");       //Ручник
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
              
              if (
    digitalRead(36) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Bassa pressione OLIO");    //Давление масла
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
              
              if (
    digitalRead(38) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Liquido Raffreddamento");     //уровень в радиаторе
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
            
            if (
    digitalRead(40) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Pastigli freno");     //тормоза изношенны
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    "); 
        
      }
      } 
    Последний раз редактировалось esau; 27.04.2010 в 04:54.
    D945GCLF2,160gb,2gb-ram,8" TFT LCDTouch+2lcd7" ,Bt,WiFi,SILABS,OBD2,DVBT, ,Audioson,Hertz,Fokal

  4. #14
    Пользователь Аватар для tores
    Регистрация
    08.07.2009
    Возраст
    45
    Сообщений
    50
    Вес репутации
    223

    По умолчанию Re: Информационная панель на LCD

    Цитата Сообщение от esau Посмотреть сообщение
    вот что намутил за две недели, пока сыровато,но две недели назад я даже не предстовлял что такое ардуино.Купил ардуино мега так как для опытов мне больше подходит да и ардуино 328 входов на порядок меньше






    PHP код:
    #include <LiquidCrystal.h>
    #include <DallasTemperature.h>    
    #include <OneWire.h>
    #include <WProgram.h>
    #include <Wire.h>
    #include <DS1307.h>

    #define temp 10      //выстовляем вход DS18B20  ********************************************************************************** 


    OneWire oneWire(temp);                
    DallasTemperature sensors(&oneWire);
    float tempext = 0;
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // Прописываем для ЖКИ 
    int rtc[7];
    int button = 31;   // указываем на какой выход подключена кнопка     *******************************************************************
    int buttonValue = 0;  // запомненное значение логического выключателя
    int buttonPush = 0;  // указывает нажата ли в данный момент кнопка
    int buttonState = 0; // текущее значение кнопки взятое со входа ардуино

    void setup()
    {
      
    pinMode(button, INPUT);  // кнопка как вход
      
    sensors.begin();    // Запускаем DS18B20
     

    // устанавливаем время
    /*
      RTC.stop();
      RTC.set(DS1307_SEC,0);
      RTC.set(DS1307_MIN,26);
      RTC.set(DS1307_HR,15);
      RTC.set(DS1307_DOW,6);
      RTC.set(DS1307_DATE,29);
      RTC.set(DS1307_MTH,11);
      RTC.set(DS1307_YR,9);
      RTC.start();
    */
      
      
    lcd.begin(20, 4);     // Запускаем ЖКИ и указываем сколько строк
      
    pinMode(22, INPUT);     //Дверь пасажир
    pinMode(24, INPUT);     //Дверь водила
    pinMode(26, INPUT);     //Дверь зад прав
    pinMode(28, INPUT);     //Дверь  зад лев
    pinMode(30, INPUT);     //Багажник
    pinMode(32, INPUT);     // нет Зарядки
    pinMode(34, INPUT);     //Ручник 
    pinMode(36, INPUT);     //Давление масла
    pinMode(38, INPUT);     //уровень в радиаторе
    pinMode(40, INPUT);     //тормоза изношенны
      
      
      
    lcd.print("BUONGIORNO"); // Приветствие
      
    delay(1000);
      
    lcd.clear();
      
     
    }

    char* dayOfWeek[] = {"xxx", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab", "Dom"};    // Дни недели

    void loop()
    {
      
    clock();
      
    knopki();
      
    signal();
    }




    //********************************************              ЧАСЫ И ТЕРМОМЕТР              **************************************************


    void clock()

    {
      
    sensors.requestTemperatures();                              
      
    tempext=sensors.getTempCByIndex(0);                     
      
      
      
      
      
      
    RTC.get(rtc,true);

      
    lcd.setCursor(0,0);
      
    //lcd.print(millis());
      
    printDigits(rtc[2],':');
      
    printDigits(rtc[1],' ');
      
    //printDigits(rtc[0],' ');

      
    lcd.print(dayOfWeek[rtc[3]]);

      
    lcd.setCursor(10,0);
      
    printDigits(rtc[4],'/');
      
    printDigits(rtc[5],'/');
      
    printDigits(rtc[6],' ');
      
             
    lcd.setCursor(4, 1);
             
    lcd.print(tempext);
             
    lcd.setCursor(0, 1);
             
    lcd.print("Tem:");
             
    //lcd.setCursor(19, 1);
             //lcd.print("*");

      
    if(tempext < 3)                // Указываем температуру " ЛЁД НА ДОРОГЕ"
       
    {
      
    lcd.setCursor(0, 3);
           
    lcd.print(" Pericolo Giacio ");   // Надпись которую хотим видеть на ЖКИ  " ЛЁД НА ДОРОГЕ"
           //tone(37, 550,3000);             // можем добавить звук
           
    delay(3000);
           
    lcd.setCursor(0, 3);
           
    lcd.print("                    ");
           
           
           
      }

      
      
    delay(100);
    }

    void printDigits(int digits, char delimiter)
    {
      if(
    digits < 10) {
        
    lcd.print('0');
      }
      
    lcd.print(digits,DEC);
      
    lcd.print(delimiter);
    }



    // **********************************************************  УПРавление КНОПКОЙ    *************************************************


    void knopki()
    {
     
       
    int delayTime = 10;
      
      
    buttonState = digitalRead (button);                             // читаем значение со входа

      
      
    if (buttonState == 0)                                           // если кнопка нажата...
      
    {
        
        
    buttonPush = 1;                                               // ...ставим указатель что кнопка зажата
      
    }
      
      else if (
    buttonState == 1 && buttonPush == 1)                   // .. если кнопка отпущена после того как нажата
      
    {
        
        if (
    buttonValue == 2) buttonValue = 0;                      // меняем значения на кнопке
        
    else                  buttonValue++;

        
    buttonPush = 0;
      }

      
      if (
    buttonValue == 0)                                        // меняем 
     
     
     //                   ************************************* Вольтметр********************************* 
      
    {
      
    float voltage = 5.0 / 3450.0 * analogRead(0);  // читаем со входа для Arduinomega
      
    lcd.setCursor(0, 2);
      
    lcd.print("                    ");             // Забиваем пустотой строку тобишь стираем :)
      
    lcd.setCursor(0, 2);
      
    float realv = voltage * 19.3;
      
    lcd.setCursor(0, 2);
      
    lcd.print(" Voltage: ");
      
    lcd.print(realv);
      
    lcd.print("v");
      
    delay(1000);
    }


      else if (
    buttonValue == 1)
      {
        
    lcd.setCursor(0, 2);
        
    lcd.print("                    ");             // Забиваем пустотой строку тобишь стираем :)
        
        
    lcd.setCursor(0, 2);                           // Здесь в планах зделать расход
        
    lcd.print(" 2Soobschenie");
        
      }
      else if (
    buttonValue == 2)
      {
        
    lcd.setCursor(0, 2);
        
    lcd.print("                    ");             // Забиваем пустотой строку тобишь стираем :)
        
        
        
    lcd.setCursor(0, 2);
        
    lcd.print(" 3Soobschenie");                    // Здесь в планах  зделать сколько оствлось проехать на оставшеймся топливе
        
      
    }

      
    delay(delayTime);
    }


    //              *********************************************** Сообщения*************************************************

    void signal()

      { 
                 if (
    digitalRead(22) == HIGH)
      {
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Porta ANT DX");            //Дверь пасажир
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
          

      }  
                 if (
    digitalRead(24) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Porta ANT LX");           //Дверь водила
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
          

      }
                  
                  if (
    digitalRead(26) == HIGH)
      { 
           
    lcd.setCursor(0, 3);
           
    lcd.print(" Porta POST DX");         //Дверь зад прав
           
    delay(3000);
           
    lcd.setCursor(0, 3);
           
    lcd.print("                    ");
      }
       
                if (
    digitalRead(28) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Porta POST LX");          //Дверь  зад лев
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
      
                if (
    digitalRead(30) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Porta Bagagliaio");       //Багажник
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
      
                if (
    digitalRead(32) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Non carica Batteria");    // нет Зарядки
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
                  if (
    digitalRead(34) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Freno Stazionamento");       //Ручник
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
              
              if (
    digitalRead(36) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print(" Bassa pressione OLIO");    //Давление масла
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
              
              if (
    digitalRead(38) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Liquido Raffreddamento");     //уровень в радиаторе
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    ");
      }
            
            if (
    digitalRead(40) == HIGH) 
      { 
          
    lcd.setCursor(0, 3);
          
    lcd.print("Pastigli freno");     //тормоза изношенны
          
    delay(3000);
          
    lcd.setCursor(0, 3);
          
    lcd.print("                    "); 
        
      }
      } 
    а ссылку на первоисточник можно?
    M2-ITX, GIGABYTE GA-510UD, 2xApacer 1Gb, HDD SATA 160Gb, BT, D-Link GA-120, 3G HUAWEI E219, DVB-T USB, Lilliput 889

  5. #15
    Пользователь
    Регистрация
    29.11.2009
    Возраст
    51
    Сообщений
    65
    Вес репутации
    221

    По умолчанию Re: Информационная панель на LCD

    Первоисточника нет , тут сборка скетчей соединённая в один ,что то переделал, думаю где то через месяц всё будет готово,со временем напряг
    Вложения Вложения
    D945GCLF2,160gb,2gb-ram,8" TFT LCDTouch+2lcd7" ,Bt,WiFi,SILABS,OBD2,DVBT, ,Audioson,Hertz,Fokal

Страница 2 из 2 ПерваяПервая 12

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

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

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

Ваши права

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