Анатолий беляев (aka mr.alb). персональный сайт

Содержание

Библиотека RTC.h Arduino: описание команд

Для работы с модулями часов Ардуино, в библиотеке реализовано 5 функций:

// запуск модуля

// указать время
— год указывается без учета века, в формате 0-99
— часы указываются в 24-часовом формате, от 0 до 23
— день недели указывается в виде числа от 0-воскресенье, 6-суббота

// получить время
— gettime(«d-m-Y, H:i:s, D»); ответит строкой «12-06-2020, 18:30:05, Fri»
— gettime(«H»); ответит строкой «18»

функцией gettime можно получать различную информацию:

  • s — секунды от 00 до 59 (два знака)
  • i — минуты от 00 до 59 (два знака)
  • h — часы в 12-часовом формате от 01 до 12 (два знака)
  • H — часы в 24-часовом формате от 00 до 23 (два знака)
  • d — день месяца от 01 до 31 (два знака)
  • D — день недели наименование от Mon до Sun (три знака)
  • m — месяц от 01 до 12 (два знака)
  • M — месяц наименование от Jan до Dec (три знака)
  • Y — год от 2000 до 2099 (четыре знака)
  • y — год от 00 до 99 (два знака)

— указывает функции gettime мигать одним из параметров времени

— устанавливает период обращения к модулю в минутах (от 0 до 255)

More information

Examples

See the library examples for more information on how to use this library. See also the original examples by Ricardo Batista. Most will still work or only require minor changes.

Links

  • Original TM1638/TM1640 library: https://github.com/rjbatista/tm1638-library
  • TM1637 library used for reference: https://github.com/avishorp/TM1637
  • A TM1637 library optimized for speed and size: https://github.com/Erriez/ErriezTM1637
  • TM1650 library that uses the Wire interface: https://github.com/mozgy/Mozz_TM1650
  • MAX7219 LED Matrix library: https://github.com/markruys/arduino-Max72xxPanel
  • OneButton multi-state buttons: https://github.com/mathertel/OneButton
  • Adafruit GFX library: https://github.com/adafruit/Adafruit-GFX-Library

Как подключить DS1302 к Arduino (RTC)

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • модуль DS1302, DS1307 или DS3231;
  • LCD монитор 1602 i2c;
  • провода «папа-мама».

DS1307 схема подключения к Ардуино Уно

Модули часов DS1307 и DS3231 подключаются к плате Ардуино через I2C протокол, как LCD дисплей I2C. Контакт SDA подключается к пину A4, контакт SCL к пину A5 Ардуино Уно. При подключении данных модулей к плате Arduino Mega следует использовать порты SDA (20 пин) и SCL (21 пин). При этом в скетче необходимо снять комментарий в строчке с нужным модулем, а строчку с модулем 1302 наоборот закомментировать.

Скетч. Работа с модулем ds3231 Ардуино DS1307

#include <iarduino_RTC.h>

iarduino_RTC time(RTC_DS1302,6,8,7);  // для модуля DS1302 - RST, CLK, DAT
// iarduino_RTC time(RTC_DS1307);       // для модуля DS1307 с i2C
// iarduino_RTC timeRTC_DS3231);        // для модуля DS3231 с i2C

void setup() {
   delay(300);
   Serial.begin(9600);
   time.begin();
   time.settime(0, 30, 18, 12, 6, 20, 5); // 0  сек, 30 мин, 18 часов, 12, июня, 2020, четверг
}

void loop() {
   // если прошла 1 секунда выводим время
   if (millis() % 1000 == 0) {
      Serial.println(time.gettime("d-m-Y, H:i:s, D"));
      delay(1);
   }
}

Пояснения к коду:

  1. для работы с программой необходимо скачать библиотеку iarduino_RTC.h.
  2. с помощью команды можно установить дату и время, которые будут выводится на монитор порта Arduino IDE каждую секунду.

TM16xxMatrixGFX class

