Comments 131
С форматированием кода, да, — беда. Однако можно было бы просто отправить автору-переводчику приват, чтобы код завернул в тег code.
Не новичкам, а "ардуинщикам". Учиться надо на нормальных схемах электрических принципиальных, а не на таких картиночках.
P.S. Сам из секты Arduino :D
Чукча не читатель...
Учебник стоит читать, если потом это нужно будет для получения денег/развития своего проекта. А для сборки часов, метеостанции, автоматического лотка для кошки и прочей DIY-мелочевки — зачем?
Перфекционизм он не всегда нужен.
Диагноз: "Ардуинщик" классический.
А для сборки часов, метеостанции, автоматического лотка для кошки и прочей DIY-мелочевки — зачем?
А чьи-то статьи вам зачем для этого тогда читать?
Вполне хватит инструкции в картинках, какой проводок куда вставлять.
(впрочем, многие тут заметят, что по сути «статьи» к этому и сводятся)
Вряд ли кто-то станет отрицать, что инструкцию что от техники, что от таблеток редко кто читает.
Не читать инструкцию к таблеткам. Даже не проглядеть. Не понимаю.
новичкам слишком сложно читать статьи написанные профессионалами
Учиться нынче не в почете? Хоть что-то почитать о тех деталях, из которых собираешься слепить что-то? Ну, например, узнать, что ардуина питается (и выдает на выходы) 5 вольт, а тот же модуль GPS допускает на своих входах максимум 3.6 вольта? :)
В статьях же новичков для новичков зачастую описываются теже грабли, на которые другой новичок может наступить.
А кроме описанной пары граблей молча прикладывается десяток других, неописанных. Просто потому что автор сам не в курсе их существования из-за недостатка знаний.
Да, грабли в статьях от новичков имеются — это неизбежное зло. Однако отмечу, что у автора (оригнал статьи) устройство заработало. Сколько оно проработает — это уже другой вопрос.
Учиться — это труд и это сложно для мозга
Поэтому лучше учить других? Как сделать то, в чем сам не разбираешься? :)
отмечу, что у автора (оригнал статьи) устройство заработало
В чем его заслуги чуть больше нуля.
Учиться — это труд и это сложно для мозга, который старается избежать этого.
Какой у Вас ленивый мозг.
Поэтому лучше учить других?
Тут статья из серии «Смотрите у меня получилось!» и человеку захотелось поделиться. Обучения как такового в статье нет.
В целом, я понимаю точку зрения, что «Работа должна выполняться профессионалом». Однако, в реальном мире в редких областях это действительно так.
Самый жирный минус переводчика, автора статьи на Хабре, в качестве перевода. А это показатель низкого уровня знаний в тематике. А низкий уровень знаний в тематика в отсутствии желания учиться. Хотя зачем учиться, это, по Вашим словам, бесполезная трата времени.
Хотя зачем учиться, это, по Вашим словам, бесполезная трата времени.
Просьба указать сообщение, в котором я такое написал. Если вы имели в виду вот это, то увы, там речь шла про учебник. А читать учебник и учиться — это несколько разные вещи.
С таким подходом и начинать не стоило.
Как минимум учиться по книгам, чтобы повышать свои навыки и умения. А не по картиночках для глупых и копипасту бестолковых программ, не понимая что она делает и почему именно так.
С таким подходом и начинать не стоило.Большая часть того, чем мы занимаемся в свободное от работы и семьи время, вызывает вопросы «зачем, ведь можно купить готовое?», «зачем, ведь другие уже сделали лучше?», «зачем, это не стоит потраченного времени», и т.д.
В результате многие проводят значительную часть жизни, уставившись в телевизор, планшет, или с пивом на лавочке. Это лучше?
А что полезного, в данном случае, даст публикация полной схемы ардуины + гпс-модуля + модуля экрана? Это не несёт ни какого смысла. Никто не полезет внутрь гпс-модуля, всё взаимодейставе идёт на уровне интерфейсов и функциональных блоков. Знать, что D5 ардуины подключён к Rx гпс-ки для понимания работы мне необходимо. Знать номинал резистора в смесителе радиочастотной части гпс — нет. Публикация полной схемы электрической принципиальной только запутает и ухудшит понимание принципов работы прибора, ничего полезного не дав взамен. Вы ещё посетуйте, что прошивку в хекс-кодах не опубликовали в статье, как это было принято в журнале "коневодство" (то, есть, простите, "радио"). Да и то там это просто вынужденно делали...
Вы, должно быть, чересчур умны, чтобы заметить это, но на иллюстрации изображена именно схема соединений, дорогое невоспитанное подзаборное хамло.
Я никому не хамил в отличие от Вас. Ещё надо посмотреть кто из нас необразованное и невоспитанное подзаборное хамло.
И в отличие от Вас, я действительно образован и умен.
P.S> Да и на самом деле, зря вы нападает на среду ардуино. На самом деле очень изюмительная штука, когда надо пощупать что то быстро и без разбора в регистрах нового датчика, просто взял — включил и оно работает. Я так множество датчиков тестирую. Это очень удобно, да и плюс все датчики и сенсоры что продаются на али, все уже изначально подготовлены под интерфейс ардуины, взял проводки воткнул и все завертелось.
З.Ы.
Зная, как пишут библиотеки для Ардуино, у Вас вряд ли получится использовать все характеристики датчика не изучая его регистры. Вот мне не составляет проблемы быстро накидать программу без среды Ардуино для проверки работы внешних датчиков, исполнительных устройств и т.д.
Мне Вас немного жаль, раз Вы так тестируете.
В статье именно цветная картиночках и никакого отношения к схеме она не имеет.
А, то есть вы даже не знаете как выглядят схемы соединений? Тогда понятно, почему вместо конструктивных аргументов вы используете личные оскорбления. Умище так и прёт, так и прёт!
Я никому не хамил
Вы не только хамло позорное, но и брехло подзаборное.
Давайте просто процитирую :
вернитесь в ясли малолетний «ардуинолюб
Сколько же вас «ардуинолюбов» бестолковых?!
Статьи из серии «Смотрите, что я сделаль, а оно ещё и работает!
Какой у Вас ленивый мозг.
Диагноз: "Ардуинщик" классический.
Чукча не читатель…
"Ардуинщик" неразумный взялся за перевод статьи
Собственно, ничего иного, кроме оскорблений окружающих и хамства вы в теме не написали. Поздравляю вас, вы — брехливое хамло.
в отличие от Вас, я действительно образован и умен.
Более искушены в хамстве и вранье, это точно. Но тут меня не сложно победить, да я пытаться не буду — слаб я в этом, не то, что вы, такой умище, что не можете схему соединений не то, что прочесть, но даже опознать! Фу, позорище.
Как раз в отличие от Вас я знаю, как выглядит схема соединений. В отличие от Вас схемы электрические разных видов за моим авторством проходили нормаконтроль и проверку военпредов. Так кто из нас неуч?
Ах, Вас задевают "Ардуинщик" и "Ардуинолюб", ну извините, пока Вы и такие же как Вы необразованные товарищи будете писать безграмотные статьи, я называл и буду так продолжать называть все ваше сборище.
Есть определенные стандарты схем. А то что кто-то продвигает свой вид «схем» — это «я художник, я так вижу».
Вот бы еще питание от солнечной панели и всё залить эпоксидной смолой. Полная автономность, походность… Хватит питания?
Питания-то хватит, только сначала надо вот эту наколенную поделку выкинуть целиком и сделать нормально.
У дешёвого 3-дюймового графического e-ink обновление части экрана занимает 300 мс, жрёт он при этом в пределах 10 мА, обновлять надо раз в минуту одну цифру, раз в 10 минут две цифры, etc.
GPS более чем достаточно включать раз в неделю на пару минут.
Всё остальное время потребление всего этого хозяйства < 10 мкА.
А работать нормально оно всё равно не будет, потому что в типовом железобетонном доме ставить часы придётся на окно, чтобы они что-то там поймали хотя бы теоретически.
За неделю RTC на обычном часовом кварце может и убежать довольно сильно :)
void loop() {
// put your main code here, to run repeatedly:
readGPSData(1000);
updateTime();
displayTime();
delay(59000);
}Аффтар проверяет время каждые 59 секунд, то есть, его часы by design имеют отставание до 1 минуты. На ровном месте.
А мы тут кварцами меряемся.
Upd. А хотя ладно, дальше он кладёт в системные часы и секунды тоже, а ещё дальше берёт время из них. Но зачем тогда ежеминутно дёргать GPS? Ну или, наоборот, зачем эта задержка в 59 секунд, когда просто сиди да читай что тебе GPS сам в консоль сыпет? Загадки, одни загадки.
Автор, похоже, из того же лагеря ардуинистов, что и little-brother — не учиться же, напрягая мозг и себя, в самом деле-то…
То есть наворочен какой-то код, который, видимо, автору казался логичным и нужным, но есть очень серьёзные сомнения, что даже он сам сможет объяснить, почему он ему таким казался.
readGPSData ( 1000 );
Время обновления();
displayTime ();
задержка ( 59000 );
Ну почему нельзя нормально перевести даже такую короткую заметку?
e-Paper (электронно переворачиваемые «листы» бумаги с цифрами)
серийный номер программного обеспечения для приема данных с модуля GPS, отображение e-Paper
4-строчный SPI для связи
Или переводчик не владеет тематикой — тогда зачем браться? Или перевод сделан по принципу «вот вам гуглоперевод, отстаньте от меня» — тогда зачем вообще его публиковать?
И откуда в последнее время пошла мода кое-как переводить всякую ерунду с hackaday.io? Без знаний по теме, без какой-либо изюминки, без хоть какого-то старания… Зачем оно здесь?
Чему тут удивляться. "Ардуинщик" неразумный взялся за перевод статьи. И таких все больше и больше. Тут возникает вопрос, как такие статьи из песочницы пропускают.
И откуда в последнее время пошла мода кое-как переводить всякую ерунду с hackaday.io? Без знаний по теме, без какой-либо изюминки, без хоть какого-то старания… Зачем оно здесь?
Публикуешь пять бессмысленных переводов гуглотранслейтом — и вот уже можно называть себя «регулярный автор популярного ресурса Хабрахабр» и соваться в корпоративные блоги с предложением за денежку малую…
С другой стороны, вот за этот опус ему уже чуть-чуть в карму да капнуло, будет упорен в глулотранслейте и научится поменьше лажать в технических вещах («Время обновления();») — да норм, за несколько месяцев карму в +NN вытащит, а там можно и услуги начать предлагать, если бедненько — то через фрилансерские биржи, а там и прямые выходы в PR-отделы появятся.
А я вот во вполне технологической области реально и лично знаю человека, который везде выступает как видный эксперт просто потому, что ему однажды зачем-то захотелось прослыть экспертом в этой области. Дальше всё по накатанной — завёл страницу во вконтакте, канал в телеге, стал копипастить туда новости по теме, начал везде подписываться экспертом. В области, в которой он эксперт, он сам при этом руками делает ровным счётом ничего и опыт имеет ровным счётом никакой.
Но кто-то вот на подработку на написании текстов карму набирает, а кого-то уже и СМИ периодически цитируют.
P.S> А можно Вам в личку пару вопросов задать?) Вы вроде с нордиками плотно работаете… Я тут с ними играюсь и че та встрял… А дев зон гады молчат (
задержка ( 59000 );
Спасибо за хорошее настроение с утра!
Браво, вы прекрасны.
ИМХО, все переводы с hackaday надо запретить. Ибо какой смысл читать одно и то же в двух местах.
/*
Self-adjusting clock for CET time zone with DST
by kk99
2018
*/
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
#include <SPI.h>
#include <U8g2lib.h>
#include <Timezone.h>
#include <Arduino.h>
// GPS handle
TinyGPSPlus gps;
// EDP handle
U8G2_IL3820_V2_296X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
// Central European Time
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120}; // Central European Summer Time
TimeChangeRule CET = {"CET ", Last, Sun, Oct, 3, 60}; // Central European Standard Time
Timezone CE(CEST, CET);
TimeChangeRule *tcr;
// Serial handle
SoftwareSerial softSerial(3, 2);
void setup() {
// put your setup code here, to run once:
u8g2.begin();
softSerial.begin(9600);
setTime(00, 00, 00, 01, 01, 1970);
}
void loop() {
// put your main code here, to run repeatedly:
readGPSData(1000);
updateTime();
displayTime();
delay(59000);
}
static void readGPSData(unsigned long timeoutMs)
{
unsigned long start = millis();
do
{
while (softSerial.available())
gps.encode(softSerial.read());
} while (millis() - start < timeoutMs);
}
static void updateTime(void) {
if (gps.time.isValid() && gps.date.isValid()) {
setTime(gps.time.hour(), gps.time.minute(), gps.time.second(), gps.date.day(), gps.date.month(), gps.date.year());
}
}
static void displayTime(void)
{
const unsigned timeLength = 6;
char timeValue[timeLength];
time_t utc = now();
time_t local = CE.toLocal(utc, &tcr);
snprintf(timeValue, timeLength, "%02d:%02d", hour(local), minute(local));
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_logisoso78_tn);
u8g2.drawStr(26, 103, timeValue);
} while (u8g2.nextPage());
}
Что мешало сделать так
Гуглотранслейт так не умеет.
алг читатьДанныеГЛОНАСС (арг цел таймаутМс)
нач
цел старт
старт := миллис()
нц
нц пока мягкийПоследовательный.доступен()
глонасс.кодировать(мягкийПоследовательный.читать())
кц
кц пока (миллис — старт < таймаутМс )
кон
Исходная статья — не стоила затрат времени автора и нас и затрат энергии на работу всех задействованных вычислительных средств.
gps.time.isValid () в TinyGPS++ выдаёт True при значении 00:00, а именно нули выдаёт NEO при отсутствии связи со спутниками, со всеми вытекающими. Эти часы при отсутствии спутников будут показывать нули, а не неточное время. Странно, что ни один из популярных парсеров NMEA для Arduino не использует статус из $GPRMC для определения достоверности данных. («A» — статус: «A» — данные достоверны, «V» — недостоверны.) В итоге плюнул на все эти парсеры.
Странно, что ни один из популярных парсеров NMEA для Arduino не использует статус из $GPRMC для определения достоверности данных
Я сегодня прямо весь день хожу и всем советую прекрасную футболку.
Вот опять же, интересно, а что конкретно авторов этих парсеров побудило так делать?..
Сравнивать несколько показаний с заданным интервалом?
Смотреть на количество видимых спутников в $GPGSV?
Но 1PPS, если нужно точное время, надо ловить в любом случае, потому как именно по его фронту определяется время, отданное позже в том же RMC. 1PPS можно игнорировать, если доли секунды роли не играют.
Включение:
$GPRMC,235954.970,V,,,,,0.00,0.00,050180,,,N*43
Увидел один спутник, время стало правильным, дата изменилась, но опять неправильная:
$GPRMC,141524.094,V,,,,,0.00,0.00,110180,,,N*4E
Увидел несколько спутников (в т.ч. ГЛОНАСС, поэтому GPRMC сменилось на GNRMC), время и дата правильные, но координат пока нет:
$GNRMC,141709.078,V,,,,,42.33,255.93,030519,,,N*66
Короче, до фиксации координат никто ничего не гарантирует. Более того, NMEA 0183 подразумевает, что поля времени и даты в RMC без координат тупо не имеют смысла — т.к. это время собственно фиксации данных координат.
Какую-то эмпирику, не связанную с явным признаком валидности, можно использовать только на конкретной модели приёмника с конкретной версией прошивки.
Хотите, чтобы гарантированно работало на всех приёмниках — ждите «A» в RMC и строба 1PPS.


Самонастраивающиеся часы с электронным дисплеем