ГРИ часы под управлением ESP8266

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Вт май 22, 2012 16:50:34

Сообщение ksv2109 »

С этим я разобрался,
но при подключении 6 ГРИ , к примеру ИН-12, необходимо будет добавить еще пару 595,
а как это прописать пока не представляю
Необходимо будет наверное добавить:
uint8_t Btt6 = 0
uint8_t Btt7 = 0
и потом уже по разрядно описать цифры в масиве
Ну как то так я понял, сравнивая несколько скетчей

Пока писал ответ пришел еще один ответ :)
чу чуть начинаю понимать,
значит надо добавить информацию о доп регистрах (насчитал пять мест)
и разложить значение на выходах в соответствии с "потребностями"
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

Сообщение ВНН »

Правильно.
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк

Сообщение RoboC »

Думаю, если позволяет место, то просто по 2 регистра на цифру завести. 12 микросхем.
Для каждой цифры сдвигать по 2 байта :)
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

Сообщение ВНН »

Не вижу смысла .
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк

Сообщение RoboC »

Иначе маской придется накладывать каждую цифру.
Точки, скорее всего, так же захочется + 1 бит
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Контактная информация:
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 347
Зарегистрирован: Сб дек 13, 2008 09:03:43
Откуда: г.Советская Гавань

Сообщение ВНН »

Ну какой маской :
Для единиц минут (согласно схемы http://radiokot.ru/circuit/digital/home/238/05.gif )
case 0:
Btt0 = Btt0 + 0b10000000; 0 единиц минут подключен к выводу Q7 первого регистра
break;
case 1:
Btt1 = Btt1 + 0b00100000;1 единиц минут подключен к выводу Q5 второго регистра
break;
case 2:
Btt1 = Btt1 + 0b01000000;2 единиц минут подключен к выводу Q6 второго регистра
break;
case 3:
Btt1 = Btt1 + 0b10000000;3 единиц минут подключен к выводу Q7 второго регистра
break;
case 4:
Btt0 = Btt0 + 0b00000010;4 единиц минут подключен к выводу Q1 первого регистра и.т.д для всех знакомест
break;
Я тоже белый и пушистый и также как и Вы ловлю мышей.
С уважением ВНН.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк

Сообщение RoboC »

Код: Выделить всё

Btt1 = Btt1 + 0b00100000;
Btt1 = Btt1 + 0b01000000;
это и есть наложение маски :)

иначе было бы так

Btt1 =массив для цифры[цифра1];
сдвинуть
Btt1 =массив для цифры[цифра2];
сдвинуть
и.т.д. для 4 цифр
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Вт май 22, 2012 16:50:34

Сообщение ksv2109 »

Ну в общем на выходных соберу макетку, в виде небольшого шильда,
и буду пробовать изучать азы программирования :)
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Вт май 22, 2012 16:50:34

Сообщение ksv2109 »

Доброго времени суток
поизучал немного ардуину,
свою "хотелку" процентов на 80 удовлетворил
не смог побороть шим на ESP, больше 128 вольт не получил, менял и частоту и скважность.....
в общем собрал высоковольтник на МС3406
пару фоток

Изображение Изображение

конструкция не окончательная, вместо секундных индикаторов будут инс-1 по кругу стоять :)
Мудрый кот
Аватара пользователя
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк

Сообщение RoboC »

Надо пользоваться прерываниями.
Тот же Тикер, помнится, использует аппаратные прерывания.
Встроенные команды шим - софтовые.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Вт май 22, 2012 16:50:34

Сообщение ksv2109 »

С прерываниями еще не разбирался,
а ШИМ пытался запустить подачей частоты на 2 вывод
как то так:

// задаем частоту ШИМ на VHC 2 выводе
analogWriteFreq(51200);
analogWrite(VHC,500);

Генерация появлялась и соответствовала частоте и задаваемой скважности,
при этом в описаниях писали, что скважность меняется при помощи значений от 1 до 255
но у меня от 1 до 9 первая цифра (где 5 в примере),
изменение второй и третей цифры визуальных изменений сигнала не вносило
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Вт май 22, 2012 16:50:34

Сообщение ksv2109 »

Итак первые наглядные результаты воплощения идеи :)

Изображение

платы в процессе настройки (лепил из чего был :) )
СпойлерИзображение Изображение
оставил только одну кнопку для настройки и запроса времени
заметил, что иногда проскакивают секунды вперед и бывает переключаются быстрее
причину так и не понял
поэтому сделал запрос времени раз час

хотелось бы прикрутить еще и DS3231
чтоб при отсутствии интернета информация о времени бралась из DS3231,
а при появлении интернета с NTP и выводилась на табло и корректировалась в DS3231
но пока это мне по силам
Вложения
wi-fi_clock_in4_krug2.rar
(4.8 КБ) 304 скачивания
Мудрый кот
Аватара пользователя
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк

Сообщение RoboC »

поэтому сделал запрос времени раз час
Раз в неделю и при включении,NTP сервак вас может блокирнуть за раз в час :wink:
хотелось бы прикрутить еще и DS3231
Смысл ставить 3231? точность то придает NTP синхронизация..