#include <Adafruit_GFX.h>
#include <TM1640.h>
#include <TM16xxMatrixGFX.h>

Then you can instantiate the TM16xxMatrixGFX class, refering to the chip specific class:

TM1640 module(13, 14);    // For ESP8266/WeMos D1-mini: DIN=D7/13/MOSI, CLK=D5/14/SCK
#define MATRIX_NUMCOLUMNS 8
#define MATRIX_NUMROWS 8
TM16xxMatrixGFX matrix(&module, MATRIX_NUMCOLUMNS, MATRIX_NUMROWS);    // TM16xx object, columns, rows

Note that the TM1640 has sufficient outputs to drive two 8×8 matrices. The WeMOS D1 Mini Matrix LED Shield also uses the TM1640, but has only one 8×8 matrix.

These methods can be used to draw on the matrix:

  matrix.setIntensity(1);         // Use a value between 0 and 7 for brightness
  matrix.fillScreen(LOW);         // Clear the matrix
  matrix.drawPixel(1, 4, HIGH);   // set one pixel in the memory bitmap on
  matrix.write();                 // Send the memory bitmap to the display
  matrix.drawChar(, , 'A', HIGH, LOW, 1);
  matrix.drawLine(, matrix. height(), matrix.width(), , HIGH);
  matrix.drawRect(, , 6, 6, HIGH);

Multiple identical modules can be combined to form a large matrix. The data line
can be shared to reduce the number of pins:

  TM1640 module(D7, D5);    // For ESP8266/WeMos D1-mini: DIN=D7/13/MOSI, CLK=D5/14/SCK
  TM1640 module2(D7, D6);   // For ESP8266/WeMos D1-mini: shared DIN=D7/13/MOSI, different CLK
  TM16xx * modules[]={&module,&module2};      // put modules in an array
  TM16xxMatrixGFX matrix(modules, MODULE_SIZECOLUMNS, MODULE_SIZEROWS, 2, 1);    // modules, size of each module, size combined

TM16xx LEDs and Buttons library

This Arduino library facilitates driving LED displays using TM16xx LED driver chips.
The TM16xx chip family allows driving 7-segment LED displays or LED matrices.
Next to built-in high-frequency LED multiplexing, they offer control of LED brightness.
Most TM16xx chips also support reading key-scan data for button presses.
Using this library you can simply use print() on a 7-segment display or use Adafruit GFX on a LED matrix.
Currently this library supports the TM1620, TM1628, TM1630, TM1637, TM1638, TM1640, TM1650 and TM1668 chips. Note that there are similar chips made by other manufacturers that may be compatible with the Titan Micro chips. For instance: the HBS640 by WINRISE is compatible with the TM1640.

Made by Maxint R&D. See https://github.com/maxint-rd/

Initial version was based on the TM1638 library by Ricardo Batista. Further inspiration from the TM1637 library by Avishay, the Max72xxPanel library by Mark Ruys and the OneButton library by Matthias Hertel.

Animation and Animator Tool

The showAnimation() function projects a sequence of frames (patterns) onto the display. This works by defining the animation sequence through a multi-dimensional array of patterns.

// Data from Animator Tool
const uint8_t ANIMATION = {
  { 0x08, 0x00, 0x00, 0x00 },  // Frame 0
  { 0x00, 0x08, 0x00, 0x00 },  // Frame 1
  { 0x00, 0x00, 0x08, 0x00 },  // Frame 2
  { 0x00, 0x00, 0x00, 0x08 },  // Frame 3
  { 0x00, 0x00, 0x00, 0x04 },  // Frame 4
  { 0x00, 0x00, 0x00, 0x02 },  // Frame 5
  { 0x00, 0x00, 0x00, 0x01 },  // Frame 6
  { 0x00, 0x00, 0x01, 0x00 },  // Frame 7
  { 0x00, 0x01, 0x00, 0x00 },  // Frame 8
  { 0x01, 0x00, 0x00, 0x00 },  // Frame 9
  { 0x20, 0x00, 0x00, 0x00 },  // Frame 10
  { 0x10, 0x00, 0x00, 0x00 }   // Frame 11
};

  // Display Animation sequence
  display.showAnimation(ANIMATION, FRAMES(ANIMATION), TIME_MS(50));

