1. Уважаемые форумчане! Убедительная просьба, используйте наиболее подходящие темы для своих сообщений. Спасибо за понимание.
    Dismiss Notice

Контроллер своими руками

Discussion in 'Автоматика' started by Yuriiv, Apr 6, 2014.

  1. DrCasper

    DrCasper Участник

    Joined:
    12.06.2014
    133
    18
    Имя:
    Дмитрий
    ЕвгенийBEER, что это за поток сознания!? :)

    Если вопрос о вкладках, то это файлы ОДНОГО ПРОЕКТА. Их не нужно (да и не получится) загружать "по одному", т.к. проект компилируется и загружается целиком.
    Если не работает ввод и/или вывод -- в первую очередь нужно проверить настройки пинов в скетче. Если не компилируется и вылетает с ошибкой -- я уже писал выше, как включить детальный вывод информации о компиляции. Тогда будет видно, обо что "споткнулся" компилятор и куда смотреть.
     
    Олег likes this.
  2. ЕвгенийBEER

    ЕвгенийBEER Новенький

    Joined:
    05.05.2016
    26
    10
    Имя:
    Евгений

    Хорошо.Там некоторые вкладки лишние:с разными пинами,LCD экранами...Лишние нужно удалить.Как?Весь проект целиком не совсем верный.часть нужно убирать,корректировать.
    Ошибок нет,но и экран ничего не показывает.А другие программы идут.
     
  3. bojarin

    bojarin Участник

    Joined:
    28.02.2015
    112
    16
    Для себя делал. А зачем цвет? На функционал не влияет. Эргономика? То же вряд ли.
    --- сообщения объединены, Mar 14, 2017, дата первого сообщения: Mar 14, 2017 ---
    Евгений проблем может быть куча. Начните с простейшей прошивки. hello world. И как с ней всей получится переходите к пивоварне.
     
    Олег likes this.
  4. DrCasper

    DrCasper Участник

    Joined:
    12.06.2014
    133
    18
    Имя:
    Дмитрий
    Не нужно ничего удалять. Разные файлы используются для разных языков/плат. Выбор нужной осуществляется на этапе компиляции через указание соответствующих констант.
    "Весь проект целиком не совсем верный" -- это из чего сделан такой вывод, если у всех все собирается и работает? Может, в консерватории что-то поправить? (с)
    "Ошибок нет" -- это подтверждение того, что "весь проект целиком", как раз, верный. А экран не показывает, потому что может быть неправильно подключен, либо (если, например, другие тестовые скетчи работают нормально с экраном), пины прописаны неверно. Указываются они в header-файле (в "закладке"), соответствующем КОНКРЕТНОЙ реализации платы.

    В основном файле скетча английским по белому написано (в качестве примера цитирую ArdBir 2.8.3):
    Code:
    // ==============================================
    // ATTENTION!!!!!
    // YOU MUST SET ONLY THIS SECTION
    // ==============================================
    
    //SET PCB
    // 1 Brauduino Original (Matho's PCB)
    // 2 Brauduino by DanielXan
    // 3 ArdBir by DanielXan
    // 4 ArdBir All-in-One
    #define PCBType 3
    
    // SET LCD and Language
    // LCD 16 or 20
    #define LCDType 20
    
    // LANGUAGE
    // 1 English
    // 2 Italian
    // 3 Spanish
    // 4 Portuguese
    // 5 Russian    (only 20 x 4)
    // 6 Norwegian  (only 20 x 4)
    // 7 Romanian
    #define LCDLanguage 2
    Что обеспечивает выбор нужных header-файлов в зависимости от выбранных настроек. Если, например, выбран (как в листинге выше) тип платы №3 (#define PCBType 3), то будет использован .h-файл "Pcb_ArdBir_DanielXan.h". Почему? Потому что ниже в файле есть соответствующие условия для препроцессора:
    Code:
    // SETTING PCB*****
    #if PCBType == 1
      #include "Pcb_Brauduino_Original.h"
    #elif PCBType == 2
      #include "Pcb_Brauduino_DanielXan.h"
    #elif PCBType == 3
      #include "Pcb_ArdBir_DanielXan.h"
    #elif PCBType == 4
      #include "Pcb_ArdBir_All-in-One.h"
    #elif PCBType == 5
      #include "Pcb_11s.h"
    #endif
    Соответственно, настройки пинов для дисплея, кнопок и реле насоса/тэна нужно выставлять именно в этом файле. Либо, если используется другая плата -- указать ее тип в константе PCBType и курочить соответствующий файл.

    Тоже самое с языком и типом дисплея -- в зависимости от значений LCDType (16х2 или 20х4 символов) и LCDLanguage (язык из списка доступных) будет подгружен нужный .h-файл. Другие .h-файлы проекта, хоть и остаются в "закладках" -- просто игнорируются при компиляции.

    За сим ликбез считаю законченным. Аспекты программирования на C/Processing и работы с Arduino IDE оставляю за кадром, ибо это интересная тема для изучения и просто писать "нажми здесь и ткни туда" -- бесполезно.

    PS: Вся (!) приведенная выше информация пережевывалась уже 100500 раз, поиск по форуму в помощь.
     
  5. ЕвгенийBEER

    ЕвгенийBEER Новенький

    Joined:
    05.05.2016
    26
    10
    Имя:
    Евгений
    Все программки я уже давно прогнал.Только эта не идет!
     
  6. ЕвгенийBEER

    ЕвгенийBEER Новенький

    Joined:
    05.05.2016
    26
    10
    Имя:
    Евгений
    Что делать если скетч слишком большой на arduino 2.8.3?У кого то закачалось?
     
  7. DrCasper

    DrCasper Участник

    Joined:
    12.06.2014
    133
    18
    Имя:
    Дмитрий
    Воспользоваться поиском
     
  8. bojarin

    bojarin Участник

    Joined:
    28.02.2015
    112
    16
    обрезать, выкинув "лишнее, взять ардуино с памятью "побольше", курить форум
    --- сообщения объединены, Apr 13, 2017, дата первого сообщения: Apr 13, 2017 ---
    еще раз конкретнее в чем проблема? версия ардуино (софт), плата уно? библиотеки для ардуино все стоят в нужном месте? листинг ошибки?
     
  9. Олег

    Олег Участник

    Joined:
    18.11.2013
    509
    20
    Перепрошить на загрузчик УНО
    --- сообщения объединены, Apr 13, 2017, дата первого сообщения: Apr 13, 2017 ---
    Читайте форум не ленитесь об этом писалось.
    Как маленькие дети.
     
  10. Serg_V

    Serg_V Новенький

    Joined:
    07.06.2017
    8
    0
    Имя:
    Сергей
    Скетч ArdBir_2_6_62e выдает ошибки при компиляции в ДСВ16х2_ENG :
    Code:
     case(7):
    
          lcd.setCursor(12,1);
    
          if (unitSet<100)LCDSpace(1);
    
          lcd.print(unitSet);
    
          Gradi();
    
    Ошибка:
    
    exit status 1
    
    'Gradi' was not declared in this scope
    
    Я так понимаю - идет обращение к основному скетчу. Так как у других подобной проблеммы нет, наверное я что-то делаю не так в установках?

    Экран у меня 16х2 с кнопками, А0 использовать не могу и поэтому задействовал А4 - но тут криминала особого нет.
    Code:
    // sensor and lcd
    
    OneWire ds(11);
    
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    
    
    // push buttons
    
    const char Button_up    = A3;
    
    const char Button_dn    = A4;
    
    const char Button_start = A1;
    
    const char Button_enter = A2;
    
    
    // outputs
    
    const byte Pump = 3;
    
    const byte Buzz = 10;
    
    const byte Heat = 12;
    
    Ну и установки в основном скетче:

    Code:
    //libraries
    
    #include <EEPROM.h>
    
    #include <LiquidCrystal.h>
    
    //#include <LiquidCrystalRus.h>
    
    #include <OneWire.h>
    
    #include <PID_v1.h>
    
    //#include <SD.h>
    
    //#include <Serial.h>
    
    
    // SETTING PCB*****
    
    // Select your PCB Version
    
    
    // Testing PCB
    
    //#include "Pcb_05.h"
    
    //#include "Pcb_11s.h"
    
    //#include "Pcb_14.h"
    
    
    // Supported PCB
    
    //#include "Pcb_ArdBir_DanielXan.h"
    
    #include "Pcb_Brauduino_DanielXan.h"
    
    //#include "Pcb_Brauduino_Original.h"
    
    
    // Porzioni di codice
    
    #include "ArdBir1.h"
    
    //#include "Funzioni.h"
    
    
    // SETTING LCD*****
    
    // Select your LCD
    
    
    // LANGUAGE ITA
    
    //#include "LCD16x2_ITA.h"
    
    //#include "LCD20x4_ITA.h"
    
    
    // LANGUAGE ENG
    
    #include "LCD16x2_ENG.h"
    
    //#include "LCD20x4_ENG.h"
    
    
    // LANGUAGE RUS
    
    //#include "LCD16x2_ENG.h"
    
    //#include "LCD20x4_rus.h"
    
    Версия 2.5 встала без проблемм(за исключением пищалки), но хотелось попробовать эту!


    И еще, у меня пищалка активная(три контакта) - постоянно пищит)))) что и где в скетче поменять, чтоб нормально работала?
    я так понимаю это тут:
    Code:
    void Buzzer(byte NumBeep, int Period)
    {
      for (byte i=0; i < NumBeep; i++)
    {
    //    digitalWrite (Buzz, HIGH);
        analogWrite (Buzz, 100);
        delay (Period);
    //    digitalWrite(Buzz, LOW);
        analogWrite(Buzz, 0);
        delay(100);
      }
    }
    
     
  11. Phantom

    Phantom Active Member

    Joined:
    11.05.2014
    490
    138
    Имя:
    Олег
    По ошибке ругается, что в проетк нет вызываемой функции Gradi();
    Она должна находиться в файле LCD16x2_ENG.h. Проверь, есть ли. Возможно файл не подцепляется. Какой путь до папки с проектом? Попробуй перенести его например в папку C:\1\
    По буззеру. Не встречал никогда 3 контактного. Дай ссылку на него и распиши, каким образом он у тебя подключен.
     
  12. Serg_V

    Serg_V Новенький

    Joined:
    07.06.2017
    8
    0
    Имя:
    Сергей
    По ошибке, получается вообще ерунда какая то: если ее исключить (//) то не находит следующую функцию...функции эти описаны в файле ArdBir_2_6_62e ...
    я так понимаю, что должно быть какое то обращение от второстепенных файлов(библиотек) к основному
    может как-то #include <ArdBir_2_6_62e.inо> но у меня не получилось.
    положил в папку C:\1\ файл из форума, ничего в нем не менял, попробовал скомпилировать - аналогичная ошибка в файле LCD20x4_rus.h
    --- сообщения объединены, Jul 18, 2017, дата первого сообщения: Jul 18, 2017 ---
    До загрузки даже дело не доходит, при проверке скетча ошибки вылетают!
    Please login or register to view links
    подключение зуммера: питание к 5 вольтам ардуино, управление (I/0) к 10 пину ну и масса...
     
  13. Phantom

    Phantom Active Member

    Joined:
    11.05.2014
    490
    138
    Имя:
    Олег
    Подключил верно. Тебе необходимо поменять в Funzioni.h
    Code:
    void Buzzer(byte NumBeep, int Period){
      for (byte i=0; i < NumBeep; i++){
        digitalWrite(Buzz, LOW);
        delay (Period);
        digitalWrite (Buzz, HIGH);  
        delay(100);
      }
    }
    и если при запуске будет пищать, то в скетче после строки
    Code:
    pinMode (Buzz, OUTPUT);
    добавь еще
    Code:
    digitalWrite (Buzz, HIGH);
     
  14. Serg_V

    Serg_V Новенький

    Joined:
    07.06.2017
    8
    0
    Имя:
    Сергей
    Это сработало, но по окончанию нагрева пищит 3 раза и замолкает, можно не услышать. Можно сделать чтоб пищало пока не нажмешь OK?
    получилось вот так:
    Code:
    void Buzzer(int number)
    {
      for (byte i=0; i < number; i++)
      {
      digitalWrite (Buzz,LOW);
          delay (500);
        digitalWrite(Buzz,HIGH);
         delay(100);
      }
    }
    
     
  15. ЕвгенийBEER

    ЕвгенийBEER Новенький

    Joined:
    05.05.2016
    26
    10
    Имя:
    Евгений
    Приобрел дисплей МЭЛТ 20*4,заливал разные прошивки:2.8.3...
    На английском языке все идет отлично,закачиваю на русском-тоже все идет,но как то корявенько написан сам тест,
    т.е. текст с орфографическими ошибками,часть слов на русском часть на англ..Может у кого-нибудь есть файл с нормальным русским текстом?
    Пытался его переделать (перевести) , ничего не получается.А хочу чтоб было на русском)
    Ведь для чего МЭЛТ дисплей покупал)
    Помогите пожалуйста!Заранее огромное спасибо)
     
  16. Serg_V

    Serg_V Новенький

    Joined:
    07.06.2017
    8
    0
    Имя:
    Сергей
    Прошивка 2.8.3 экран 16х2 английский - все грузится и работает, но PID параметры не могу установить(половина из них не отражается на экране в PID меню при перелистывании) предыдущая прошивка работает нормально.
     
  17. Rabbitus

    Rabbitus Новенький

    Joined:
    08.02.2014
    6
    1
    Имя:
    Андрей
    У меня та же проблема, при установке параметров ПИД и BOIL все моргает, ни черта не видно. На 2.6. такого не наблюдается
     
  18. alexgo

    alexgo Active Member

    Joined:
    07.10.2014
    712
    36
    Имя:
    Александр
    в чём особая необходимость в прошивке 2.8.3? чем 2.6.7b10 с фиксами не устроила? по моему в ней допилили практически всё что необходимо для клона
     
  19. Phantom

    Phantom Active Member

    Joined:
    11.05.2014
    490
    138
    Имя:
    Олег
    в свое время при беглом взгляде на 2.8.3 сделал вывод, что она в первую очередь ориентирована на 20х4 дисплей. для 16х2 недостаточно отлажена. отсюда и моргания. Некорректно сделан вывод информации. Пишет значение, затем поверх него пробелы, затем опять значения - пробелы. Отсюда и моргания. Плюс может строка убежать.. Или править код, или сменить дисплей на 20х4.
     
  20. Rabbitus

    Rabbitus Новенький

    Joined:
    08.02.2014
    6
    1
    Имя:
    Андрей
    Так то все устраивает, но я так понял, что в 2.8 реализована звуковая сигнализация при охлаждении ( поправьте, если ошибаюсь). Я использую блок для затирания солодовых дистиллятов и хотелось бы иметь звуковое оповещение в этом режиме
    Спасибо за ответ. Я тоже так подумал, ведь этот глюк проявляется только в одном месте
    --- сообщения объединены, Nov 21, 2017, дата первого сообщения: Nov 20, 2017 ---
    Поковырялся в библиотеке LCD16x2_ENG.h , внес небольшие коррективы. Теперь на 16х2 английское меню нормально работает, без морганий (если ничего не пропустил). Прикрепляю отредактированную LCD16x2_ENG_1.h Можно из нее скопировать код и вставить вместо исходного, или подключить как библиотеку
     

    Attached Files:

    alexgo likes this.