Помогите начинаюшему
- Войдите на сайт для отправки комментариев
Чт, 26/02/2015 - 14:29
Пытаюсь освоить ардуино ...
Хочу выводить время температуру и влажность на дисплей от Nokia 5110 c температурой и влажностью все норм нашел рабочий код а вот со временем не совсем... не могу его вывести на дисплей только на ком порт получаеться..
что надо изменить в коде?
Посоветуйте литературку для начинаюших)
датчик темпереатуры dht11
модуль реального времени на основе DS3231
#include <LCD5110_Basic.h>
#include <dht11.h>
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
LCD5110 myGLCD(8, 9, 10, 11, 12);
dht11 sensor;
tmElements_t tm;
extern uint8_t SmallFont[];
extern uint8_t BigNumbers[];
void setup()
{
myGLCD.InitLCD(63);
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println("");
Serial.println("-------------------");
}
void loop()
{
sensor.read(7);
myGLCD.clrScr();
myGLCD.setFont(BigNumbers);
myGLCD.printNumI(sensor.temperature , LEFT, 0);
myGLCD.printNumI(sensor.humidity, 45, 0);
myGLCD.setFont(SmallFont);
myGLCD.print("C", 30, 20);
myGLCD.print("%", 75, 20);
myGLCD.print("12", CENTER, 38);
delay(1000);
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print("Ok, Time = ");
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println("The DS1307 is stopped. Please run the SetTime");
Serial.println("example to initialize the time and begin running.");
Serial.println();
} else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
delay(9000);
}
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}
Я с этим дисплеем не работал, значит могу ошибатся. Для начала научитесь вставлять код http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
чтобы люди не бегали по всей портянке и могли ссылатся на конкретные строки. Далее разберитесь с системой команд дисплея
myGLCD.clrScr();
Если RTC DS3231, то почему используете библиотеку от DS1307. Они не совместимы.
Я пользовал эту https://github.com/NorthernWidget/DS3231
Примеры внутри библиотеки
Sim0012 а какую плату arduino вы использовали? а то у меня Arduino Nano v3.0
Мне нужно чтоб работал компас и барометр с температурой, вроде все само по сибе работает(Монитор последовательности порта) но увязать два датчика с выводом на экран не могу. Я вообще совсем новичек так что незнаю даже с чего начать изучение чтоб последовательно все освоить :)
Sim0012 а какую плату arduino вы использовали? а то у меня Arduino Nano v3.0
Мне нужно чтоб работал компас и барометр с температурой, вроде все само по сибе работает(Монитор последовательности порта) но увязать два датчика с выводом на экран не могу. Я вообще совсем новичек так что незнаю даже с чего начать изучение чтоб последовательно все освоить :)
Начните вот с этого http://arduino.ru/Reference
И найдите У.Соммер "Програмирование микроконтроллерных плат Arduino/Freeduino". Ток начать придется с мигания светодиодм, а не с боевых дронов и звезд смерти.
Да, и шрифт нормальный поставьте.
Использую uno китайскую
В этой статье http://ardushop.ru/kak-podklyuchit-chasy-realnogo-vremeni-k-arduino/ говориться что они полностью совместимы. И у меня на компорт верное время выдаеться
А код который пишется он подходит ко всем платам, например если написан для Nano а применять на Uno, Mega, Pro mini и т.п. или на оборот?
А код который пишется он подходит ко всем платам, например если написан для Nano а применять на Uno, Mega, Pro mini и т.п. или на оборот?
В большинстве случаев да, но возможно придется дорабатывать если другой МК. Нано, UNO, Pro mini между собой скорее всего без проблем, а вот для Меги уже может не подойти (нужно дорабатывать)
Если использовать мощные сервоприводи то желательно питание реализовать отдельно, не через USB? И если в спецификации платы указано питание 6-20в то можно спокойно подавать в данных пределах или лучше среднее что то вывести.
На плату лучше не превышать 12В иначе могут сдохнуть ее стабилизаторы. USB только для экспериментов с оглядкой. Сервы двигатели реле только отдельное, кроме токов меньше помех по цифровым сетям.
Я случайно кз своей ардуино сделал, все работает нормально но теперь только с дополнительным питанием , с USB не хватает светодиод L на плате горит очень тускло. То что в этом случаи вышло из строя на платы?
Sim0012 Посмотри ветку форума "Русские символы LCD5110" в "Общие", может что-нибудь поможет тебе...
нашел код для определения влажности почвы
и пытаюсь переделать его под дисплей нокиа 5110 но чтото не выходит(( Посмотрите что не так ))
пишет
после void loop() открывающаяся фигурная скобка
Теперь вообще целуу гору ошибок выдает((
Вы пытаетесь методами класса LiquidCrystal рулить в классе LCD5110. А там методы совершенно другие, нет там никаких setCursor, print имеет 3 операнда, а не один.
Для меня это пока аброкадабра(( Где можно поподробнее узнать?
Sim0012 Посмотри ветку форума "Русские символы LCD5110" в "Общие", может что-нибудь поможет тебе...
А как сделать чтобы при определенной влажности включалось релле?
Чтото вот это не хочет работать
Вроде разобрался)
digitalWrite(7, (analogRead(2) > 200));
вместо if-else
А как снимать показания с датчика влажности почвы раз в минуту а не постоянно?
if (millis()%60000==0) digitalWrite(7, (analogRead(2) > 200));
снимать и записывать
Использую вот такой вт датчик влажности почвы и на него все время подаеться напряжение((( с эти можно чтото сделать?
if (millis()%60000==0) digitalWrite(7, (analogRead(2) > 200));
снимать и записывать
В отделном скетче все работает . А когда совмещаю нет((( Что может быть?
Из-за delay (1000) значение кратное millis()%3000 попадает в пропускаемый диапазон и ничего не работает. предложенный мной метод не работает если есть функции delay(), или программа достаточно большая. перед delay (1000) сделайте:
if (Counter++ == 0) digitalWrite(7,(analogRead(2)>200);
if (Counter >= 3) Counter=0;
добавьте к int d;
int d, Counter=0;
Захотелось большего) Чтобы в определенный промежуток времени датчик работал... нашел скетч для управления аквариумом и обрезал его
Но у меня возникла проблемма . Там используеться другая библиотека <DS1307.h> хоть и с такимже название. Как можно переделать скетч?
Привести переменные двух библиотек в соответствие между собой.
Привести переменные двух библиотек в соответствие между собой.
А можно наглядно?) то что то не пойму(((
Привести переменные двух библиотек в соответствие между собой.
А можно наглядно?) то что то не пойму(((
Нету у меня ваших библиотек. По коду - ключевая строка 35. Посмотрите, как получить значение "hr" с вашей библиотекой и измените эту строку. Больше вроде часы нигде не играют (кроме инициации).
Привести переменные двух библиотек в соответствие между собой.
А можно наглядно?) то что то не пойму(((
Нету у меня ваших библиотек. По коду - ключевая строка 35. Посмотрите, как получить значение "hr" с вашей библиотекой и измените эту строку. Больше вроде часы нигде не играют (кроме инициации).
Спасибо)) Буду пытаться)
где подвох?
Мне кажется вы сильно резко поступаете в 6 строке. Я пока стараюсь в дебри структур не лезть (без понимания, что там происходит). У меня библа для аппаратного I2C и данные получаю таким способом - Hour=(RTC.get(DS1307_HR,true));. Далее работаю с переменной "Hour". В стандартном примере как у вас данные берутся?
Мне кажется вы сильно резко поступаете в 6 строке. Я пока стараюсь в дебри структур не лезть (без понимания, что там происходит). У меня библа для аппаратного I2C и данные получаю таким способом - Hour=(RTC.get(DS1307_HR,true));. Далее работаю с переменной "Hour". В стандартном примере как у вас данные берутся?
Я пока толком и сам не разобрался у меня есть 2 кода и я их пытаюсь совместить)
Мне кажется вы сильно резко поступаете в 6 строке. Я пока стараюсь в дебри структур не лезть (без понимания, что там происходит). У меня библа для аппаратного I2C и данные получаю таким способом - Hour=(RTC.get(DS1307_HR,true));. Далее работаю с переменной "Hour". В стандартном примере как у вас данные берутся?
Я пока толком и сам не разобрался у меня есть 2 кода и я их пытаюсь совместить)
Сбросьте стандартный рабочий пример из вашей библиотеки.
где подвох?
две пременные с одним именем, но с разным типом данных. Одна глобальная, вторая локальная. Пытаетесь в целочисленную переменную затолкать структуру. А потом работать все-равно отращаетесь как к целочисленной.
По чему с 4 мя датчиками и релле все нормально работает, а с 3мя хрень какаято
с 4мя
с 3мя
Для меня не понятно, что первый-то кусок кода делает
но во втором бы 3 заменил на 2 у сравнения счетчика
Ребят подскжите еще пожалуйсто) что-то не получаеться... есть 3 датчика влажности они должны открывать клаппан и включать нассос. в этом коде вроде все работает
А вот если вставлять его во весь код то както некорректо... Как правильнее будет написать?
не в тему. А можно ардуино к ноту подключить?
не в тему. Можно, многие уже подключили.....
но как что я малость не понял сом порта нет на ноуте
но как что я малость не понял сом порта нет на ноуте
А к дуине у вас кабель для com порта прилагается?
Oбычный USB. В прграмме Arduino IDE есть дрова но бук их игнорирует.
Oбычный USB. В прграмме Arduino IDE есть дрова но бук их игнорирует.
Здесь по форуму поищите, несколько тем было с такой же проблемой. Вроде у всех разрулилось.
А если по теме?)
Oбычный USB. В прграмме Arduino IDE есть дрова но бук их игнорирует.
у меня была таже беда пока все усб порты не освободил дуина не подключалась.