|
-
- это CraftDuino - наш вариант полностью Arduino-совместимой платы.
-
CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
-
Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
|
Просто добавьте CraftDuino!
подписаться на RSS-ленту
Комментарии (16)
RSS свернуть / развернутьnoonv
Теперь надо разобраться как это подключить и программку навоять
вот еще
vqd
А Delay вообще использовать последнее дело=) Как вы правильно заметили МК на это время самым тунеядским делом простаивает — непорядок!
Если показометрических функций достаточно то можно применить
millis();
или
micros();
почитать про эти функции можно тут
Пример в Arduino IDE — «Blink without Delay».
А вообще тут с таймером(ми) работать надо, Wiring такого не умеет, надо в нормальном компиляторе на чистом С ваять.
Zoltberg
vqd
SWAT
Zoltberg
Собрал на DS1307N
За 12 часов часы убежали вперед на 3 секунды. В принципе можно согласно документации еще подстройку сделать и добиться более точного хода. Но лично меня такая точность полностью удовлетворяет.
Если надо то могу выложить фото и код программы.
vqd
SWAT
Программа сразу же начинает выводить данные на LCD и смотрит COM порт. Как только в порту появляется символ R то программа загоняет в микросхему новые данные о времени и дате.
Формат данный с COM должен быть сл. R'секунды''минуты'часы'01'число'месяц'год' (01- я пока не понял что за указатель)
Например R00101301010110 — 13:10:00 01/01/2010
Почиму то в моем варианте секунды не воспринимаются и чип в любом случае выставляет 00
#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>
#include <LiquidCrystalRus.h>
LiquidCrystalRus lcd(4, 3, 2, 5, 6, 8, 7);
int rtc[7];
void setup()
{
Serial.begin(9600);
}
void loop()
{
int r = Serial.read();
if (r=='R') ds1307_set();
RTC.get(rtc,true);
for(int i=2; i>=0; i--) //Получаем время, подставляем '0' для удобства и ставим ':'
{
if (rtc[i]<10) lcd.print(«0»);
lcd.print(rtc[i]);
if (i>0) lcd.print(":");
}
lcd.setCursor(0,1); //Переводим курсор на вторую строчку
for (int i=4;i<=6;i++)
{
if (rtc[i]<10) lcd.print(«0»); //Получаем дату, подставляем '0' для удобства и ставим '/'
lcd.print(rtc[i]);
if (i<6) lcd.print("/");
}
delay(900);
lcd.clear();
}
void ds1307_set() //отправляем данные в DS1307
{
RTC.stop();
int k = Serial.available();
for (int l=0; l<=k/2-1; l++)
{
int b1 = Serial.read();
int b2 = Serial.read();
RTC.set(l, (b1-48)*10+(b2-48));
}
RTC.start();
}
фото тут —
vqd
Если с моим кодом в 8к влезет — тоже расписание сделаю.
boa
vqd
boa
Полностью синхронизацию завтра думаю добью а пока есть код для получения даты и времени
Покритикуйте пожалуйста
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 45 }; //IP Arduino
byte mask[] = {255, 255, 255, 0};
byte gw[] = {192, 168, 0, 1};
byte server[] = { 192, 43, 244, 18 }; // time.nist.gov
Client client(server, 13); //порт
void setup()
{
Ethernet.begin(mac, ip, gw, mask);
Serial.begin(9600);
delay(1000);
Serial.println(«connecting...»);
if (client.connect()) {
Serial.println(«connected»);
} else {
Serial.println(«connection failed»);
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print©;
}
if (!client.connected()) {
Serial.println();
Serial.println(«disconnecting.»);
client.stop();
for(;;)
;
}
}
vqd
PS кстати, код лучше обрамлять тегами
и думаю, что будет логично для обсуждения темы ethernet создать отдельную тему ;)
noonv
noonv
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.