Часы на DS1307
- Войдите на сайт для отправки комментариев
Ср, 03/04/2013 - 08:07
Привет всем не как не могу разобраться часами на DS1307 собрал схему
в одном месте написано к аналоговому входу подключать 4-5 тока не пойму как они от него программируются и должны работать
в другом месте к sda- scl
#include <WProgram.h> #include <Wire.h> #include <DS1307.h> int rtc[7]; int ledPin = 13; void setup() { DDRC|=_BV(2) |_BV(3); // POWER:Vcc Gnd PORTC |=_BV(3); // VCC PINC3 pinMode(ledPin, OUTPUT); Serial.begin(9600); RTC.stop(); RTC.set(DS1307_SEC,1); RTC.set(DS1307_MIN,57); RTC.set(DS1307_HR,17); RTC.set(DS1307_DOW,2); RTC.set(DS1307_DATE,18); RTC.set(DS1307_MTH,1); RTC.set(DS1307_YR,10); RTC.start(); } void loop() { RTC.get(rtc,true); for(int i=0; i<7; i++) { Serial.print(rtc[i]); Serial.print(" "); } Serial.println(); digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); delay(500); }
вот код но почему он ругается на RTC.stop();
Объясните пожалуйста всё процедуру как запустить часы и чтобы они отображались в сериал
Вы как бы и не первый день на форуме.
Невозможно найти то, чего нет. Но! Темы три точно есть по часам. Там и найдете все, что интересует!
ОТ И ДО! Не ленитесь пожалуйста! :)))
Темы на форуме я их читал но всё равно не могу понять ,видимо что то я пропустил?
Конечно пропустили - не скачали или скачали не ту библиотеку, скачали библиотеку не работающую с данной версией IDE, не правильно ее распаковали или не туда положили.
А еще не плохо было бы показывать и нам что у вас там за ошибки.
Так же ко всему данный код для версий IDE 0023 и ниже , если у вас 1.0 и выше, то укакзавать надо не #include <WProgram.h> ,а #include <Arduino.h>.
Я так предпологаю так у вас ругается - http://arduino.ru/forum/programmirovanie/ds1307#comment-24452, а точнее http://arduino.ru/forum/programmirovanie/ds1307-pokazyvayut-strannoe-vremya-kotoroe-stoit#comment-22660
Так вот эта тема первая в поиске по сайту по запросу "DS1307", и в ней же есть решение http://arduino.ru/forum/programmirovanie/ds1307-pokazyvayut-strannoe-vremya-kotoroe-stoit#comment-22002
Так что можно сделать вывод что вы вообще не искали прежде чем создать новую тему или поленились почитать найденые ветки.
С библиотекой я уже разобрался её просто там не было это всё моя не внимательность
Эту <DS1307.h> библиотеку нашел установил
А вот эту найти не получается найти <WProgram.h>
Подскажите где её скачать?
Не надо ее искать перечитайте второй обзац сообщения #3.
Сделал так в сериал идут нули чесы не тикают
0 0 0 0 0 0 2000
А вот так пишет ошибка
sketch_apr03a.cpp:5:2: error: invalid preprocessing directive #eldif
sketch_apr03a.cpp:1:1: error: unterminated #else
Не могу понять как чесы стартуют через аналоговый вход
Не видимо я опять что то напутал
А вот так пишет ошибка
sketch_apr03a.cpp:5:2: error: invalid preprocessing directive #eldif
Ну вот так, надо быть внимательней
Вот такой скетчик из той библы
Не хотят часики тикать отображает в сериал
0 0 0 0 0 2000
И всё тут,
3v с батер есть 5v тоже резисторы стоят
Не понимаю что не так?
За тикали)))
Привет всем помогите пожалуйста мне с кодам как то он не корректно работает точнее он работает когда включаешь сериал монитор.
Суть кода такова устройства будит включатся и выключатся каждый день в заданное время даже если были сбои по основному питанию
Поправьте пожалуйста код
RTC.start();
А Вам их точно надо каждый раз стартовать заново?
Ой нет это я проморгал
Подскажите пожалуйста как сделать так чтобы при отправки в сериал соединения 10-20
Чтобы устройство включалось на 10 и выключалось на 20 сек и чтобы этот цикл прописывался в энергонезависимую память ,
И если на ардуино выключить и включить питания чтобы этот if((x>10)&&(x<20))
Читался из памяти и выполнял те же действия на 10 – 20 сек
И соответственно если мы отправляем 30-40 то это время включения устройства также прописывается в энергонезависимой памяти и приключения ардуино включает устройства на 30-40 сек/час
http://arduino.ru/forum/obshchii/izmenenie-vremeni-taimera-na-ds1307#comment-28970 этот пример можно под ваши нужды переделать.
да с этим мне разбираться и разбираться
Привет подскажите как вот с этой штукой разобраться.
Как сделать синхронизацию часиков через GPS.
Я взял модуль TIV-ST-0-000 подключил его отправил на него команды для запуска и он мне стал присылать данные вот только я не как не могу разобраться где тут дата и время
И как мне это всё синхронизировать с часами
Подскажите пожалуйста
Оно? http://ru.wikipedia.org/wiki/NMEA_0183
Что то с трудом верится, что это синхронизация по времени, это навигационные данные, IMHO.
Дак да это приёмник GPS сигнала там координаты и должно быть время и дата как я полагаю
Да это то что нужно спасибо
Дак да это приёмник GPS сигнала там координаты и должно быть время и дата как я полагаю
Судя по описанию полей:
073339.115 - это время 07 часов 33
минуты 39.115 секунд
230513 - это дата 23 мая 13 года.
Вот как это на сях распарсить и натолкать в массив данных - не подскажу.
В awk или perl - делается достаточно просто.С этим та я разобрался , а вот как мне данные синхронизировать в часы реального времени
Вопрос в том как мне извлечь определенные цифры из строки
$GPRMC,113445.271,A,5672.2457,N,06095.7650,E,0.10,385.78,230513,,*04
11 34 45
23 05 13
Я думаю как то так нужно сделать но не знаю как реализовать.
Считываем строку с сериал соединения и сохраняем в переменную Х 8 и 9 знак
в W 10 и 11 знак
$ G P R M C , 1 1 3 4 4 5 . 2 7 1,A,5672.2457,N,0
1 2 3 4 5 6 7 8 9 10 11 12
Я думаю как то так нужно сделать но не знаю как реализовать.
Используя запятую в качестве сепаратора надо получить из строки массив из 12 полей, после чего у нас в двух элементах массива будут лежать искомые строки с временем и датой. Второй итерацией через substr() разбиваем, например, "
073339.115" на три фрагмента по два знака, отбрасывая дробную часть секунд.
Если это делать на компьютере - то там все просто:
Получаем:
07:33:39.115 23-05-2013
только поотнимать 0х30 надо будет.
Описание протоклоа на русском:
http://nvs-gnss.ru/support/communications-protocol/item/30-nmea.html
А на счет выделения из строки данных можно почитать, например, здесь:
http://arduino.ru/forum/programmirovanie/strengh-sscanf
Я это всё на ардуине пытаюсь собрать
А по ссылкам слабо пройтись? Ок, удачи!
- Ты в баню?
- Нет, в баню!
- Аааа, я думал в баню
Привет всем , а можно как то более по подробней, а то для меня это сложно по одной строке разобраться
легче считать посылку в обычный буфер, и обращаться к нужным элементам по номерам. buff[x]
легче считать посылку в обычный буфер, и обращаться к нужным элементам по номерам. buff[x]
Это если строка строго по позициям разбита, а здесь формат плавающий
Раздробить строку получилось , а вот как числа разделить подскажи пожалуйста?
строка
$GPRMC,072653.700,A,56
Раздробленная строка
$GPRMC
072653.700
A
56
Разделённые числа
07
26
53.700
Подсказка помогла спасиб, а вот дальше как?
Как мне это число раздробить по частям 072653.700 чтобы получилось 07 26 53?
Как мне это число раздробить по частям 072653.700 чтобы получилось 07 26 53?
substring(pos1, pos2); не помогает?
http://arduino.cc/en/Tutorial/StringSubstring - на редкость бестолково описана функция, но уж что есть - то есть...
Как мне это число раздробить по частям 072653.700 чтобы получилось 07 26 53?
substring(pos1, pos2); не помогает?
http://arduino.cc/en/Tutorial/StringSubstring - на редкость бестолково описана функция, но уж что есть - то есть...
Привет в этом примере я так и не смог разобраться
Как мне это число раздробить по частям 072653.700 чтобы получилось 07 26 53?
Привет в этом примере я так и не смог разобраться
Ну, смотрите:
Ваша строка: 072653.700
Позиции: 0123456789 (иногда нумеруют начиная с единицы - это надо проверять, т.к. пишут все как попало...)
Функция позволяет вырезать определенный фрагмент, т.е. в переменную A загнать кусочек строки (например с позиции 0 по позицию 1) и так далее. Да, там по ссылке в примере слово "текст" (на английском!) из пяти букв, так что готовьтесь к тому, что придется проверять - правильно ли оно вырезает фрагменты из строки. :)
Почему у меня этот код пишет ошибку, что в нём не хватает?
sketch_may26c.cpp: In function 'void setup()':
sketch_may26c:3: error: no match for 'operator!' in '!Serial'
sketch_may26c.cpp:7: note: candidates are: operator!(bool) <built-in>
Удалите 4, 5 и 6 строки.
Удалять я удалял но он не работает или я что то не то делаю
Я отправляю в сериал символы а в ответ тишина
Максим подскажи пожалуйста с кодам.
Я пытаюсь синхронизировать часы на микросхеме DS1307 с помощью GPS приёмника .
Подключил GPS приёмник скинул на него настройки и он мне стал выдавать строку
$GPRMC,113445.271,A,5672.2457,N,06095.7650,E,0.10,385.78,230513,,*04
Время дата
Причём это строка может уменьшатся и увеличиваться в размерах из за координат поэтом у я её раздробил по частям
С помощью этого кода я разобрал строку по частям.
и у меня получилась так
$GPRMC,
113445.271,
A,
А для синхронизации мне нужно время и дату разобрать на двоичные числа
Разделить по частям
11 час
34 мин
45 сек
Привет все вроде бы вот с этой примером разобрался.
Но не как не могу сообразить как мне не сверять значения между 20,21, а сохранять
Что бы патом выводить Serial.println("");
Подскажите пожалуйста как это сделать?
Как то вот так должно быть но у меня почему та в сериал просто приходит 0
всё работает. сериал нормально работает?
Вот что он выдаёт
asdfghjytrewqasdfghy100qawsedrft
0
asdfghjytrewqasdfghy100qawsedrft
0
asdfghjytrewqasdfghy100qawsedrft
0
asdfghjytrewqasdfghy100qawsedrft
Вместо нуля должно быть 100
у меня 100. а asd как объявлен?