Есть куча SPI RTC, которые можно прикрутить, задействовав одну ножку МК.
Если вы из Украины, то могу вам прислать пару, тройку.
I2C у ESP программный :facepalm:
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Вт май 22, 2012 16:50:34

Сообщение ksv2109 »

про опрос ntp понял, исправлю
По поводу DS3231, я имел ввиду, что если пропал источник питания и потом появился и по каким то причинам (неуплата, сгорел свич провайдера и тд, и мобильный интернет лег :) (было недавно)) нет интернета,
мы остаемся без времени
Согласен, можно прикрутить любую, но хочется эту :)
.... хотя это уже совсем другая конструкция :))
Последний раз редактировалось ksv2109 Пн янв 08, 2018 13:27:41, всего редактировалось 1 раз.
Мудрый кот
Аватара пользователя
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк

Сообщение RoboC »

В чем беда?
У вас в часах нет подсветки. GPIO14 свободен. GPIO2 свободен.
Подключаете библиотеку ds3231.h, дефайны на нужные пины и там уже все просто: прочитать время, записать время....

https://esp8266.ru/forum/threads/esp826 ... novka.695/
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Контактная информация:
Это не хвост, это антенна
Сообщения: 1414
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Сообщение sa-ta »

прошу помощи.
пытаюсь отладить под себя код - http://radiokot.ru/forum/viewtopic.php? ... 6#p2575536

пока подключил в качестве индикатора модулек на tm1637
кусок кода, который вызывает проблемы :
Спойлер

Код: Выделить всё

bool          points   = true;
...

/**
 * Выдача текущего времени на индикатор
 */
void DisplayTime(unsigned long epoch) {
  
  epoch = epoch + TIMEZONE*3600;  
  
  my_m = ( epoch / 60 ) % 60;
  my_h = ( epoch / 3600 ) % 24;

data[0]= display.encodeDigit(my_h/10);     //крайне левое знакоместо
  
  if ( points = true )
    {data[1]= display.encodeDigit(my_h%10); //единицы часов + точка
    data[1]= data[1] | 0x80;
    points = false; }
  else 
     {data[1]= display.encodeDigit(my_h%10);
    points = true; }

    Serial.print(points);
    
  data[2]= display.encodeDigit(my_m/10);
  data[3]= display.encodeDigit(my_m%10);

display.setSegments(data);

}
эта функция вызывается раз с секунду. в моем понимании, я проверяю флаг, меняю данные и не меняю (добавляю двоеточие) и меняю флаг на противоположный. переменная описана как глобальная.
в итоге я вижу вывод ф-ции Serial.print(points) - как 0, который не меняется. что я делаю не так ?? :)
Мудрый кот
Аватара пользователя
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк

Сообщение RoboC »

Код: Выделить всё

  // Каждые  секунду меняем точку время
  if ( cur_ms < ms1 || (cur_ms - ms1) > 1000 ) {
    ms1 = cur_ms;
    ntp_time    = t_cur + t_correct;
    points = !points; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    DisplayTime();
  }
points инвертируется в основном цикле.
Зачем вы делаете это еще раз в процедуре DisplayTime()?

Код: Выделить всё

  if ( points = true )
    {
....
    points = false; }
  else
     {.......
    points = true; }
=> => в процедуре DisplayTime(), points всегда будет = одному и тому же значению ;
:facepalm:
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Контактная информация:
Это не хвост, это антенна
Сообщения: 1414
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Сообщение sa-ta »

>points инвертируется в основном цикле.
в исходнике было не так. но я внес изменения,что вы предложили . они не помогли. points =1 и не меняется.

приатачил весь файл целиком, возможно есть и другие косяки - но пока интересует только этот момент - мигать точками.

>>=> => в процедуре DisplayTime(), points всегда будет = одному и тому же значению ;
не совсем очевидно почему. проверка же делается только один раз, и при смене true-> false в первом блоке условия попадать в блок else оно не должно...
Вложения
my_esp_ntp_v5-radiokot.txt
.
(19.17 КБ) 321 скачивание
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 22
Зарегистрирован: Пт дек 25, 2009 17:31:14
Откуда: Свердловсая обл.

Сообщение leopold »

Уважаемый, sa-ta. Я посмотрел код процедуры, которая мигает принтами, у вас ошибка в операторе if ();
В коде, который вы представили написано: if (point = true), а надо было if ( point == true). Поясняния думаю не нужны? А компилятор должен был предупреждение вывести, хотя конструкция с присвоением вполне корректна.
Прошу прощения, если неправильно воспроизвел имя переменной, пишу с планшета.
Удачи всем.
Это не хвост, это антенна
Сообщения: 1414
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Сообщение sa-ta »

да, есть такая ошибка. но проблема судя по всему, не только в этом :

вот выхлоп куска с печатью значения переменной Serial.print(points);
СпойлерNo packet yet
1sending NTP packet...
packet received, length=48
Unix time = 1522949046
1111111111
points = !points; // - вот эта часть не работает!!
выхлоп ее должен быть 01010101010 - то есть, черодоваться.
уже перенес points = !points внутрь функции DisplayTime(unsigned long epoch). нечего не меняется.
Ответить

Вернуться в «Статьи»