{"id":112955,"date":"2022-02-13T10:22:28","date_gmt":"2022-02-13T04:22:28","guid":{"rendered":"http:\/\/rcl-radio.ru\/?p=112955"},"modified":"2025-01-06T21:00:40","modified_gmt":"2025-01-06T15:00:40","slug":"attiny13-091-i2c-128x32-oled-lcd-arduino-ide","status":"publish","type":"post","link":"http:\/\/rcl-radio.ru\/?p=112955","title":{"rendered":"ATtiny13 + 0,91&#8242; I2C 128&#215;32 OLED (Arduino IDE)"},"content":{"rendered":"<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0440\u0435\u0434\u0435 Ardino IDE, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u043b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043b\u043e\u0433\u0438\u0447\u043d\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b. \u0422\u0430\u043a \u043a\u0430\u043a Arduino IDE \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0441\u0435\u0440\u0438\u0438 ATtiny, \u043c\u043d\u043e\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 ATtiny13.<\/p>\n<p>ATtiny13 \u2014 \u043d\u0438\u0437\u043a\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0449\u0438\u0439 8 \u0431\u0438\u0442\u043d\u044b\u0439 \u041a\u041c\u041e\u041f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441 AVR RISC \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u0446\u0438\u043a\u043b, ATtiny13 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 1 MIPS \u043f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0437\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 1 \u041c\u0413\u0446, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 ATtiny13 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0438 \u0434\u0435\u0448\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u0440\u0435\u0434\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Arduino IDE \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c.<\/p>\n<div id=\"marketWidget\"><\/div>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-094412.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-112956 \" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-094412-e1644724471246.png\" alt=\"\" width=\"262\" height=\"128\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-094412-e1644724471246.png 532w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-094412-e1644724471246-200x98.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-094412-e1644724471246-500x244.png 500w\" sizes=\"auto, (max-width: 262px) 100vw, 262px\" \/><\/a><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 ATtiny13 \u0438 0,91&#8242; I2C 128&#215;32 OLED \u0434\u0438\u0441\u043f\u043b\u0435\u044f.<\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 ATtiny13 \u0432 Arduino IDE \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439:<\/p>\n<ul>\n<li>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u043b\u0430\u0442\u044b<\/li>\n<\/ul>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u0432 Arduino IDE \u0432\u043a\u043b\u0430\u0434\u043a\u0443\u00a0<strong>\u0424\u0430\u0439\u043b &gt; \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u00a0<\/strong>\u0438 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0441\u0441\u044b\u043b\u043a\u0443 \u0434\u043b\u044f \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043b\u0430\u0442<\/p>\n<blockquote><p><strong>https:\/\/mcudude.github.io\/MicroCore\/package_MCUdude_MicroCore_index.json<\/strong><\/p><\/blockquote>\n<p><a class=\"highslide-image\" href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-210820-1.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-98732\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-210820-1.png\" sizes=\"auto, (max-width: 923px) 100vw, 923px\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210820-1.png 923w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210820-1-200x147.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210820-1-500x367.png 500w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210820-1-768x563.png 768w\" alt=\"\" width=\"923\" height=\"677\" \/><\/a><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443\u00a0<strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b &gt; \u041f\u043b\u0430\u0442\u0430 &gt; \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u043b\u0430\u0442<\/strong><\/p>\n<p><a class=\"highslide-image\" href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-210911.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-98733\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-210911.png\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210911.png 997w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210911-200x117.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210911-500x293.png 500w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-210911-768x451.png 768w\" alt=\"\" width=\"997\" height=\"585\" \/><\/a><\/p>\n<p>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043d\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0443\u00a0<strong>MicroCore by MCUdude.<\/strong><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0432\u00a0<strong>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b &gt; \u041f\u043b\u0430\u0442\u0430\u00a0<\/strong>\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u043b\u0430\u0442\u0443 ATtiny13.<\/p>\n<ul>\n<li>\u0414\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0441\u043a\u0435\u0442\u0447\u0430\u00a0 \u0412\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440 USBAsp<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/02\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-02-16-200813.png\" \/><\/p>\n<p>\u0412 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0430 \u043f\u043b\u0430\u0442\u0443 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a, \u0441\u0445\u0435\u043c\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f:<\/p>\n<p><a class=\"highslide-image\" href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-221524.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-98734\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-221524.png\" sizes=\"auto, (max-width: 422px) 100vw, 422px\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-221524.png 422w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-221524-200x103.png 200w\" alt=\"\" width=\"422\" height=\"217\" \/><\/a><\/p>\n<p>\u0420\u0430\u0441\u043f\u0438\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 USBAsp<\/p>\n<p><a class=\"highslide-image \" href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/03\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-03-02-001223.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-94080\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/03\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-03-02-001223.png\" alt=\"\" width=\"163\" height=\"190\" \/><\/a><\/p>\n<p><a class=\"highslide-image\" href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-220121-1.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-98735\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2021-04-06-220121-1.png\" sizes=\"auto, (max-width: 1085px) 100vw, 1085px\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-220121-1.png 1085w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-220121-1-200x32.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-220121-1-500x80.png 500w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-220121-1-768x123.png 768w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2021\/04\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2021-04-06-220121-1-1024x164.png 1024w\" alt=\"\" width=\"1085\" height=\"174\" \/><\/a><\/p>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0442\u044b \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Attiny13 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443\u00a0 9.6<strong>\u00a0MHz internal<\/strong>, \u0432 \u043f\u0443\u043d\u043a\u0442\u0435\u00a0<strong>EEPROM<\/strong>\u00a0\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435\u00a0<strong>EEPROM not retanied<\/strong>,\u00a0 \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 \u2018\u0420\u0430\u0441\u0447\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\u2019 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435\u00a0<strong>Micros disabled<\/strong>\u00a0.<\/p>\n<p><a class=\"highslide-image\" href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/01\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2022-01-29-121351.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112704\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/01\/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%BE%D1%82-2022-01-29-121351.png\" sizes=\"auto, (max-width: 448px) 100vw, 448px\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-01-29-121351.png 448w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/01\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-01-29-121351-200x99.png 200w\" alt=\"\" width=\"448\" height=\"222\" \/><\/a><\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u044c\u044e\u0437\u044b \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0412\u0430\u043c\u0438 \u0447\u0430\u0441\u0442\u043e\u0442\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Arduino IDE \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u00a0<strong>USBasb<\/strong>\u00a0\u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435<strong>\u00a0\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b &gt; \u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a<\/strong>. \u042d\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0438 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0435\u0441\u043b\u0438 \u0412\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043a\u0435\u0442\u0447\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Arduino IDE \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u00a0<strong>USBasb<\/strong>\u00a0\u0438 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435\u00a0<strong>\u0421\u043a\u0435\u0442\u0447<\/strong>\u00a0\u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u043d\u0430\u00a0<strong>\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u00a0<\/strong>(\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u2014 \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c).<\/p>\n<p><strong>\u0422\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440 \u043d\u0430 DS18B20<\/strong><\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-095632.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112957\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-095632.png\" alt=\"\" width=\"452\" height=\"160\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-095632.png 452w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-095632-200x71.png 200w\" sizes=\"auto, (max-width: 452px) 100vw, 452px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112958\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557.png\" alt=\"\" width=\"633\" height=\"320\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557.png 633w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557-200x101.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557-500x253.png 500w\" sizes=\"auto, (max-width: 633px) 100vw, 633px\" \/><\/a><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a OLED \u044d\u043a\u0440\u0430\u043d\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u044b\u0433\u043e\u0440\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u0441\u0432\u0435\u0447\u0435\u043d\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0442\u043e \u0432 \u0441\u0445\u0435\u043c\u0443 \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d \u043d\u0430 10 \u0441\u0435\u043a\u0443\u043d\u0434 \u0430 \u043f\u043e\u0442\u043e\u043c \u0433\u0430\u0441\u043d\u0435\u0442 \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #808080; font-style: italic;\">#include &lt;avr\/io.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;util\/delay.h&gt;<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Project Files (Github):  https:\/\/github.com\/wagiminator\/ATtiny13-TinyOLEDdemo<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ License: http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA         PB3                   <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL         PB4                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define TEMP            PB0<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define BUTTON          PB2<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_LOW()   DDRB |=  (1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SCL) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_LOW()   DDRB |=  (1&lt;&lt;I2C_SCL) <\/span>\r\n\u00a0\r\nconst char Message1<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #ff0000;\">\"TEMPERATURE\"<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">int<\/span> main<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  PORTB <span style=\"color: #66cc66;\">|<\/span>=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                           \r\n <span style=\"color: #808080; font-style: italic;\">\/\/ OLED_clear(); <\/span>\r\n\u00a0\r\n  <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span> \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> == <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    <span style=\"color: #0066cc;\">int<\/span> temp = read_temp<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_cursor<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">28<\/span>, <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;                  \r\n    OLED_printP<span style=\"color: #66cc66;\">(<\/span>Message1<span style=\"color: #66cc66;\">)<\/span>;  \r\n    OLED_cursor<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">45<\/span>, <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n    byte a0 = temp<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">100<\/span>;\r\n    OLED_num<span style=\"color: #66cc66;\">(<\/span>a0<span style=\"color: #66cc66;\">)<\/span>;\r\n    a0 = temp<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">%<\/span>10;\r\n    OLED_num<span style=\"color: #66cc66;\">(<\/span>a0<span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_num<span style=\"color: #66cc66;\">(<\/span>-<span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    a0 = temp<span style=\"color: #66cc66;\">%<\/span>10;\r\n    OLED_num<span style=\"color: #66cc66;\">(<\/span>a0<span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_num<span style=\"color: #66cc66;\">(<\/span>-<span style=\"color: #cc66cc;\">9<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_num<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">19<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">10000<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                   \r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ I2C \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>DDRB  <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                        \r\n    <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">data<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x80<span style=\"color: #66cc66;\">)<\/span> I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;data<span style=\"color: #66cc66;\">&lt;&lt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n  I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;asm<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"nop\"<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                         \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_start<span style=\"color: #66cc66;\">(<\/span>uint8_t addr<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_write<span style=\"color: #66cc66;\">(<\/span>addr<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ OLED \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_ADDR       0x78                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_CMD_MODE   0x00                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_DAT_MODE   0x40                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_INIT_LEN   12                 <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ OLED init settings<\/span>\r\nconst uint8_t OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0xA8, 0x1F,       <span style=\"color: #808080; font-style: italic;\">\/\/  0x1F for 128x32, 0x3F for 128x64 <\/span>\r\n  0x22, 0x00, 0x03, \r\n  0x20, 0x00,       \r\n  0xDA, 0x02,       \r\n  0x8D, 0x14,       \r\n  0xAF,             \r\n  0xA1, 0xC8 \r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Standard ASCII 5x8 font (adapted from Neven Boyanov and Stephen Denne)<\/span>\r\nconst uint8_t OLED_FONT<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0x00, 0x00, 0x00, 0x00, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/   0  <\/span>\r\n  0x00, 0x1c, 0x22, 0x41, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ ( 8 <\/span>\r\n  0x00, 0x41, 0x22, 0x1c, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ ) 9 <\/span>\r\n  0x14, 0x08, 0x3E, 0x08, 0x14, <span style=\"color: #808080; font-style: italic;\">\/\/ * 10<\/span>\r\n  0x08, 0x08, 0x3E, 0x08, 0x08, <span style=\"color: #808080; font-style: italic;\">\/\/ + 11<\/span>\r\n  0x00, 0x00, 0xA0, 0x60, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ , 12<\/span>\r\n  0x08, 0x08, 0x08, 0x08, 0x08, <span style=\"color: #808080; font-style: italic;\">\/\/ - 13<\/span>\r\n  0x00, 0x60, 0x60, 0x00, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ . 14<\/span>\r\n  0x20, 0x10, 0x08, 0x04, 0x02, <span style=\"color: #808080; font-style: italic;\">\/\/ \/ 15<\/span>\r\n  0x3E, 0x51, 0x49, 0x45, 0x3E, <span style=\"color: #808080; font-style: italic;\">\/\/ 0 16<\/span>\r\n  0x00, 0x42, 0x7F, 0x40, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ 1 17<\/span>\r\n  0x42, 0x61, 0x51, 0x49, 0x46, <span style=\"color: #808080; font-style: italic;\">\/\/ 2 18<\/span>\r\n  0x21, 0x41, 0x45, 0x4B, 0x31, <span style=\"color: #808080; font-style: italic;\">\/\/ 3 19<\/span>\r\n  0x18, 0x14, 0x12, 0x7F, 0x10, <span style=\"color: #808080; font-style: italic;\">\/\/ 4 20<\/span>\r\n  0x27, 0x45, 0x45, 0x45, 0x39, <span style=\"color: #808080; font-style: italic;\">\/\/ 5 21<\/span>\r\n  0x3C, 0x4A, 0x49, 0x49, 0x30, <span style=\"color: #808080; font-style: italic;\">\/\/ 6 22<\/span>\r\n  0x01, 0x71, 0x09, 0x05, 0x03, <span style=\"color: #808080; font-style: italic;\">\/\/ 7 23<\/span>\r\n  0x36, 0x49, 0x49, 0x49, 0x36, <span style=\"color: #808080; font-style: italic;\">\/\/ 8 24<\/span>\r\n  0x06, 0x49, 0x49, 0x29, 0x1E, <span style=\"color: #808080; font-style: italic;\">\/\/ 9 25<\/span>\r\n  0x00, 0x36, 0x36, 0x00, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ : 26<\/span>\r\n  0x00, 0x56, 0x36, 0x00, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ ; 27<\/span>\r\n  0x08, 0x14, 0x22, 0x41, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ &lt; 28<\/span>\r\n  0x14, 0x14, 0x14, 0x14, 0x14, <span style=\"color: #808080; font-style: italic;\">\/\/ = 29<\/span>\r\n  0x00, 0x41, 0x22, 0x14, 0x08, <span style=\"color: #808080; font-style: italic;\">\/\/ &gt; 30<\/span>\r\n  0x02, 0x01, 0x51, 0x09, 0x06, <span style=\"color: #808080; font-style: italic;\">\/\/ ? 31<\/span>\r\n  0x32, 0x49, 0x59, 0x51, 0x3E, <span style=\"color: #808080; font-style: italic;\">\/\/ @ 32<\/span>\r\n  0x7C, 0x12, 0x11, 0x12, 0x7C, <span style=\"color: #808080; font-style: italic;\">\/\/ A 33<\/span>\r\n  0x7F, 0x49, 0x49, 0x49, 0x36, <span style=\"color: #808080; font-style: italic;\">\/\/ B 34<\/span>\r\n  0x3E, 0x41, 0x41, 0x41, 0x22, <span style=\"color: #808080; font-style: italic;\">\/\/ C 35<\/span>\r\n  0x7F, 0x41, 0x41, 0x22, 0x1C, <span style=\"color: #808080; font-style: italic;\">\/\/ D 36<\/span>\r\n  0x7F, 0x49, 0x49, 0x49, 0x41, <span style=\"color: #808080; font-style: italic;\">\/\/ E 37<\/span>\r\n  0x7F, 0x09, 0x09, 0x09, 0x01, <span style=\"color: #808080; font-style: italic;\">\/\/ F 38<\/span>\r\n  0x3E, 0x41, 0x49, 0x49, 0x7A, <span style=\"color: #808080; font-style: italic;\">\/\/ G 39<\/span>\r\n  0x7F, 0x08, 0x08, 0x08, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ H 40<\/span>\r\n  0x00, 0x41, 0x7F, 0x41, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ I 41<\/span>\r\n  0x20, 0x40, 0x41, 0x3F, 0x01, <span style=\"color: #808080; font-style: italic;\">\/\/ J 42<\/span>\r\n  0x7F, 0x08, 0x14, 0x22, 0x41, <span style=\"color: #808080; font-style: italic;\">\/\/ K 43<\/span>\r\n  0x7F, 0x40, 0x40, 0x40, 0x40, <span style=\"color: #808080; font-style: italic;\">\/\/ L 44<\/span>\r\n  0x7F, 0x02, 0x0C, 0x02, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ M 45<\/span>\r\n  0x7F, 0x04, 0x08, 0x10, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ N 46<\/span>\r\n  0x3E, 0x41, 0x41, 0x41, 0x3E, <span style=\"color: #808080; font-style: italic;\">\/\/ O 47<\/span>\r\n  0x7F, 0x09, 0x09, 0x09, 0x06, <span style=\"color: #808080; font-style: italic;\">\/\/ P 48<\/span>\r\n  0x3E, 0x41, 0x51, 0x21, 0x5E, <span style=\"color: #808080; font-style: italic;\">\/\/ Q 49<\/span>\r\n  0x7F, 0x09, 0x19, 0x29, 0x46, <span style=\"color: #808080; font-style: italic;\">\/\/ R 50<\/span>\r\n  0x46, 0x49, 0x49, 0x49, 0x31, <span style=\"color: #808080; font-style: italic;\">\/\/ S 51<\/span>\r\n  0x01, 0x01, 0x7F, 0x01, 0x01, <span style=\"color: #808080; font-style: italic;\">\/\/ T 52<\/span>\r\n  0x3F, 0x40, 0x40, 0x40, 0x3F, <span style=\"color: #808080; font-style: italic;\">\/\/ U 53<\/span>\r\n  0x1F, 0x20, 0x40, 0x20, 0x1F, <span style=\"color: #808080; font-style: italic;\">\/\/ V 54<\/span>\r\n  0x3F, 0x40, 0x38, 0x40, 0x3F, <span style=\"color: #808080; font-style: italic;\">\/\/ W 55<\/span>\r\n  0x63, 0x14, 0x08, 0x14, 0x63, <span style=\"color: #808080; font-style: italic;\">\/\/ X 56<\/span>\r\n  0x07, 0x08, 0x70, 0x08, 0x07, <span style=\"color: #808080; font-style: italic;\">\/\/ Y 57<\/span>\r\n  0x61, 0x51, 0x49, 0x45, 0x43, <span style=\"color: #808080; font-style: italic;\">\/\/ Z 58<\/span>\r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                             \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  <span style=\"color: #b1b100;\">for<\/span> <span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">0<\/span>; i <span style=\"color: #66cc66;\">&lt;<\/span> OLED_INIT_LEN; i++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printC<span style=\"color: #66cc66;\">(<\/span>char ch<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  uint16_t offset = ch - <span style=\"color: #cc66cc;\">32<\/span> -<span style=\"color: #cc66cc;\">7<\/span>;              \r\n  offset += offset <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #cc66cc;\">2<\/span>;                  \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>;                       \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i=<span style=\"color: #cc66cc;\">5<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_FONT<span style=\"color: #66cc66;\">[<\/span>offset++<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printP<span style=\"color: #66cc66;\">(<\/span>const char<span style=\"color: #66cc66;\">*<\/span> p<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  char ch = pgm_read_byte<span style=\"color: #66cc66;\">(<\/span>p<span style=\"color: #66cc66;\">)<\/span>;            \r\n  <span style=\"color: #b1b100;\">while<\/span> <span style=\"color: #66cc66;\">(<\/span>ch <span style=\"color: #66cc66;\">!<\/span>= <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>OLED_printC<span style=\"color: #66cc66;\">(<\/span>ch<span style=\"color: #66cc66;\">)<\/span>;ch = pgm_read_byte<span style=\"color: #66cc66;\">(<\/span>++p<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                   \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_cursor<span style=\"color: #66cc66;\">(<\/span>uint8_t xpos, uint8_t ypos<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span>;                 \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0x10 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;     \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0xB0 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>ypos <span style=\"color: #66cc66;\">&amp;<\/span> 0x07<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;    \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                           \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  OLED_cursor<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span>, <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;                      \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint16_t i=<span style=\"color: #cc66cc;\">512<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_num<span style=\"color: #66cc66;\">(<\/span>byte num<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                 \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;    \r\n  OLED_printC<span style=\"color: #66cc66;\">(<\/span>num+<span style=\"color: #cc66cc;\">48<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;    \r\n  <span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/ DS18B20 \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\nuint8_t therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t i;\r\n    PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">480<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n    DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">60<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    i=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">420<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">return<\/span> i;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> therm_write_bit<span style=\"color: #66cc66;\">(<\/span>uint8_t bit<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>bit<span style=\"color: #66cc66;\">)<\/span> DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">60<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\nuint8_t therm_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t bit=<span style=\"color: #cc66cc;\">0<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">14<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> bit=<span style=\"color: #cc66cc;\">1<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">45<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">return<\/span> bit;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\nuint8_t therm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t i=<span style=\"color: #cc66cc;\">8<\/span>, n=<span style=\"color: #cc66cc;\">0<\/span>;\r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>i--<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>n<span style=\"color: #66cc66;\">&gt;&gt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;n<span style=\"color: #66cc66;\">|<\/span>=<span style=\"color: #66cc66;\">(<\/span>therm_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">7<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    <span style=\"color: #b1b100;\">return<\/span> n;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> therm_write_byte<span style=\"color: #66cc66;\">(<\/span>uint8_t byte<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t i=<span style=\"color: #cc66cc;\">8<\/span>;\r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>i--<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>therm_write_bit<span style=\"color: #66cc66;\">(<\/span>byte<span style=\"color: #66cc66;\">&amp;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;byte <span style=\"color: #66cc66;\">&gt;&gt;<\/span>= <span style=\"color: #cc66cc;\">1<\/span>;\r\n    <span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">int<\/span> read_temp<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">]<\/span>;\r\n    <span style=\"color: #0066cc;\">int<\/span> temper;\r\n    therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0xCC<span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0x44<span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">!<\/span>therm_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0xCC<span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0xBE<span style=\"color: #66cc66;\">)<\/span>;\r\n    temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">]<\/span>=therm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">]<\/span>=therm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">return<\/span> temper = <span style=\"color: #66cc66;\">(<\/span>temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">]<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #cc66cc;\">8<\/span> <span style=\"color: #66cc66;\">|<\/span> temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">*<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">16<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span><\/pre>\n<blockquote><p>\u0421\u043a\u0435\u0442\u0447 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 1002 \u0431\u0430\u0439\u0442 (97%) \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0441\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 1024 \u0431\u0430\u0439\u0442.<br \/>\n\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 0 \u0431\u0430\u0439\u0442 (0%) \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f 64 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c: 64 \u0431\u0430\u0439\u0442.<\/p><\/blockquote>\n<p><b>\u0422\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440 \u043d\u0430 DS18B20 \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0446\u0438\u0444\u0440\u0430\u043c\u0438<\/b><\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-103656.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112961\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-103656.png\" alt=\"\" width=\"362\" height=\"135\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-103656.png 362w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-103656-200x75.png 200w\" sizes=\"auto, (max-width: 362px) 100vw, 362px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112958\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557.png\" alt=\"\" width=\"633\" height=\"320\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557.png 633w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557-200x101.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-100557-500x253.png 500w\" sizes=\"auto, (max-width: 633px) 100vw, 633px\" \/><\/a><\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a OLED \u044d\u043a\u0440\u0430\u043d\u044b \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u044b\u0433\u043e\u0440\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u0441\u0432\u0435\u0447\u0435\u043d\u0438\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0442\u043e \u0432 \u0441\u0445\u0435\u043c\u0443 \u0442\u0435\u0440\u043c\u043e\u043c\u0435\u0442\u0440\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d \u043d\u0430 10 \u0441\u0435\u043a\u0443\u043d\u0434 \u0430 \u043f\u043e\u0442\u043e\u043c \u0433\u0430\u0441\u043d\u0435\u0442 \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #808080; font-style: italic;\">#include &lt;avr\/io.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;util\/delay.h&gt;<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Project Files (Github):  https:\/\/github.com\/wagiminator\/ATtiny13-TinyOLEDdemo<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ License: http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA         PB3                   <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL         PB4                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define TEMP            PB0<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define BUTTON          PB2<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_LOW()   DDRB |=  (1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SCL) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_LOW()   DDRB |=  (1&lt;&lt;I2C_SCL) <\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">int<\/span> main<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    PORTB <span style=\"color: #66cc66;\">|<\/span>=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                    \r\n\u00a0\r\n<span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span> \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> == <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>   \r\n    <span style=\"color: #0066cc;\">int<\/span> temp = read_temp<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    byte a0 = temp<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">100<\/span>;\r\n    byte a1 = temp<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">%<\/span>10;\r\n    byte a2 = temp<span style=\"color: #66cc66;\">%<\/span>10;\r\n    uint8_t buffer<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">8<\/span><span style=\"color: #66cc66;\">]<\/span> = <span style=\"color: #66cc66;\">{<\/span><span style=\"color: #cc66cc;\">19<\/span>, a0, a1, <span style=\"color: #cc66cc;\">16<\/span>, a2, <span style=\"color: #cc66cc;\">19<\/span>, <span style=\"color: #cc66cc;\">12<\/span>, <span style=\"color: #cc66cc;\">19<\/span><span style=\"color: #66cc66;\">}<\/span>;                                               \r\n    OLED_printB<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">10000<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                   \r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ I2C \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>DDRB  <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                        \r\n    <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">data<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x80<span style=\"color: #66cc66;\">)<\/span> I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;data<span style=\"color: #66cc66;\">&lt;&lt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n  I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;asm<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"nop\"<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                         \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_start<span style=\"color: #66cc66;\">(<\/span>uint8_t addr<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_write<span style=\"color: #66cc66;\">(<\/span>addr<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ OLED \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_ADDR       0x78                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_CMD_MODE   0x00                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_DAT_MODE   0x40                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_INIT_LEN   15 <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ OLED init settings<\/span>\r\nconst uint8_t OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0xA8, 0x1F,       \r\n  0x22, 0x00, 0x03, \r\n  0x20, 0x01,       \r\n  0xDA, 0x02,       \r\n  0x8D, 0x14,       \r\n  0xAF,             \r\n  0x00, 0x10, 0xB0, \r\n  0xA1, 0xC8        \r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Simple reduced 3x8 font<\/span>\r\nconst uint8_t OLED_FONT<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0x7F, 0x41, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 0  0<\/span>\r\n  0x00, 0x00, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 1  1<\/span>\r\n  0x79, 0x49, 0x4F, <span style=\"color: #808080; font-style: italic;\">\/\/ 2  2<\/span>\r\n  0x41, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 3  3<\/span>\r\n  0x0F, 0x08, 0x7E, <span style=\"color: #808080; font-style: italic;\">\/\/ 4  4<\/span>\r\n  0x4F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 5  5<\/span>\r\n  0x7F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 6  6<\/span>\r\n  0x03, 0x01, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 7  7<\/span>\r\n  0x7F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 8  8<\/span>\r\n  0x4F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 9  9<\/span>\r\n  0x7F, 0x09, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ A 10<\/span>\r\n  0x7F, 0x48, 0x78, <span style=\"color: #808080; font-style: italic;\">\/\/ b 11<\/span>\r\n  0x7F, 0x41, 0x63, <span style=\"color: #808080; font-style: italic;\">\/\/ C 12<\/span>\r\n  0x78, 0x48, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ d 13<\/span>\r\n  0x7F, 0x49, 0x41, <span style=\"color: #808080; font-style: italic;\">\/\/ E 14<\/span>\r\n  0x7F, 0x09, 0x01, <span style=\"color: #808080; font-style: italic;\">\/\/ F 15<\/span>\r\n  0x00, 0x60, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ . 16<\/span>\r\n  0x00, 0x36, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ : 17<\/span>\r\n  0x08, 0x08, 0x08, <span style=\"color: #808080; font-style: italic;\">\/\/ - 18<\/span>\r\n  0x00, 0x00, 0x00  <span style=\"color: #808080; font-style: italic;\">\/\/   19<\/span>\r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_cursor<span style=\"color: #66cc66;\">(<\/span>uint8_t xpos, uint8_t ypos<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span>;                 \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0x10 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;     \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0xB0 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>ypos <span style=\"color: #66cc66;\">&amp;<\/span> 0x07<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;    \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                           \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  OLED_cursor<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span>, <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;                      \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint16_t i=<span style=\"color: #cc66cc;\">512<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                             \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  <span style=\"color: #b1b100;\">for<\/span> <span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">0<\/span>; i <span style=\"color: #66cc66;\">&lt;<\/span> OLED_INIT_LEN; i++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\nuint8_t OLED_stretch<span style=\"color: #66cc66;\">(<\/span>uint8_t b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>b=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>b <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">3<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">&amp;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">2<\/span>;<span style=\"color: #b1b100;\">return<\/span> b;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>uint8_t ch<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  uint8_t i, j, k, b;                     \r\n  uint8_t sb<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">]<\/span>;                          \r\n  ch += ch <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #cc66cc;\">1<\/span>;                          \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>;       \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">3<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                      \r\n    b = pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_FONT<span style=\"color: #66cc66;\">[<\/span>ch++<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n    <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>j=<span style=\"color: #cc66cc;\">0<\/span>; j<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; j++, b <span style=\"color: #66cc66;\">&gt;&gt;<\/span>= <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> sb<span style=\"color: #66cc66;\">[<\/span>j<span style=\"color: #66cc66;\">]<\/span> = OLED_stretch<span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">)<\/span>;  \r\n    j=<span style=\"color: #cc66cc;\">4<\/span>; <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>i==<span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> j=<span style=\"color: #cc66cc;\">6<\/span>;               \r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>j--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                    \r\n      <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>k=<span style=\"color: #cc66cc;\">0<\/span>; k<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; k++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>sb<span style=\"color: #66cc66;\">[<\/span>k<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printB<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #66cc66;\">*<\/span>buffer<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;      \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i=<span style=\"color: #cc66cc;\">0<\/span>; i<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">8<\/span>; i++<span style=\"color: #66cc66;\">)<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/ DS18B20 \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\nuint8_t therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t i;\r\n    PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">480<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n    DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">60<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    i=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">420<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">return<\/span> i;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> therm_write_bit<span style=\"color: #66cc66;\">(<\/span>uint8_t bit<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>bit<span style=\"color: #66cc66;\">)<\/span> DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">60<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\nuint8_t therm_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t bit=<span style=\"color: #cc66cc;\">0<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">14<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> TEMP<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> bit=<span style=\"color: #cc66cc;\">1<\/span>;\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">45<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">return<\/span> bit;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\nuint8_t therm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t i=<span style=\"color: #cc66cc;\">8<\/span>, n=<span style=\"color: #cc66cc;\">0<\/span>;\r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>i--<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>n<span style=\"color: #66cc66;\">&gt;&gt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;n<span style=\"color: #66cc66;\">|<\/span>=<span style=\"color: #66cc66;\">(<\/span>therm_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">7<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    <span style=\"color: #b1b100;\">return<\/span> n;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> therm_write_byte<span style=\"color: #66cc66;\">(<\/span>uint8_t byte<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t i=<span style=\"color: #cc66cc;\">8<\/span>;\r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>i--<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>therm_write_bit<span style=\"color: #66cc66;\">(<\/span>byte<span style=\"color: #66cc66;\">&amp;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;byte <span style=\"color: #66cc66;\">&gt;&gt;<\/span>= <span style=\"color: #cc66cc;\">1<\/span>;\r\n    <span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">int<\/span> read_temp<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    uint8_t temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">]<\/span>;\r\n    <span style=\"color: #0066cc;\">int<\/span> temper;\r\n    therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0xCC<span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0x44<span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">!<\/span>therm_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0xCC<span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_write_byte<span style=\"color: #66cc66;\">(<\/span>0xBE<span style=\"color: #66cc66;\">)<\/span>;\r\n    temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">]<\/span>=therm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">]<\/span>=therm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    therm_reset<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">return<\/span> temper = <span style=\"color: #66cc66;\">(<\/span>temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">]<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #cc66cc;\">8<\/span> <span style=\"color: #66cc66;\">|<\/span> temperature<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">*<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">16<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span><\/pre>\n<blockquote><p>\u0421\u043a\u0435\u0442\u0447 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 860 \u0431\u0430\u0439\u0442 (83%) \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0441\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 1024 \u0431\u0430\u0439\u0442.<br \/>\n\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 0 \u0431\u0430\u0439\u0442 (0%) \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f 64 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c: 64 \u0431\u0430\u0439\u0442.<\/p><\/blockquote>\n<p><strong>\u0421\u0435\u043a\u0443\u043d\u0434\u043e\u043c\u0435\u0440\u00a0<\/strong><\/p>\n<table style=\"border-collapse: collapse; width: 100%;\" border=\"1\">\n<tbody>\n<tr>\n<td style=\"width: 50%;\"><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110105.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112962\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110105.png\" alt=\"\" width=\"376\" height=\"143\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110105.png 376w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110105-200x76.png 200w\" sizes=\"auto, (max-width: 376px) 100vw, 376px\" \/><\/a><\/td>\n<td style=\"width: 50%;\"><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110059.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112963\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110059.png\" alt=\"\" width=\"372\" height=\"131\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110059.png 372w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110059-200x70.png 200w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u0414\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u0441\u0447\u0435\u0442\u0430 0,1 \u0441\u0435\u043a\u0443\u043d\u0434\u0430, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f 999 \u043c\u0438\u043d\u0443\u0442. \u041f\u0435\u0440\u0432\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 BUTTON \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u043e\u043c\u0435\u0440, \u0432\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0435\u0433\u043e, \u0442\u0440\u0435\u0442\u044c\u0435 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438\u044f.<\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110020.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112964\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110020.png\" alt=\"\" width=\"515\" height=\"264\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110020.png 515w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110020-200x103.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-110020-500x256.png 500w\" sizes=\"auto, (max-width: 515px) 100vw, 515px\" \/><\/a><\/p>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #808080; font-style: italic;\">#include &lt;avr\/io.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;util\/delay.h&gt;<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Project Files (Github):  https:\/\/github.com\/wagiminator\/ATtiny13-TinyOLEDdemo<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ License: http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA         PB3                   <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL         PB4                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define BUTTON          PB2<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_LOW()   DDRB |=  (1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SCL) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_LOW()   DDRB |=  (1&lt;&lt;I2C_SCL) <\/span>\r\n\u00a0\r\nbyte msec,sec;\r\n<span style=\"color: #0066cc;\">int<\/span> <span style=\"color: #0066cc;\">min<\/span>;\r\nbyte w;\r\n\u00a0\r\n\u00a0\r\n<span style=\"color: #0066cc;\">int<\/span> main<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    PORTB <span style=\"color: #66cc66;\">|<\/span>=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                    \r\n\u00a0\r\n<span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span> \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> == <span style=\"color: #cc66cc;\">0<\/span> <span style=\"color: #66cc66;\">&amp;&amp;<\/span> w==<span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>w=<span style=\"color: #cc66cc;\">1<\/span>;_delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">200<\/span><span style=\"color: #66cc66;\">)<\/span>;msec=<span style=\"color: #cc66cc;\">200<\/span>;<span style=\"color: #66cc66;\">}<\/span>  \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> == <span style=\"color: #cc66cc;\">0<\/span> <span style=\"color: #66cc66;\">&amp;&amp;<\/span> w==<span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>w=<span style=\"color: #cc66cc;\">2<\/span>;_delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">200<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span> \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> == <span style=\"color: #cc66cc;\">0<\/span> <span style=\"color: #66cc66;\">&amp;&amp;<\/span> w==<span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>w=<span style=\"color: #cc66cc;\">0<\/span>;_delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">200<\/span><span style=\"color: #66cc66;\">)<\/span>;msec=<span style=\"color: #cc66cc;\">0<\/span>;sec=<span style=\"color: #cc66cc;\">0<\/span>;<span style=\"color: #0066cc;\">min<\/span>=<span style=\"color: #cc66cc;\">0<\/span>;<span style=\"color: #66cc66;\">}<\/span>  \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>w==<span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    _delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">100<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    msec++;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>msec<span style=\"color: #66cc66;\">&gt;<\/span><span style=\"color: #cc66cc;\">9<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>sec++;msec=<span style=\"color: #cc66cc;\">0<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>sec<span style=\"color: #66cc66;\">&gt;<\/span><span style=\"color: #cc66cc;\">59<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span><span style=\"color: #0066cc;\">min<\/span>++;sec=<span style=\"color: #cc66cc;\">0<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>min<span style=\"color: #66cc66;\">&gt;<\/span><span style=\"color: #cc66cc;\">999<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span><span style=\"color: #0066cc;\">min<\/span>=<span style=\"color: #cc66cc;\">0<\/span>;sec=<span style=\"color: #cc66cc;\">0<\/span>;<span style=\"color: #0066cc;\">min<\/span>=<span style=\"color: #cc66cc;\">0<\/span>;msec=<span style=\"color: #cc66cc;\">0<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    <span style=\"color: #66cc66;\">}<\/span>\r\n    uint8_t buffer<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">8<\/span><span style=\"color: #66cc66;\">]<\/span> = <span style=\"color: #66cc66;\">{<\/span><span style=\"color: #0066cc;\">min<\/span><span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">100<\/span>, <span style=\"color: #0066cc;\">min<\/span><span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">%<\/span>10, min<span style=\"color: #66cc66;\">%<\/span>10,<span style=\"color: #cc66cc;\">17<\/span>, sec<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span>, sec<span style=\"color: #66cc66;\">%<\/span>10, <span style=\"color: #cc66cc;\">16<\/span>, msec<span style=\"color: #66cc66;\">}<\/span>;                                               \r\n    OLED_printB<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">)<\/span>;               \r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ I2C \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>DDRB  <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                        \r\n    <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">data<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x80<span style=\"color: #66cc66;\">)<\/span> I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;data<span style=\"color: #66cc66;\">&lt;&lt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n  I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;asm<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"nop\"<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                         \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_start<span style=\"color: #66cc66;\">(<\/span>uint8_t addr<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_write<span style=\"color: #66cc66;\">(<\/span>addr<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ OLED \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_ADDR       0x78                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_CMD_MODE   0x00                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_DAT_MODE   0x40                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_INIT_LEN   15 <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ OLED init settings<\/span>\r\nconst uint8_t OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0xA8, 0x1F,       \r\n  0x22, 0x00, 0x03, \r\n  0x20, 0x01,       \r\n  0xDA, 0x02,       \r\n  0x8D, 0x14,       \r\n  0xAF,             \r\n  0x00, 0x10, 0xB0, \r\n  0xA1, 0xC8        \r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Simple reduced 3x8 font<\/span>\r\nconst uint8_t OLED_FONT<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0x7F, 0x41, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 0  0<\/span>\r\n  0x00, 0x00, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 1  1<\/span>\r\n  0x79, 0x49, 0x4F, <span style=\"color: #808080; font-style: italic;\">\/\/ 2  2<\/span>\r\n  0x41, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 3  3<\/span>\r\n  0x0F, 0x08, 0x7E, <span style=\"color: #808080; font-style: italic;\">\/\/ 4  4<\/span>\r\n  0x4F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 5  5<\/span>\r\n  0x7F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 6  6<\/span>\r\n  0x03, 0x01, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 7  7<\/span>\r\n  0x7F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 8  8<\/span>\r\n  0x4F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 9  9<\/span>\r\n  0x7F, 0x09, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ A 10<\/span>\r\n  0x7F, 0x48, 0x78, <span style=\"color: #808080; font-style: italic;\">\/\/ b 11<\/span>\r\n  0x7F, 0x41, 0x63, <span style=\"color: #808080; font-style: italic;\">\/\/ C 12<\/span>\r\n  0x78, 0x48, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ d 13<\/span>\r\n  0x7F, 0x49, 0x41, <span style=\"color: #808080; font-style: italic;\">\/\/ E 14<\/span>\r\n  0x7F, 0x09, 0x01, <span style=\"color: #808080; font-style: italic;\">\/\/ F 15<\/span>\r\n  0x00, 0x60, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ . 16<\/span>\r\n  0x00, 0x36, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ : 17<\/span>\r\n  0x08, 0x08, 0x08, <span style=\"color: #808080; font-style: italic;\">\/\/ - 18<\/span>\r\n  0x00, 0x00, 0x00  <span style=\"color: #808080; font-style: italic;\">\/\/   19<\/span>\r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_cursor<span style=\"color: #66cc66;\">(<\/span>uint8_t xpos, uint8_t ypos<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span>;                 \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0x10 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;     \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0xB0 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>ypos <span style=\"color: #66cc66;\">&amp;<\/span> 0x07<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;    \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                           \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  OLED_cursor<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span>, <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;                      \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint16_t i=<span style=\"color: #cc66cc;\">512<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                             \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  <span style=\"color: #b1b100;\">for<\/span> <span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">0<\/span>; i <span style=\"color: #66cc66;\">&lt;<\/span> OLED_INIT_LEN; i++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\nuint8_t OLED_stretch<span style=\"color: #66cc66;\">(<\/span>uint8_t b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>b=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>b <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">3<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">&amp;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">2<\/span>;<span style=\"color: #b1b100;\">return<\/span> b;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>uint8_t ch<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  uint8_t i, j, k, b;                     \r\n  uint8_t sb<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">]<\/span>;                          \r\n  ch += ch <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #cc66cc;\">1<\/span>;                          \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>;       \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">3<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                      \r\n    b = pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_FONT<span style=\"color: #66cc66;\">[<\/span>ch++<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n    <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>j=<span style=\"color: #cc66cc;\">0<\/span>; j<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; j++, b <span style=\"color: #66cc66;\">&gt;&gt;<\/span>= <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> sb<span style=\"color: #66cc66;\">[<\/span>j<span style=\"color: #66cc66;\">]<\/span> = OLED_stretch<span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">)<\/span>;  \r\n    j=<span style=\"color: #cc66cc;\">4<\/span>; <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>i==<span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> j=<span style=\"color: #cc66cc;\">6<\/span>;               \r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>j--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                    \r\n      <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>k=<span style=\"color: #cc66cc;\">0<\/span>; k<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; k++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>sb<span style=\"color: #66cc66;\">[<\/span>k<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printB<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #66cc66;\">*<\/span>buffer<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;      \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i=<span style=\"color: #cc66cc;\">0<\/span>; i<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">8<\/span>; i++<span style=\"color: #66cc66;\">)<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span><\/pre>\n<blockquote><p>\u0421\u043a\u0435\u0442\u0447 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 886 \u0431\u0430\u0439\u0442 (86%) \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0441\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 1024 \u0431\u0430\u0439\u0442.<br \/>\n\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 5 \u0431\u0430\u0439\u0442 (7%) \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f 59 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c: 64 \u0431\u0430\u0439\u0442.<\/p><\/blockquote>\n<p><strong>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0447\u0430\u0441\u044b \u043d\u0430 DS1307<\/strong><\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123130.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112967\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123130.png\" alt=\"\" width=\"383\" height=\"137\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123130.png 383w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123130-200x72.png 200w\" sizes=\"auto, (max-width: 383px) 100vw, 383px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123428.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112968\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123428.png\" alt=\"\" width=\"664\" height=\"259\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123428.png 664w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123428-200x78.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-123428-500x195.png 500w\" sizes=\"auto, (max-width: 664px) 100vw, 664px\" \/><\/a><\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0447\u0430\u0441\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0430 \u0447\u0430\u0441\u0430\u0445 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 DS1307 (\u043c\u043e\u0434\u0443\u043b\u044c).<\/p>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<blockquote><p><strong>set_time(21,2,5,11,12,28,0);\/\/ \u0433\u043e\u0434 00-99, \u0414\u041d 1-7 (1=\u0412\u0421), \u043c\u0435\u0441 1-12, \u0434\u0430\u0442\u0430 1-31, \u0447\u0430\u0441 0-23, \u043c\u0438\u043d 0-59, \u0441\u0435\u043a 0-59 <\/strong><\/p><\/blockquote>\n<p>\u0417\u0430\u043b\u0435\u0439\u0442\u0435 \u0441\u043a\u0435\u0442\u0447 \u0438 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<blockquote><p><strong>\/\/ set_time(21,2,5,11,12,28,0);\/\/ \u0433\u043e\u0434 00-99, \u0414\u041d 1-7 (1=\u0412\u0421), \u043c\u0435\u0441 1-12, \u0434\u0430\u0442\u0430 1-31, \u0447\u0430\u0441 0-23, \u043c\u0438\u043d 0-59, \u0441\u0435\u043a 0-59<\/strong><\/p><\/blockquote>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #808080; font-style: italic;\">#include &lt;avr\/io.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;util\/delay.h&gt;<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Project Files (Github):  https:\/\/github.com\/wagiminator\/ATtiny13-TinyOLEDdemo<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ License: http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA         PB3                   <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL         PB4                  <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_LOW()   DDRB |=  (1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SCL) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_LOW()   DDRB |=  (1&lt;&lt;I2C_SCL) <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_ADDR       0x78                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_CMD_MODE   0x00                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_DAT_MODE   0x40                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_INIT_LEN   15 <\/span>\r\n\r\n<span style=\"color: #0066cc;\">int<\/span> main<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n   <span style=\"color: #808080; font-style: italic;\">\/\/  set_time(21,2,5,11,12,28,0);\/\/ \u0433\u043e\u0434 00-99, \u0414\u041d 1-7 (1=\u0412\u0421), \u043c\u0435\u0441\u044f\u0446 1-12, \u0434\u0430\u0442\u0430 1-31, \u0447\u0430\u0441 0-23, \u043c\u0438\u043d\u0443\u0442\u044b 0-59, \u0441\u0435\u043a\u0443\u043d\u0434\u044b 0-59                   <\/span>\r\n\u00a0\r\n<span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span> \r\n\u00a0\r\n    byte sec =  <span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span> + <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x70<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    byte <span style=\"color: #0066cc;\">min<\/span> =  <span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span> + <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x70<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    byte hour = <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span> + <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x70<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    uint8_t buffer<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">8<\/span><span style=\"color: #66cc66;\">]<\/span> = <span style=\"color: #66cc66;\">{<\/span>hour<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span>,hour<span style=\"color: #66cc66;\">%<\/span>10,<span style=\"color: #cc66cc;\">17<\/span>,<span style=\"color: #0066cc;\">min<\/span><span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span>,min<span style=\"color: #66cc66;\">%<\/span>10,<span style=\"color: #cc66cc;\">17<\/span>,sec<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span>,sec<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">}<\/span>;                                               \r\n    OLED_printB<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">)<\/span>; \r\n    _delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">100<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n\u00a0\r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/\/  DS1307 I2C<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> set_time<span style=\"color: #66cc66;\">(<\/span>byte years, byte days, byte monts, byte datas, byte hours ,byte minute, byte second<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x00,<span style=\"color: #66cc66;\">(<\/span>second<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+second<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x01,<span style=\"color: #66cc66;\">(<\/span>minute<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+minute<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x02,<span style=\"color: #66cc66;\">(<\/span>hours<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+hours<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x03,days<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x04,<span style=\"color: #66cc66;\">(<\/span>datas<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+datas<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x05,<span style=\"color: #66cc66;\">(<\/span>monts<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+monts<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x06,<span style=\"color: #66cc66;\">(<\/span>years<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+years<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n  <span style=\"color: #66cc66;\">}<\/span>  \r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> ds_write<span style=\"color: #66cc66;\">(<\/span>byte reg, byte <span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n     I2C_start<span style=\"color: #66cc66;\">(<\/span>0b1101000<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span>reg<span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  <span style=\"color: #66cc66;\">}<\/span>   \r\n\u00a0\r\nbool i2c_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    bool i2c_bit = <span style=\"color: #cc66cc;\">1<\/span>;        \r\n    I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;           \r\n    I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> i2c_bit=<span style=\"color: #cc66cc;\">0<\/span>;                            \r\n    I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;              \r\n    <span style=\"color: #b1b100;\">return<\/span> i2c_bit;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\nbyte i2c_read_byte<span style=\"color: #66cc66;\">(<\/span>byte a<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    byte i, <span style=\"color: #0066cc;\">data<\/span>=<span style=\"color: #cc66cc;\">0<\/span>;                \r\n    <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">0<\/span>; i<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">8<\/span>; i++<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span><span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">!<\/span>i2c_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #0066cc;\">data<\/span>++;<span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>i<span style=\"color: #66cc66;\">!<\/span>=<span style=\"color: #cc66cc;\">7<\/span><span style=\"color: #66cc66;\">)<\/span> data<span style=\"color: #66cc66;\">&lt;&lt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;<span style=\"color: #66cc66;\">}<\/span>        \r\n    I2C_write<span style=\"color: #66cc66;\">(<\/span>a<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #b1b100;\">return<\/span> <span style=\"color: #0066cc;\">data<\/span>;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> i2c_write_bit<span style=\"color: #66cc66;\">(<\/span>byte b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">5<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span><span style=\"color: #66cc66;\">{<\/span>I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">5<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;      \r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n\u00a0\r\nbyte ds_read<span style=\"color: #66cc66;\">(<\/span>byte reg<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n     byte dat=<span style=\"color: #cc66cc;\">0<\/span>;\r\n     I2C_start<span style=\"color: #66cc66;\">(<\/span>0b1101000<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span>reg<span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_start<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>0b1101000<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     dat = i2c_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     <span style=\"color: #b1b100;\">return<\/span> dat;\r\n  <span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ I2C \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>DDRB  <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                        \r\n    <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">data<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x80<span style=\"color: #66cc66;\">)<\/span> I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;data<span style=\"color: #66cc66;\">&lt;&lt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n  I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;asm<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"nop\"<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                         \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_start<span style=\"color: #66cc66;\">(<\/span>uint8_t addr<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n     DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span>; DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SCL<span style=\"color: #66cc66;\">)<\/span>;\r\n     DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span>;  PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span>;\r\n     DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SCL<span style=\"color: #66cc66;\">)<\/span>;  PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SCL<span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span>addr<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ OLED \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ OLED init settings<\/span>\r\nconst uint8_t OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0xA8, 0x1F,       \r\n  0x22, 0x00, 0x03, \r\n  0x20, 0x01,       \r\n  0xDA, 0x02,       \r\n  0x8D, 0x14,       \r\n  0xAF,             \r\n  0x00, 0x10, 0xB0, \r\n  0xA1, 0xC8        \r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Simple reduced 3x8 font<\/span>\r\nconst uint8_t OLED_FONT<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0x7F, 0x41, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 0  0<\/span>\r\n  0x00, 0x00, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 1  1<\/span>\r\n  0x79, 0x49, 0x4F, <span style=\"color: #808080; font-style: italic;\">\/\/ 2  2<\/span>\r\n  0x41, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 3  3<\/span>\r\n  0x0F, 0x08, 0x7E, <span style=\"color: #808080; font-style: italic;\">\/\/ 4  4<\/span>\r\n  0x4F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 5  5<\/span>\r\n  0x7F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 6  6<\/span>\r\n  0x03, 0x01, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 7  7<\/span>\r\n  0x7F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 8  8<\/span>\r\n  0x4F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 9  9<\/span>\r\n  0x7F, 0x09, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ A 10<\/span>\r\n  0x7F, 0x48, 0x78, <span style=\"color: #808080; font-style: italic;\">\/\/ b 11<\/span>\r\n  0x7F, 0x41, 0x63, <span style=\"color: #808080; font-style: italic;\">\/\/ C 12<\/span>\r\n  0x78, 0x48, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ d 13<\/span>\r\n  0x7F, 0x49, 0x41, <span style=\"color: #808080; font-style: italic;\">\/\/ E 14<\/span>\r\n  0x7F, 0x09, 0x01, <span style=\"color: #808080; font-style: italic;\">\/\/ F 15<\/span>\r\n  0x00, 0x60, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ . 16<\/span>\r\n  0x00, 0x36, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ : 17<\/span>\r\n  0x08, 0x08, 0x08, <span style=\"color: #808080; font-style: italic;\">\/\/ - 18<\/span>\r\n  0x00, 0x00, 0x00  <span style=\"color: #808080; font-style: italic;\">\/\/   19<\/span>\r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_cursor<span style=\"color: #66cc66;\">(<\/span>uint8_t xpos, uint8_t ypos<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span>;                 \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0x10 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;     \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0xB0 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>ypos <span style=\"color: #66cc66;\">&amp;<\/span> 0x07<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;    \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                           \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  OLED_cursor<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span>, <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;                      \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint16_t i=<span style=\"color: #cc66cc;\">512<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                             \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  <span style=\"color: #b1b100;\">for<\/span> <span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">0<\/span>; i <span style=\"color: #66cc66;\">&lt;<\/span> OLED_INIT_LEN; i++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\nuint8_t OLED_stretch<span style=\"color: #66cc66;\">(<\/span>uint8_t b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>b=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>b <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">3<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">&amp;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">2<\/span>;<span style=\"color: #b1b100;\">return<\/span> b;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>uint8_t ch<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  uint8_t i, j, k, b;                     \r\n  uint8_t sb<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">]<\/span>;                          \r\n  ch += ch <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #cc66cc;\">1<\/span>;                          \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>;       \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">3<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                      \r\n    b = pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_FONT<span style=\"color: #66cc66;\">[<\/span>ch++<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n    <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>j=<span style=\"color: #cc66cc;\">0<\/span>; j<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; j++, b <span style=\"color: #66cc66;\">&gt;&gt;<\/span>= <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> sb<span style=\"color: #66cc66;\">[<\/span>j<span style=\"color: #66cc66;\">]<\/span> = OLED_stretch<span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">)<\/span>;  \r\n    j=<span style=\"color: #cc66cc;\">4<\/span>; <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>i==<span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> j=<span style=\"color: #cc66cc;\">6<\/span>;               \r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>j--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                    \r\n      <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>k=<span style=\"color: #cc66cc;\">0<\/span>; k<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; k++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>sb<span style=\"color: #66cc66;\">[<\/span>k<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printB<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #66cc66;\">*<\/span>buffer<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;      \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i=<span style=\"color: #cc66cc;\">0<\/span>; i<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">8<\/span>; i++<span style=\"color: #66cc66;\">)<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span><\/pre>\n<blockquote><p>\u0421\u043a\u0435\u0442\u0447 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 714 \u0431\u0430\u0439\u0442 (69%) \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0441\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 1024 \u0431\u0430\u0439\u0442.<br \/>\n\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 0 \u0431\u0430\u0439\u0442 (0%) \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f 64 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c: 64 \u0431\u0430\u0439\u0442.<\/p><\/blockquote>\n<p><strong>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u0447\u0430\u0441\u044b \u0441 \u0433\u0430\u0448\u0435\u043d\u0438\u0435\u043c \u044d\u043a\u0440\u0430\u043d\u0430<\/strong><\/p>\n<p><a href=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-125334.png\" class=\"highslide-image\" onclick=\"return hs.expand(this);\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-112972\" src=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-125334.png\" alt=\"\" width=\"663\" height=\"279\" srcset=\"http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-125334.png 663w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-125334-200x84.png 200w, http:\/\/rcl-radio.ru\/wp-content\/uploads\/2022\/02\/\u0421\u043d\u0438\u043c\u043e\u043a-\u044d\u043a\u0440\u0430\u043d\u0430-\u043e\u0442-2022-02-13-125334-500x210.png 500w\" sizes=\"auto, (max-width: 663px) 100vw, 663px\" \/><\/a><\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u044f OLED \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 \u0441\u0445\u0435\u043c\u0443 \u0447\u0430\u0441\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 BUTTON, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430 10 \u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430\u0433\u043e\u0440\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0440\u0430\u043d, \u0430 \u043f\u043e\u0442\u043e\u043c \u0433\u0430\u0441\u043d\u0435\u0442.<\/p>\n<pre class=\"actionscript\" style=\"font-family: monospace; font-size: 10px;\"><span style=\"color: #808080; font-style: italic;\">#include &lt;avr\/io.h&gt;<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#include &lt;util\/delay.h&gt;<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Project Files (Github):  https:\/\/github.com\/wagiminator\/ATtiny13-TinyOLEDdemo<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ License: http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA         PB3                   <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL         PB4                  <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SDA_LOW()   DDRB |=  (1&lt;&lt;I2C_SDA) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_HIGH()  DDRB &amp;= ~(1&lt;&lt;I2C_SCL) <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define I2C_SCL_LOW()   DDRB |=  (1&lt;&lt;I2C_SCL) <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_ADDR       0x78                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_CMD_MODE   0x00                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_DAT_MODE   0x40                  <\/span>\r\n<span style=\"color: #808080; font-style: italic;\">#define OLED_INIT_LEN   15 <\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">#define BUTTON          PB2<\/span>\r\n\u00a0\r\nbyte w;\r\n<span style=\"color: #0066cc;\">int<\/span> tic;\r\n\u00a0\r\n\u00a0\r\n<span style=\"color: #0066cc;\">int<\/span> main<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    PORTB <span style=\"color: #66cc66;\">|<\/span>=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n   <span style=\"color: #808080; font-style: italic;\">\/\/  set_time(21,2,5,11,12,28,0);\/\/ \u0433\u043e\u0434 00-99, \u0414\u041d 1-7 (1=\u0412\u0421), \u043c\u0435\u0441\u044f\u0446 1-12, \u0434\u0430\u0442\u0430 1-31, \u0447\u0430\u0441 0-23, \u043c\u0438\u043d\u0443\u0442\u044b 0-59, \u0441\u0435\u043a\u0443\u043d\u0434\u044b 0-59                   <\/span>\r\n\u00a0\r\n<span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span> \r\n\u00a0\r\n    byte sec =  <span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span> + <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x70<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    byte <span style=\"color: #0066cc;\">min<\/span> =  <span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span> + <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x70<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    byte hour = <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span> + <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>ds_read<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x70<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">*<\/span> <span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    uint8_t buffer<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">8<\/span><span style=\"color: #66cc66;\">]<\/span> = <span style=\"color: #66cc66;\">{<\/span>hour<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span>,hour<span style=\"color: #66cc66;\">%<\/span>10,<span style=\"color: #cc66cc;\">17<\/span>,<span style=\"color: #0066cc;\">min<\/span><span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span>,min<span style=\"color: #66cc66;\">%<\/span>10,<span style=\"color: #cc66cc;\">17<\/span>,sec<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span>,sec<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">}<\/span>;                                               \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #0066cc;\">BUTTON<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> == <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>w=<span style=\"color: #cc66cc;\">1<\/span>;_delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">300<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>w==<span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&amp;&amp;<\/span> tic <span style=\"color: #66cc66;\">&lt;<\/span>=<span style=\"color: #cc66cc;\">100<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    tic++;  \r\n    OLED_printB<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">)<\/span>; \r\n    _delay_ms<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">100<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>tic==<span style=\"color: #cc66cc;\">100<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>tic=<span style=\"color: #cc66cc;\">0<\/span>;w=<span style=\"color: #cc66cc;\">0<\/span>;OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    <span style=\"color: #66cc66;\">}<\/span>           \r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/\/  DS1307 I2C<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> set_time<span style=\"color: #66cc66;\">(<\/span>byte years, byte days, byte monts, byte datas, byte hours ,byte minute, byte second<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x00,<span style=\"color: #66cc66;\">(<\/span>second<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+second<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x01,<span style=\"color: #66cc66;\">(<\/span>minute<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+minute<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x02,<span style=\"color: #66cc66;\">(<\/span>hours<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+hours<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x03,days<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x04,<span style=\"color: #66cc66;\">(<\/span>datas<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+datas<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x05,<span style=\"color: #66cc66;\">(<\/span>monts<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+monts<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n    ds_write<span style=\"color: #66cc66;\">(<\/span>0x06,<span style=\"color: #66cc66;\">(<\/span>years<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span>+years<span style=\"color: #66cc66;\">%<\/span>10<span style=\"color: #66cc66;\">)<\/span>;\r\n  <span style=\"color: #66cc66;\">}<\/span>  \r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> ds_write<span style=\"color: #66cc66;\">(<\/span>byte reg, byte <span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n     I2C_start<span style=\"color: #66cc66;\">(<\/span>0b1101000<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span>reg<span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n  <span style=\"color: #66cc66;\">}<\/span>   \r\n\u00a0\r\nbool i2c_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n    bool i2c_bit = <span style=\"color: #cc66cc;\">1<\/span>;        \r\n    I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;           \r\n    I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                \r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>PINB <span style=\"color: #66cc66;\">&gt;&gt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span> i2c_bit=<span style=\"color: #cc66cc;\">0<\/span>;                            \r\n    I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;              \r\n    <span style=\"color: #b1b100;\">return<\/span> i2c_bit;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\nbyte i2c_read_byte<span style=\"color: #66cc66;\">(<\/span>byte a<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    byte i, <span style=\"color: #0066cc;\">data<\/span>=<span style=\"color: #cc66cc;\">0<\/span>;                \r\n    <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">0<\/span>; i<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">8<\/span>; i++<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span><span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">!<\/span>i2c_read_bit<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #0066cc;\">data<\/span>++;<span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>i<span style=\"color: #66cc66;\">!<\/span>=<span style=\"color: #cc66cc;\">7<\/span><span style=\"color: #66cc66;\">)<\/span> data<span style=\"color: #66cc66;\">&lt;&lt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;<span style=\"color: #66cc66;\">}<\/span>        \r\n    I2C_write<span style=\"color: #66cc66;\">(<\/span>a<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #b1b100;\">return<\/span> <span style=\"color: #0066cc;\">data<\/span>;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> i2c_write_bit<span style=\"color: #66cc66;\">(<\/span>byte b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">5<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #b1b100;\">else<\/span><span style=\"color: #66cc66;\">{<\/span>I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">5<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;      \r\n    _delay_us<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n    I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n\u00a0\r\nbyte ds_read<span style=\"color: #66cc66;\">(<\/span>byte reg<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>\r\n     byte dat=<span style=\"color: #cc66cc;\">0<\/span>;\r\n     I2C_start<span style=\"color: #66cc66;\">(<\/span>0b1101000<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span>reg<span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_start<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>0b1101000<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     dat = i2c_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n     <span style=\"color: #b1b100;\">return<\/span> dat;\r\n  <span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ I2C \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>DDRB  <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SDA<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span>I2C_SCL<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #0066cc;\">data<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                        \r\n    <span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">data<\/span> <span style=\"color: #66cc66;\">&amp;<\/span> 0x80<span style=\"color: #66cc66;\">)<\/span> I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;data<span style=\"color: #66cc66;\">&lt;&lt;<\/span>=<span style=\"color: #cc66cc;\">1<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n  I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;asm<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #ff0000;\">\"nop\"<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                         \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_start<span style=\"color: #66cc66;\">(<\/span>uint8_t addr<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n     DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span>; DDRB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SCL<span style=\"color: #66cc66;\">)<\/span>;\r\n     DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span>;  PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SDA<span style=\"color: #66cc66;\">)<\/span>;\r\n     DDRB <span style=\"color: #66cc66;\">|<\/span>= <span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SCL<span style=\"color: #66cc66;\">)<\/span>;  PORTB <span style=\"color: #66cc66;\">&amp;<\/span>= ~<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">1<\/span> <span style=\"color: #66cc66;\">&lt;&lt;<\/span> I2C_SCL<span style=\"color: #66cc66;\">)<\/span>;\r\n     I2C_write<span style=\"color: #66cc66;\">(<\/span>addr<span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n<span style=\"color: #0066cc;\">void<\/span> I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>I2C_SDA_LOW<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SCL_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;I2C_SDA_HIGH<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/\/\/\/ OLED \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/<\/span>\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ OLED init settings<\/span>\r\nconst uint8_t OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0xA8, 0x1F,       \r\n  0x22, 0x00, 0x03, \r\n  0x20, 0x01,       \r\n  0xDA, 0x02,       \r\n  0x8D, 0x14,       \r\n  0xAF,             \r\n  0x00, 0x10, 0xB0, \r\n  0xA1, 0xC8        \r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #808080; font-style: italic;\">\/\/ Simple reduced 3x8 font<\/span>\r\nconst uint8_t OLED_FONT<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #66cc66;\">]<\/span> PROGMEM = <span style=\"color: #66cc66;\">{<\/span>\r\n  0x7F, 0x41, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 0  0<\/span>\r\n  0x00, 0x00, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 1  1<\/span>\r\n  0x79, 0x49, 0x4F, <span style=\"color: #808080; font-style: italic;\">\/\/ 2  2<\/span>\r\n  0x41, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 3  3<\/span>\r\n  0x0F, 0x08, 0x7E, <span style=\"color: #808080; font-style: italic;\">\/\/ 4  4<\/span>\r\n  0x4F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 5  5<\/span>\r\n  0x7F, 0x49, 0x79, <span style=\"color: #808080; font-style: italic;\">\/\/ 6  6<\/span>\r\n  0x03, 0x01, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 7  7<\/span>\r\n  0x7F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 8  8<\/span>\r\n  0x4F, 0x49, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ 9  9<\/span>\r\n  0x7F, 0x09, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ A 10<\/span>\r\n  0x7F, 0x48, 0x78, <span style=\"color: #808080; font-style: italic;\">\/\/ b 11<\/span>\r\n  0x7F, 0x41, 0x63, <span style=\"color: #808080; font-style: italic;\">\/\/ C 12<\/span>\r\n  0x78, 0x48, 0x7F, <span style=\"color: #808080; font-style: italic;\">\/\/ d 13<\/span>\r\n  0x7F, 0x49, 0x41, <span style=\"color: #808080; font-style: italic;\">\/\/ E 14<\/span>\r\n  0x7F, 0x09, 0x01, <span style=\"color: #808080; font-style: italic;\">\/\/ F 15<\/span>\r\n  0x00, 0x60, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ . 16<\/span>\r\n  0x00, 0x36, 0x00, <span style=\"color: #808080; font-style: italic;\">\/\/ : 17<\/span>\r\n  0x08, 0x08, 0x08, <span style=\"color: #808080; font-style: italic;\">\/\/ - 18<\/span>\r\n  0x00, 0x00, 0x00  <span style=\"color: #808080; font-style: italic;\">\/\/   19<\/span>\r\n<span style=\"color: #66cc66;\">}<\/span>;\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_cursor<span style=\"color: #66cc66;\">(<\/span>uint8_t xpos, uint8_t ypos<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&amp;<\/span> 0x0F<span style=\"color: #66cc66;\">)<\/span>;                 \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0x10 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>xpos <span style=\"color: #66cc66;\">&gt;&gt;<\/span> <span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;     \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>0xB0 <span style=\"color: #66cc66;\">|<\/span> <span style=\"color: #66cc66;\">(<\/span>ypos <span style=\"color: #66cc66;\">&amp;<\/span> 0x07<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>;    \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                           \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_clear<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  OLED_cursor<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #cc66cc;\">0<\/span>, <span style=\"color: #cc66cc;\">0<\/span><span style=\"color: #66cc66;\">)<\/span>;                      \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint16_t i=<span style=\"color: #cc66cc;\">512<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #0066cc;\">void<\/span><span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_init<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                             \r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;                   \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_CMD_MODE<span style=\"color: #66cc66;\">)<\/span>;               \r\n  <span style=\"color: #b1b100;\">for<\/span> <span style=\"color: #66cc66;\">(<\/span>uint8_t i = <span style=\"color: #cc66cc;\">0<\/span>; i <span style=\"color: #66cc66;\">&lt;<\/span> OLED_INIT_LEN; i++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_INIT_CMD<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\nuint8_t OLED_stretch<span style=\"color: #66cc66;\">(<\/span>uint8_t b<span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">{<\/span>b=<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">(<\/span>b <span style=\"color: #66cc66;\">&amp;<\/span> <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">3<\/span><span style=\"color: #66cc66;\">)<\/span><span style=\"color: #66cc66;\">|<\/span><span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">&amp;<\/span><span style=\"color: #cc66cc;\">1<\/span><span style=\"color: #66cc66;\">)<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">1<\/span>;b<span style=\"color: #66cc66;\">|<\/span>=b<span style=\"color: #66cc66;\">&lt;&lt;<\/span><span style=\"color: #cc66cc;\">2<\/span>;<span style=\"color: #b1b100;\">return<\/span> b;<span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>uint8_t ch<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  uint8_t i, j, k, b;                     \r\n  uint8_t sb<span style=\"color: #66cc66;\">[<\/span><span style=\"color: #cc66cc;\">4<\/span><span style=\"color: #66cc66;\">]<\/span>;                          \r\n  ch += ch <span style=\"color: #66cc66;\">&lt;&lt;<\/span> <span style=\"color: #cc66cc;\">1<\/span>;                          \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">8<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>0x00<span style=\"color: #66cc66;\">)<\/span>;       \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>i=<span style=\"color: #cc66cc;\">3<\/span>; i; i--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                      \r\n    b = pgm_read_byte<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">&amp;<\/span>OLED_FONT<span style=\"color: #66cc66;\">[<\/span>ch++<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;  \r\n    <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>j=<span style=\"color: #cc66cc;\">0<\/span>; j<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; j++, b <span style=\"color: #66cc66;\">&gt;&gt;<\/span>= <span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> sb<span style=\"color: #66cc66;\">[<\/span>j<span style=\"color: #66cc66;\">]<\/span> = OLED_stretch<span style=\"color: #66cc66;\">(<\/span>b<span style=\"color: #66cc66;\">)<\/span>;  \r\n    j=<span style=\"color: #cc66cc;\">4<\/span>; <span style=\"color: #b1b100;\">if<\/span><span style=\"color: #66cc66;\">(<\/span>i==<span style=\"color: #cc66cc;\">2<\/span><span style=\"color: #66cc66;\">)<\/span> j=<span style=\"color: #cc66cc;\">6<\/span>;               \r\n    <span style=\"color: #b1b100;\">while<\/span><span style=\"color: #66cc66;\">(<\/span>j--<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>                    \r\n      <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>k=<span style=\"color: #cc66cc;\">0<\/span>; k<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">4<\/span>; k++<span style=\"color: #66cc66;\">)<\/span> I2C_write<span style=\"color: #66cc66;\">(<\/span>sb<span style=\"color: #66cc66;\">[<\/span>k<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>;\r\n<span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span><span style=\"color: #66cc66;\">}<\/span>\r\n\u00a0\r\n<span style=\"color: #0066cc;\">void<\/span> OLED_printB<span style=\"color: #66cc66;\">(<\/span>uint8_t <span style=\"color: #66cc66;\">*<\/span>buffer<span style=\"color: #66cc66;\">)<\/span> <span style=\"color: #66cc66;\">{<\/span>\r\n  I2C_start<span style=\"color: #66cc66;\">(<\/span>OLED_ADDR<span style=\"color: #66cc66;\">)<\/span>;      \r\n  I2C_write<span style=\"color: #66cc66;\">(<\/span>OLED_DAT_MODE<span style=\"color: #66cc66;\">)<\/span>;              \r\n  <span style=\"color: #b1b100;\">for<\/span><span style=\"color: #66cc66;\">(<\/span>uint8_t i=<span style=\"color: #cc66cc;\">0<\/span>; i<span style=\"color: #66cc66;\">&lt;<\/span><span style=\"color: #cc66cc;\">8<\/span>; i++<span style=\"color: #66cc66;\">)<\/span> OLED_printD<span style=\"color: #66cc66;\">(<\/span>buffer<span style=\"color: #66cc66;\">[<\/span>i<span style=\"color: #66cc66;\">]<\/span><span style=\"color: #66cc66;\">)<\/span>; \r\n  I2C_stop<span style=\"color: #66cc66;\">(<\/span><span style=\"color: #66cc66;\">)<\/span>;                            \r\n<span style=\"color: #66cc66;\">}<\/span><\/pre>\n<blockquote><p>\u0421\u043a\u0435\u0442\u0447 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 834 \u0431\u0430\u0439\u0442 (81%) \u043f\u0430\u043c\u044f\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430. \u0412\u0441\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e 1024 \u0431\u0430\u0439\u0442.<br \/>\n\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 3 \u0431\u0430\u0439\u0442 (4%) \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f 61 \u0431\u0430\u0439\u0442 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c: 64 \u0431\u0430\u0439\u0442.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0432 \u0441\u0440\u0435\u0434\u0435 Ardino IDE, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0440\u0435\u043b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043b\u043e\u0433\u0438\u0447\u043d\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0438 \u043d\u0435\u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b. \u0422\u0430\u043a \u043a\u0430\u043a Arduino IDE \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b \u0441\u0435\u0440\u0438\u0438 ATtiny, \u043c\u043d\u043e\u0439 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u044b\u043b \u0432\u044b\u0431\u0440\u0430\u043d \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 ATtiny13. ATtiny13 \u2014 \u043d\u0438\u0437\u043a\u043e\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0449\u0438\u0439 8 \u0431\u0438\u0442\u043d\u044b\u0439 \u041a\u041c\u041e\u041f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441 AVR RISC \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u0446\u0438\u043a\u043b, ATtiny13 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":112957,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[239,21],"tags":[],"class_list":["post-112955","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-21"],"views":13689,"_links":{"self":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts\/112955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=112955"}],"version-history":[{"count":15,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts\/112955\/revisions"}],"predecessor-version":[{"id":133118,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/posts\/112955\/revisions\/133118"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=\/wp\/v2\/media\/112957"}],"wp:attachment":[{"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=112955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=112955"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/rcl-radio.ru\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=112955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}