TM16xxDisplay class

The TM16xxDisplay class adds some bytes to the memory footprint, but it provides the familiar easy to use print() and println() functions. Next to that it also provides some more advanced display methods. To use that class on top of the base class, all you need to do is instantiate it, refering to the chip specific class:

TM1638 module(8, 9, 7);   // DIO=8, CLK=9, STB=7
TM16xxDisplay display(&module, 8);    // TM16xx object, 8 digits

Simple print example using the TM16xxDisplay class:

#include <TM1638.h>
#include <TM16xxDisplay.h>

TM1638 module(8, 9, 7);   // DIO=8, CLK=9, STB=7
TM16xxDisplay display(&module, 8);    // TM16xx object, 8 digits

void setup() {
  display.println(F("HELLO !"));
}

int nCount=;
void loop() {
  delay(1000);
  display.print("Count:");
  display.println(nCount++);
}

See TM16xxDisplay.h for the provided methods.

Clock example: TM1637 4-digit 7-segment display with DS3231 RTC

One of the typical uses for a 4-digit 7-segment display is to show the time. By combining the TM1637 with a real time clock module (RTC), you can easily create a 24-hour clock.

In this example I used this commonly used DS3231 RTC module.

This module communicates with the Arduino via I2C, so you only need two connections to read the time.

The wiring diagram below shows you how you can connect the DS3231 RTC to the Arduino. Note that the TM1637 display is connected in the same way as before.


TM1637 with DS3231 RTC and Arduino UNO wiring diagram.

The connections are also given in the table below:

DS3231 RTC Connections

DS3231 Arduino
VCC 5 V
GND GND
SDA A4
SCL A5

The following code example can be used to display the time in a 24-hour time format. If your display has a center colon, then this code will make it blink. You can also disable this by removing the last few lines of code.

The first time you upload the code, the RTC will be set to the time that the sketch was compiled.

You can install a coin cell battery on the back of the module, so the time is stored in case it loses power. Apparently the charging circuit of most Chinese modules can possibly overcharge the coin cell battery, so you might want to buy a DS3231 module from Adafruit instead.

The code uses the Adafruit RTC library, which you can download here on GitHub. You can also install it via the Library Manager in the Arduino IDE by searching for ‘RTClib’, or click the download button below:

RTClib-master.zip

Example code

/* Arduino example code to display a 24 hour time format clock on a TM1637 4 digit 7 segment display with a DS32321 RTC. More info: www.www.makerguides.com */

// Include the libraries:
#include "RTClib.h"
#include <TM1637Display.h>

// Define the connections pins:
#define CLK 2
#define DIO 3

// Create rtc and display object:
RTC_DS3231 rtc;
TM1637Display display = TM1637Display(CLK, DIO);

void setup() {
  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);
  // Wait for console opening:
  delay(3000);

  // Check if RTC is connected correctly:
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }
  // Check if the RTC lost power and if so, set the time:
  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    // The following line sets the RTC to the date & time this sketch was compiled:
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

  // Set the display brightness (0-7):
  display.setBrightness(5);
  // Clear the display:
  display.clear();
}

void loop() {
  // Get current date and time:
  DateTime now = rtc.now();

  // Create time format to display:
  int displaytime = (now.hour() * 100) + now.minute();

  // Print displaytime to the Serial Monitor:
  Serial.println(displaytime);

  // Display the current time in 24 hour format with leading zeros enabled and a center colon:
  display.showNumberDecEx(displaytime, 0b11100000, true);

  // Remove the following lines of code if you want a static instead of a blinking center colon:
  delay(1000);

  display.showNumberDec(displaytime, true); // Prints displaytime without center colon.

  delay(1000);
}

