Новички просят помощи у профессуры
- Войдите на сайт для отправки комментариев
Пт, 21/11/2014 - 16:19
Подключаю BMP 085, LCD 1602 к MEGA 2560. Задал вопрос на этом форуме в теме: "Помогите составить скетчик" Мне указали на выход и я создал новую тему. На авторство этой темы не претендую. Все, кому это необходимо - пусть ей пользуются. Никто не может никого от сюда прогнать!
Ну а теперь по существу:
Просил помочь отредактировать код по подключению BMP 085. LCD 1602 к мега 2560, Но справился сам.
Мне помог код http://bashlaev.ru/?p=141 , я убрал все лишнее - в итоге получил рабочий код для
BMP 085+LCD1602. Мне помогло то, что на каждой строчке программы есть комментарий.
#include <LiquidCrystal.h> // Подключаем стандартную библиотеку LiquidCrystal #include <Wire.h> #include <BMP085.h> // Библиотека для работы с датчиком BMP085 // Инициализируем объект-экран, определяем пины для работы с экраном LiquidCrystal lcd(8, 9, 4, 5, 6, 7); BMP085 dps = BMP085(); long Temperature085 = 0, Pressure085 = 0, Altitude085 = 0; void setup() { lcd.begin(16, 2); // устанавливаем размер (количество столбцов и строк) экрана Serial.begin(9600); // старт работы серийного порта lcd.clear(); // очищаем дисплей Serial.println("start"); // пишем в серийном порту «start» Wire.begin(); delay(1000); // ожидание 1 секунда dps.init(); } void loop () { dps.getTemperature(&Temperature085); dps.getPressure (&Pressure085); lcd.setCursor(0, 0); // устанавливаем курсор в колонку 0 строка 0 lcd.print("mm="); // пишем «mm=» lcd.print(Pressure085/133); // показания давления с датчика lcd.setCursor(0, 1); // устанавливаем курсор в колонку 0 строка 1 lcd.print("t="); // пишем «t=» lcd.print(Temperature085*0.1); // показания температуры с датчика BMP085 delay(1000); }
Всем удачи!
А зачем в порт ещё посылаешь, проверяешь работу?
Если тебе это не надо, то строку 17 и 22 можно убрать. Градусы можно выводить кратными 0,1, от это можно избавиться от четырёхбайтной long и остановиться на двухбайтной int. К томуж там же (в строке 10) ты обьявляешь третью переменную такого же типа. Зачем?
На самом деле я не работал с библиотекой BMP 085, но думаю там есть сэмплы. На будущее... Сначала подключаешь дисплей и пробуешь управлять только им, после того как освоил и понал что к чему, подключаешь к дуине датчики и посылаешь в порт данные... разобрался что и как, вот тогда и совмещай.
И ненадо ни на кого дуться, никто тебя не посылал.
Насчет строки 17 - пока не догнал , почему она не нужна. Строку 22 действительно оставил для контроля в плане ( если на дисплее ничего нет, а в порту - START. значит косяк в подключении дисплея.) Ну а строка 10 - да, там 3 переменная (высота над уровнем моря) эта величина мне не нужна. Хотя попробую вывести на дисплей (в качестве обучения) Разницу между long и ink пока не понял. Если не затруднит, то напиши альтернативный код.
Ну и насчет обид - поверь мне я ни на кого не дуюсь ( возраст не тот) А осваиваю Арддуино для изучения серьезного проекта
(проект создан не мной) я хочу его внедрить у себя, а точнее адаптировать для местности где я живу. Впереди много работы.
Спасибо за комментарий.
Ну тогда первое и, наверное, самое правельное это поднятся вверх этой страници, нажать ссылку Программирвание и подробно рассмотреть: Справочник языка Ардуино.
Согласен. Чем и занимаюсь в свободное время.
шото я не въехал - в чём вопрос заключался?
Как ты обычно говоришь!? "Здаётся мне, что это не конец, а только начало". Ну так вот и я так думаю.
https://github.com/adafruit/Adafruit-BMP085-Library это раз.
И по поводу кода.
Форматируй все числа перед выводом. Если сначала было например 10 градусов, а потом будет 9, то на экране будет 90.
Зачем 25-я строка?
Спасибо.
Я так понял эта тема для всех вопросов новичков, чтоб не было засилья новых веток.
Задание сделующее: есть 7 светодиодов. Надо сделать так, чтобы они включались в такой последовательности - 123,234,345,456,567,654,543,432,321 и так далее. Нашёл похожий код, но там просто светодиоды бесконечно включаются поочереди от первого до седьмого.
З.Ы. Программирование у меня на уровне новорождённого.
з.ы. Для UNO. Светодиоды висят на портах 0 до 6.
З.Ы. Программирование у меня на уровне новорождённого.
без комментов не разберётся
Упс. Не внимательно прочел условие. Так будет ближе к истине:
Весьма интересный способ. Но я не смогу такое объяснить преподавателю. Можно это как-то реализовать через циклы и ифы?
Вспомнился фильм "Приключения Электроника" и решение задачи через "интрегал".
Ты пытаешься объяснить преподавателю таблицу уиножения, при том что не знаешь таблици сложения.
Была поставлена задача, тебе написали готовый и МАКСИМАЛЬНО ПРОСЬТОЙ код, раскоментировали его...
Давай так: показываешь мне своего профессора, я даю ему сто баксов, он ставит тебе пять за семестр и все про всё забывают. Ты про предмет и про форум, проффесор про тебя и про светодиоды, я про сто баксов.
Есть десятки способов воплотить твою идею, но разочарование в том, что это тебе и нафиг не надо.
Что именно ты не смог пояснить?
Что такое DDRD? Что такое PORTD? B1111111 - это такой стандартный синтактический оборот, или вместо B можно написать A и результат будет совсем другой? Никогда не встречал доселе "<<=", ">>=". Зачем в десятой строке между скобками стоит "||"?
Извините, если раздражаю своей глупостью, знаю как это неприятно. Я бы хотел уметь делать что-то подобное, но как только я начинаю пытаться что-то писать у меня происходит ступор. Не понимаю как правильно написать то, что у меня в голове. На младших курсах кое-как информатику сдал, а теперь вот это...
DDRD это регистр направления передачи данных порта D
PORTD это регистр значений порта D
Порт D это выводы от 0 до 7 ардуино UNO (по биту на каждый вывод)
B1111111 это число 127 записаное в двоичном виде
<< и >> это побитовый сдвиг x << = 1 эквивалентно x = x << 1 (синтаксис Си)
|| это оператор ИЛИ
Учиться не пробовали? Зачем Вам вообще контроллер программировать? Возьмите какой-нибудь бейсик или ещё лучше выучите Си.