Страница 5 из 6

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

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

Пока писал ответ пришел еще один ответ :)
чу чуть начинаю понимать,
значит надо добавить информацию о доп регистрах (насчитал пять мест)
и разложить значение на выходах в соответствии с "потребностями"

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

Добавлено: Вт дек 19, 2017 15:19:21
ВНН
Правильно.

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

Добавлено: Вт дек 19, 2017 15:45:24
RoboC
Думаю, если позволяет место, то просто по 2 регистра на цифру завести. 12 микросхем.
Для каждой цифры сдвигать по 2 байта :)

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

Добавлено: Вт дек 19, 2017 16:08:31
ВНН
Не вижу смысла .

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

Добавлено: Вт дек 19, 2017 16:37:36
RoboC
Иначе маской придется накладывать каждую цифру.
Точки, скорее всего, так же захочется + 1 бит

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

Добавлено: Вт дек 19, 2017 16:58:57
ВНН
Ну какой маской :
Для единиц минут (согласно схемы 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;

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

Добавлено: Вт дек 19, 2017 17:10:38
RoboC

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

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

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

Btt1 =массив для цифры[цифра1];
сдвинуть
Btt1 =массив для цифры[цифра2];
сдвинуть
и.т.д. для 4 цифр

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

Добавлено: Ср дек 20, 2017 09:20:53
ksv2109
Ну в общем на выходных соберу макетку, в виде небольшого шильда,
и буду пробовать изучать азы программирования :)

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

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

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

конструкция не окончательная, вместо секундных индикаторов будут инс-1 по кругу стоять :)

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

Добавлено: Вс дек 24, 2017 08:15:41
RoboC
Надо пользоваться прерываниями.
Тот же Тикер, помнится, использует аппаратные прерывания.
Встроенные команды шим - софтовые.

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

Добавлено: Вс дек 24, 2017 09:26:40
ksv2109
С прерываниями еще не разбирался,
а ШИМ пытался запустить подачей частоты на 2 вывод
как то так:

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

Генерация появлялась и соответствовала частоте и задаваемой скважности,
при этом в описаниях писали, что скважность меняется при помощи значений от 1 до 255
но у меня от 1 до 9 первая цифра (где 5 в примере),
изменение второй и третей цифры визуальных изменений сигнала не вносило

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

Добавлено: Пн янв 08, 2018 12:17:54
ksv2109
Итак первые наглядные результаты воплощения идеи :)

Изображение

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

хотелось бы прикрутить еще и DS3231
чтоб при отсутствии интернета информация о времени бралась из DS3231,
а при появлении интернета с NTP и выводилась на табло и корректировалась в DS3231
но пока это мне по силам

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

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

Есть куча SPI RTC, которые можно прикрутить, задействовав одну ножку МК.
Если вы из Украины, то могу вам прислать пару, тройку.
I2C у ESP программный :facepalm:

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

Добавлено: Пн янв 08, 2018 12:49:40
ksv2109
про опрос ntp понял, исправлю
По поводу DS3231, я имел ввиду, что если пропал источник питания и потом появился и по каким то причинам (неуплата, сгорел свич провайдера и тд, и мобильный интернет лег :) (было недавно)) нет интернета,
мы остаемся без времени
Согласен, можно прикрутить любую, но хочется эту :)
.... хотя это уже совсем другая конструкция :))

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

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

https://esp8266.ru/forum/threads/esp826 ... novka.695/

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

Добавлено: Ср апр 04, 2018 20:42:44
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, который не меняется. что я делаю не так ?? :)

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

Добавлено: Чт апр 05, 2018 09:21:11
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:

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

Добавлено: Чт апр 05, 2018 12:34:31
sa-ta
>points инвертируется в основном цикле.
в исходнике было не так. но я внес изменения,что вы предложили . они не помогли. points =1 и не меняется.

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

>>=> => в процедуре DisplayTime(), points всегда будет = одному и тому же значению ;
не совсем очевидно почему. проверка же делается только один раз, и при смене true-> false в первом блоке условия попадать в блок else оно не должно...

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

Добавлено: Чт апр 05, 2018 19:14:27
leopold
Уважаемый, sa-ta. Я посмотрел код процедуры, которая мигает принтами, у вас ошибка в операторе if ();
В коде, который вы представили написано: if (point = true), а надо было if ( point == true). Поясняния думаю не нужны? А компилятор должен был предупреждение вывести, хотя конструкция с присвоением вполне корректна.
Прошу прощения, если неправильно воспроизвел имя переменной, пишу с планшета.
Удачи всем.

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

Добавлено: Чт апр 05, 2018 19:23:48
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). нечего не меняется.