Работа программного обеспечения

Интерфейс DS5000

Программа, приведённая в Приложении, написана для взаимодействия DS5000 с DS1307 с помощью двухпроводного интерфейса. DS5000 запрограммирован с использованием макетной платы DS5000T фирмы Dallas Semiconductor, которая позволяет использовать ПК в качестве терминала ввода/вывода. Программные средства KIT5K поставляемые вместе с макетной платой DS5000T обеспечивают высокоуровневый интерфейс для загрузки программных приложений в DS5000 или установки его параметров через Program command. Программное обеспечение KIT5K содержит эмулятор терминала ввода/вывода, чтобы позволить пользователю запускать программные приложения в микроконтроллер DS5000, который связан с пользователем через COM порт ПК.

Исходный код DS1307

Первый раздел исходного кода, расположенный в Приложении, используется при конфигурации DS5000 для последовательного соединения с ПК. Также в начале кода находится подпрограмма MASTER_CONTROLLER, которая используется для управления демонстрационной программой.

Подпрограммы, которые следуют непосредственно за подпрограммой MASTER_CONTROLLER, являются драйверами низкого уровня и служат для управления двухпроводным интерфейсом. Они не являются индивидуальными для DS1307, а могут быть использованы с любым совместимым с двухпроводным интерфейсом «ведомым» устройством. Вот эти подпрограммы:

SEND_START

Подпрограмма используется для генерации состояния START на двухпроводной шине.

SEND_STOP

Подпрограмма используется для генерации состояния STOP на двухпроводной шине.

SEND_BYTE

Подпрограмма посылает 8-разрядное слово (первым является старший значащий бит (MSB)) по двухпроводной шине и девятый тактовый импульс для импульса подтверждения приёма.

READ_BYTE

Подпрограмма читает 8-разрядное слово с двухпроводной шины. Она проверяет очищен ли флаг LASTREAD после того, как считан последний байт из «ведомого» устройства. Если это был не последний байт, то DS5000 посылает импульс подтверждения по девятому тактовому импульсу, а если это был последний считанный байт из «ведомого» устройства, то DS5000 посылает «неподтверждение».

SCL_HIGH

Подпрограмма осуществляет переход линии SCL из низкого в высокое состояние и обеспечивает высокое состояние линии SCL перед продолжением.

DELAY и DELAY_4

Эти две подпрограммы включены для обеспечения сохранения временной диаграммы двухпроводной шины.

Остальная часть кода, включённая в приложение, специально предназначена для демонстрации функций DS1307. Продемонстрированы следующие функции:

Setting Time

Время считывается с клавиатуры и сохраняется в сверхоперативной памяти DS5000. Затем оно передаётся по двухпроводной шине в DS1307.

Set RAM

Одиночный байт в шестнадцатеричном виде считывается с клавиатуры и записывается в RAM DS1307.

Read Date/Time

Дата и время считываются по двухпроводной шине и сохраняются в сверхоперативной памяти DS5000. Затем они выводятся на экран. Это продолжается до тех пор, пока не будет нажата кнопка на клавиатуре.

OSC On/OSC Off

Тактовый генератор DS1307 может быть включен или выключен.

SQW/OUT On/SQW/OUT Off

Функция SQW/OUT может быть включена или выключена. Она будет переключаться на частоте 1 Гц.

Таблица 1. AC электрические характеристики

Параметр Символ Эффективноезначение Единицы
Тактовая частота SCL fSCL 59 кГц
Время свободного состояния шины между состояниями STOP и START tBUF 5.7 мкс
Время удержания(повторенного) состояния START tHD:STA 6.2 мкс
Период низкого состояния тактового импульса SCL tLOW 10.5 мкс
Период высокого состояния тактового импульса SCL tHIGH 6.5 мкс
Время установки для повторного состояния START tSU:STA 5.3 мкс
Время удержания данных tHD:DAT 5.5 мкс
Время установки данных tSU:DAT 3.1 мкс
Время установки для состояния STOP tSU:STO 5.4 мкс

