Arduino барометр - барограф

Тема в разделе "Глядите, что я сделал", создана пользователем Сергей Чуприн, 26 июн 2015.

  1. Представляю на суд общественности проект «Arduino барограф».
    Сразу хочу пояснить. Основная цель публикации - получение замечаний и предложений. Особенно буду благодарен за предложения по оптимизации кода. Так как написанный мною код уже занял, практически, всю память контроллера. Хотелось бы добавить еще несколько функций (в частности визуальный контроль заряда АКБ), но не куда.
    Большое спасибо участнику форума Leshak за представленную библиотеку работы с функцией времени http://alxarduino.blogspot.ru/2013/08/delay.html.
    Отдельная благодарность Валентину Олеговичу за очень грамотную и очень полезную статью по теме работы с кнопками http://linuxmd.net/avr/332-dejstviya-posle-nazhatiya-knopki-arduino-uno-atmega-328-p.
    При подаче питания на экране отображается меню установок «SETUPMENU»
    upload_2015-6-26_16-30-16.png
    Третья строка – пределы режимы измерения давления
    Нижняя строка – значение текущего давления в мм рт.ст.
    Нажатием кнопки «Select» в режиме «SETUPMENU» выбираем пределы измерений давления для построения на графике.
    Нажатием кнопки «Start» выходим из режима «SETUPMENU» и переходим к режиму построения графика давления.
    В режиме построения графика, нажав кнопку «Select» можем снова перейти в режим «SETUPMENU» и нажимая дальше «Select» изменить пределы измерений. Нажав «Start» снова переходим к построению графика, при этом ранее полученные данные о давлении не теряются, а приобретают значение в соответствии с выбранным режимом измерений.
    Экран графика давления.
    upload_2015-6-26_16-30-55.png
    Схема барографа
    upload_2015-6-26_16-31-34.png
    Ну вот и все. Я думаю, что получилась достаточно полезная игрушка и для дома (в составе домашней метеостанции) и для рыбаков, охотников, туристов. О проблемах рассказал в начале статьи. Теперь жду, чтобы отозвались опытные и бывалые.


    Всего доброго.

    Удачи всем, у кого руки растут из головы.
     
  2. vvr

    vvr Инженерище

    нормальный проект.
    правда кода не показали.
    а для расширения функций наверно надо взять дисплей побольше
     
  3. Попробую загрузить код.
    В первое сообщение он не поместился.
    Хрень какая-то. Код действительно большой, не помещается. Форум пишет, что он превышает допустимые 10000 знаков. Кто-то знает как опубликовать код либо надо давать ссылку на файлообменник. 24 кб как-то не серьезно. В любом случае, пишите, код сброшу на почту.
    СЧ
     
  4. Спасибо за отзыв. Основная проблема у меня не в дисплее, а в размере кода. Компилятор в IDE пишет в конце: "Размер скетча в двоичном коде: 28 634 байт (из 28 672 байт максимум). Писать больше не куда.
     
  5. Еще одна попытка опубликовать код. Я его сохранил в формате *.txt
    Надо же, прикрепился файл. Изучайте и жду комментариев.
     

    Вложения:

  6. Tomasina

    Tomasina Сушитель лампочек Модератор

    а так сколько памяти свободной?
    http://tomasina.ru/pub/arduino/barograph_opt_v1_ino.zip
    Если компилируется, можно оптимизировать дальше.

    А на OLED дисплее действительно будет смотреться гораздо шикарнее.
     
  7. Благодарю за отзыв.
    Компилятор в IDE пишет в конце: "Размер скетча в двоичном коде: 28 634 байт (из 28 672 байт максимум).
    Также спасибо за помощь в прикреплении файла кода.
    За OLED согласен, гораздо красивее выглядит. Но я всячески экономлю расход батареи. Подскажите, на сколько увеличится потребляемый ток при использовании OLED. И какой, ко Вашему мнению применить, 0,96", представляется, что маловат.
     
  8. Tomasina

    Tomasina Сушитель лампочек Модератор

    Что, с моими поправками кода объем ни на байт не уменьшился? ;) не может такого.быть.
    OLED гораздо более чёткие, поэтому даже при меньшем размере читаемость улучшится. Хотя бывают ещё и 1.3", но только в Китае. TFT жрут много. Есть ещё и 2.4" LCD 128х64 - они большие по размеру.
     
  9. Благодарю Вас за ответ и присланный вариант кода. Только вот, печаль, он не компилируется. IDE выдает инфо об ошибке, но я не могу понять с чем это связано. Прилагаю Тачскрин.
     

    Вложения:

  10. Огромная Вам благодарность. С Вашим вариантом кода разобрался. Результат 25112 байт из 32256 максимум.
    Продолжаем движение к победе.
     

    Вложения:

  11. Megakoteyka

    Megakoteyka Оракул Модератор

    Замените наборы из 70 переменных на массивы и код резко уменьшится в размерах.
    Инициализация массива arrayDraw тоже делается циклом в 2 строки.
    Вот эти куски:
    Код (Text):
      Pmin = 97309; Pmax = 102641;
        display.setCursor(66,0);
        display.println("770");
        display.setCursor(72,10);
        display.println("60");
        display.setCursor(72,21);
        display.println("50");
        display.setCursor(72,32);
        display.println("40");
        display.setCursor(72,41);
        display.println("30");
    лучше сделать в виде одной функции, это опять же уменьшит размер кода.
    Если все это проделаете, размер кода уменьшится, а читаемость повысится.
     
    Artur_K нравится это.