Заключение

Было показано, как правильно подсоединять напрямую DS1307 или любое двухпроводное «ведомое» устройство к 8051-совместимому микроконтроллеру. Соединение должно быть таким, чтобы временная диаграмма двухпроводного интерфейса на микроконтроллере не нарушалась драйверами низкого уровня. Для этого в программный код должны быть включены подпрограммы задержки. Приведённых в таблице 1 эффективных значений, придерживались при конфигурации аппаратной части, описанной в данном техническом руководстве.

Документация

  Rus Пример программы на языке Асемблер
  100 Kb Engl Исходный фаил
  Rus Описание интерфейса I2C
  Програмное обеспечение микроконтроллеров MCS-51
  200 Kb Engl Описание DS1307 — часы реального времени с IIC интерфейсом

Главная —
Микросхемы —
DOC —
ЖКИ —
Источники питания —
Электромеханика —
Интерфейсы —
Программы —
Применения —
Статьи

Basic usage

To use this library you need to include the class that matches the chip on your module and instantiate the object:

#include <TM1638.h>

TM1638 module(8, 9, 7);   // DIO=8, CLK=9, STB=7

In the setup() function you can set the intensity of the display, but that’s not mandatory:

void setup() {
  module.setupDisplay(true, 2);   // on=true, intensity-2 (range 0-7)
  module.setDisplayToString("HALO");    // display simple text
}

In the loop() function you can use basic display methods provided by the base class:

void loop() {
  int nTime = ((millis() / 1000) / 60) * 100 + (millis() / 1000) % 60; // convert time to minutes+seconds as integer
  module.setDisplayToDecNumber(nTime, _BV(4)); // display milliseconds with dot on digit 4
}

For the easy to use print() method and more advance display methods you can use the class.

The TM16xx chip makes it easy to see if a button is pressed.
To check if a button was pressed you can use the getButtons() method:

  uint32_t dwButtons=module.getButtons();
  Serial.println(dwButtons, HEX);

Please note that while you don’t need to write any code for debouncing, the button state may be reset when you display something. For advanced detection of button clicks, double clicks and long presses you can use the class.

TM1637 Datasheet PDF

Взаимодействие микроконтроллера с микросхемой ТМ1637 осуществляется посредством двухпроводной шины. Метод связи не идентичен протоколу 12C полностью. Как мне показалось он намного проще. Вообще данная микросхема является драйвером и для работы с 8×2bit клавиатурой. Но эту опцию я еще не рассматривал. Здесь будет рассмотрен только процесс передачи данных на четырехразрядный индикатор. Кстати, весь процесс динамической индикации микросхема берет на себя, что является большущим плюсом. Намного упрощается написание программ с использованием данных индикаторов, не надо следить за массой временных интервалов. Яркость сегментов индикатора регулируется программно и имеет семь уровней, которые выбираются при помощи передачи в чип семи команд. От 0×88…0x8f, в двоичном коде, например, первая команда будет выглядеть так – ‘10001000’. Единица в старшем разряде, bit7 означает включение индикации. Если этот бит установлен в «0», то индикаторы светиться не будут. Т.е. появляется возможность отключать индикатор, например, для экономии энергии в мобильных устройствах. При передаче последней команды – 8fh, ‘10001111’, свечение индикаторов будет иметь самую высокую яркость.

Features & limitations

  • The current version of this library supports ESP8266/ESP32, Atmel ATmega (e.g. ATmega328 and ATmega168) and Atmel ATtiny MCUs. Due to the required memory, the smallest ATtiny MCU supported is the ATtiny44. Please let me know if you’ve successfully used this library with other MCUs.
  • The TM16xx chips offer no support for daisychaining multiple chips, but when separate Clk or Latch lines are used the Din line can be shared for combined displays.
  • The library doesn’t support combining multiple 7-segment modules into one display, but it is possible to define multiple display objects for multiple different modules. See the TM1638_TM1637ex_two_modules example.
  • The TM16xxMatrixGFX class does support combining multiple LED Matrix module into one large matrix. Please note that the TM1640 supports up to 16 digits or an 8×16 LED matrix.
  • The popular TM1638 LED & KEY module comes in a number of varieties. My version has some odd button wiring sequence: S1=KS1, S5=KS2, S2=KS3, S6=KS4, S3=KS5, S7=KS6, S4=KS7, S8=KS8
  • The TM1668 class has experimental support for using RGB LEDs on Grids 5-7. Some information about the wiring can be found in the example code. Most likely future versions will have a specific class for using RGB LEDs. The TM1680 has 8×24 outputs which sounds ideal for creating a 8×8 RGB matrix. Unfortunately these chips don’t support individual LED brightness, only intensity of the whole display.
  • The TM1650 datasheet mentions SDA and SCL pins. The used protocol resembles I2C, but lacks addressing. For that reason this library doesn’t use the I2C Wire library, but (slow) bitbanging using digitalWrite.
  • The WeMOS D1 mini Matrix LED Shield and the TM1640 Mini LED Matrix 8×16 by Maxint R&D have R1 on the right-top. Call setMirror(true) to reverse the x-mirrorring.
  • When using TM16xxButtons, the amount of memory used can become too large. To preserve RAM memory on smaller MCUs such as the ATtiny84 and ATtiny85, the number of buttons tracked is limited to 2 combined button presses. This can be changed by setting the maximum button slots in the TM16xxButtons.h header file:
#define TM16XX_BUTTONS_MAXBUTTONSLOTS 2   // Note: changing this define requires recompilation of the library
  • Unfortunately ATtiny44/45 and smaller don’t have enough flash to support both TM16xxDisplay and TM16xxButtons classes. However, it is possible to combine the module base class with only TM16xxButtons or only TM16xxDisplay.
  • An experimental RAM implementation using dynamic memory allocation is available, but not suitable for small MCUs as using malloc/free will increase the required FLASH program space by over 600 bytes. Modify the TM16XX_OPT_BUTTONS_… defines in the header file at your own risk.

Подпишись на RSS!

Подпишись на RSS и получай обновления блога!

Получать обновления по электронной почте:

    • Пленочные конденсаторы — применение в энергетике
      9 апреля 2021
    • Поворотное устройство для солнечного коллектора
      15 марта 2021
    • Выбор подпрограммы с помощью кнопки
      11 марта 2021
    • Керамические конденсаторы SMD, параметры
      4 марта 2021
    • Программа для проверки выходных буферов PIC16F676 и PIC16F628A
      21 февраля 2021
    • Зарядное устройство для автомобильных аккумуляторов — 242 124 просмотров
    • Стабилизатор тока на LM317 — 176 993 просмотров
    • Стабилизатор напряжения на КР142ЕН12А — 128 047 просмотров
    • Реверсирование электродвигателей — 104 704 просмотров
    • Зарядное для аккумуляторов шуруповерта — 101 144 просмотров
    • Карта сайта — 101 064 просмотров
    • Зарядное для шуруповерта — 89 942 просмотров
    • Самодельный сварочный аппарат — 89 701 просмотров
    • Схема транзистора КТ827 — 85 770 просмотров
    • Регулируемый стабилизатор тока — 85 505 просмотров
    • DC-DC (5)
    • Автомат откачки воды из дренажного колодца (5)
    • Автоматика (35)
    • Автомобиль (3)
    • Антенны (2)
    • Ассемблер для PIC16 (3)
    • Блоки питания (30)
    • Бурение скважин (6)
    • Быт (11)
    • Генераторы (1)
    • Генераторы сигналов (8)
    • Датчики (4)
    • Двигатели (7)
    • Для сада-огорода (11)
    • Зарядные (17)
    • Защита радиоаппаратуры (8)
    • Зимний водопровод для бани (2)
    • Измерения (41)
    • Импульсные блоки питания (2)
    • Индикаторы (6)
    • Индикация (10)
    • Как говаривал мой дед … (1)
    • Коммутаторы (6)
    • Логические схемы (1)
    • Обратная связь (1)
    • Освещение (3)
    • Программирование для начинающих (19)
    • Программы (1)
    • Работы посетителей (7)
    • Радиопередатчики (2)
    • Радиостанции (1)
    • Регуляторы (5)
    • Ремонт (1)
    • Самоделки (12)
    • Самодельная мобильная пилорама (3)
    • Самодельный водопровод (7)
    • Самостоятельные расчеты (37)
    • Сварка (1)
    • Сигнализаторы (5)
    • Справочник (13)
    • Стабилизаторы (16)
    • Строительство (2)
    • Таймеры (4)
    • Термометры, термостаты (27)
    • Технологии (21)
    • УНЧ (2)
    • Формирователи сигналов (1)
    • Электричество (4)
    • Это пригодится (14)
  • Архивы
    Выберите месяц Апрель 2021  (1) Март 2021  (3) Февраль 2021  (2) Январь 2021  (1) Декабрь 2020  (1) Ноябрь 2020  (1) Октябрь 2020  (1) Сентябрь 2020  (2) Июль 2020  (2) Июнь 2020  (1) Апрель 2020  (1) Март 2020  (3) Февраль 2020  (2) Декабрь 2019  (2) Октябрь 2019  (3) Сентябрь 2019  (3) Август 2019  (4) Июнь 2019  (4) Февраль 2019  (2) Январь 2019  (2) Декабрь 2018  (2) Ноябрь 2018  (2) Октябрь 2018  (3) Сентябрь 2018  (2) Август 2018  (3) Июль 2018  (2) Апрель 2018  (2) Март 2018  (1) Февраль 2018  (2) Январь 2018  (1) Декабрь 2017  (2) Ноябрь 2017  (2) Октябрь 2017  (2) Сентябрь 2017  (4) Август 2017  (5) Июль 2017  (1) Июнь 2017  (3) Май 2017  (1) Апрель 2017  (6) Февраль 2017  (2) Январь 2017  (2) Декабрь 2016  (3) Октябрь 2016  (1) Сентябрь 2016  (3) Август 2016  (1) Июль 2016  (9) Июнь 2016  (3) Апрель 2016  (5) Март 2016  (1) Февраль 2016  (3) Январь 2016  (3) Декабрь 2015  (3) Ноябрь 2015  (4) Октябрь 2015  (6) Сентябрь 2015  (5) Август 2015  (1) Июль 2015  (1) Июнь 2015  (3) Май 2015  (3) Апрель 2015  (3) Март 2015  (2) Январь 2015  (4) Декабрь 2014  (9) Ноябрь 2014  (4) Октябрь 2014  (4) Сентябрь 2014  (7) Август 2014  (3) Июль 2014  (2) Июнь 2014  (6) Май 2014  (4) Апрель 2014  (2) Март 2014  (2) Февраль 2014  (5) Январь 2014  (4) Декабрь 2013  (7) Ноябрь 2013  (6) Октябрь 2013  (7) Сентябрь 2013  (8) Август 2013  (2) Июль 2013  (1) Июнь 2013  (2) Май 2013  (4) Апрель 2013  (7) Март 2013  (7) Февраль 2013  (7) Январь 2013  (11) Декабрь 2012  (7) Ноябрь 2012  (5) Октябрь 2012  (2) Сентябрь 2012  (10) Август 2012  (14) Июль 2012  (5) Июнь 2012  (21) Май 2012  (13) Апрель 2012  (4) Февраль 2012  (6) Январь 2012  (6) Декабрь 2011  (2) Ноябрь 2011  (9) Октябрь 2011  (14) Сентябрь 2011  (22) Август 2011  (1) Июль 2011  (5)