<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2Fsoft_spitftbitmap</id>
	<title>Arduino:Примеры/soft spitftbitmap - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2Fsoft_spitftbitmap"/>
	<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/soft_spitftbitmap&amp;action=history"/>
	<updated>2026-04-05T18:04:43Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/soft_spitftbitmap&amp;diff=8496082&amp;oldid=prev</id>
		<title>EducationBot в 08:39, 8 июля 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/soft_spitftbitmap&amp;diff=8496082&amp;oldid=prev"/>
		<updated>2023-07-08T08:39:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:39, 8 июля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l248&quot;&gt;Строка 248:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 248:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Навигационная таблица/Портал/Arduino}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikihandbkcom:diff::1.12:old-7735817:rev-8496082 --&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/soft_spitftbitmap&amp;diff=7735817&amp;oldid=prev</id>
		<title>EducationBot в 08:35, 20 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/soft_spitftbitmap&amp;diff=7735817&amp;oldid=prev"/>
		<updated>2023-05-20T08:35:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:35, 20 мая 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Строка 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Код==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Код==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot; enclose=&quot;div&lt;/del&gt;&quot;&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/***************************************************&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/***************************************************&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/soft_spitftbitmap&amp;diff=21353&amp;oldid=prev</id>
		<title>Myagkij: Замена текста — «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&gt;» на «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot; enclose=&quot;div&quot;&gt;»</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/soft_spitftbitmap&amp;diff=21353&amp;oldid=prev"/>
		<updated>2016-12-14T05:30:25Z</updated>

		<summary type="html">&lt;p&gt;Замена текста — «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;» на «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Arduino панель перехода}}&lt;br /&gt;
{{Перевод от Сubewriter}}&lt;br /&gt;
{{Myagkij-редактор}}&lt;br /&gt;
&lt;br /&gt;
=Вывод изображения на 1,8-дюймовый TFT-дисплей&amp;lt;ref&amp;gt;[https://github.com/adafruit/Adafruit-ST7735-Library/blob/master/examples/soft_spitftbitmap/soft_spitftbitmap.ino github.com - soft_spitftbitmap.ino]&amp;lt;/ref&amp;gt;=&lt;br /&gt;
&lt;br /&gt;
Это скетч для [[Arduino:Библиотеки/ST7735|библиотеки ST7735]], который при помощи платы '''Arduino''' показывает на '''TFT'''-дисплее (1,8-дюймовом) заданную картинку. Для скетча потребуется 1,8-дюймовая '''TFT'''-плата с '''SD'''-картой или '''«голый»''' 1,8-дюймовый '''TFT'''-дисплей.&lt;br /&gt;
&lt;br /&gt;
==Код==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt; &lt;br /&gt;
/***************************************************&lt;br /&gt;
&lt;br /&gt;
Вывод изображения на 1,8-дюймовый TFT-дисплей&lt;br /&gt;
&lt;br /&gt;
Этот скетч предназначен для 1,8-дюймового TFT-дисплея, &lt;br /&gt;
работающего через SPI-интерфейс (от Adafruit).&lt;br /&gt;
&lt;br /&gt;
Для этого скетча подойдет 1,8-дюймовая TFT-плата с SD-картой...&lt;br /&gt;
----&amp;gt; http://www.adafruit.com/products/358&lt;br /&gt;
...а также «голый» 1,8-дюймовый TFT-дисплей&lt;br /&gt;
----&amp;gt; http://www.adafruit.com/products/618&lt;br /&gt;
&lt;br /&gt;
Руководства и схемы подключения ищите по ссылкам выше. Этим дисплеям &lt;br /&gt;
для коммуникации требуется SPI-интерфейс с 4 или 5 контактами (контакт &lt;br /&gt;
RST опционален). &lt;br /&gt;
&lt;br /&gt;
Adafruit инвестировала время и ресурсы, создавая эту библиотеку с &lt;br /&gt;
открытым кодом. Пожалуйста, поддержите Adafruit и оборудование с &lt;br /&gt;
открытым кодом, покупая продукты Adafruit!&lt;br /&gt;
&lt;br /&gt;
Библиотека написана Лимор Фрид (Limor Fried, Ladyada) для Adafruit &lt;br /&gt;
Industries. Весь текст выше должен быть включен при любом повторном &lt;br /&gt;
распространении.&lt;br /&gt;
&lt;br /&gt;
****************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Adafruit_GFX.h&amp;gt;    // подключаем графическую библиотеку&lt;br /&gt;
#include &amp;lt;Adafruit_ST7735.h&amp;gt; // подключаем библиотеку для управления дисплеем&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;SD.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#if defined(__SAM3X8E__)&lt;br /&gt;
    #undef __FlashStringHelper::F(string_literal)&lt;br /&gt;
    #define F(string_literal) string_literal&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
// Коммуникация будет вестись через аппаратный SPI-интерфейс,&lt;br /&gt;
// и им будут пользоваться сразу два устройства: TFT-дисплей&lt;br /&gt;
// и SD-карта. На платах Arduino аппаратный SPI всегда находится на&lt;br /&gt;
// одних и тех же контактах, и переназначить их нельзя. &lt;br /&gt;
// На Arduino Uno, Duemilanove и т.д. за SPI отвечают следующие &lt;br /&gt;
// контакты: 11-ый контакт – MOSI, 12-ый контакт – MISO,&lt;br /&gt;
// 13-ый контакт – SCK.&lt;br /&gt;
#define SPI_SCK 13&lt;br /&gt;
#define SPI_DI  12&lt;br /&gt;
#define SPI_DO  11&lt;br /&gt;
&lt;br /&gt;
#define SD_CS    4    // CS-контакт для SD-карты&lt;br /&gt;
//#define TFT_CS  10  // CS-контакт для TFT-дисплея&lt;br /&gt;
//#define TFT_DC   9  // DC-контакт для дисплея (для переключения между передачей данных и команд)&lt;br /&gt;
//#define TFT_RST  8  // RESET-контакт для TFT-дисплея (или подключите к +5V)&lt;br /&gt;
&lt;br /&gt;
// это контакты для подключения TFT-платы:&lt;br /&gt;
#define TFT_CS   10&lt;br /&gt;
#define TFT_DC   8&lt;br /&gt;
#define TFT_RST  0  // этот контакт также можно подключить к RESET-контакту Arduino&lt;br /&gt;
&lt;br /&gt;
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, SPI_DO, SPI_SCK, TFT_RST);&lt;br /&gt;
&lt;br /&gt;
void setup(void) {&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
&lt;br /&gt;
  // С 10 января 2012 года поставщик начал отправлять Adafruit &lt;br /&gt;
  // чуть измененные 1,8-дюймовые дисплеи, из-за чего выравнивание&lt;br /&gt;
  // экрана сдвинулось на несколько пикселей. Это значит, что для &lt;br /&gt;
  // таких дисплеев нужно использовать другой код инициализации.&lt;br /&gt;
  // О том, какой именно код нужен, сообщает цвет ярлыка, приклеенного&lt;br /&gt;
  // к дисплею. Если верхний и левый края дисплея обрезаны или если&lt;br /&gt;
  // там есть дополнительные «случайные» пиксели, попробуйте другой    &lt;br /&gt;
  // вариант. Если видите инверсию красного и зеленого цветов,&lt;br /&gt;
  // попробуйте вариант с черным ярлычком.&lt;br /&gt;
&lt;br /&gt;
  Serial.print(&amp;quot;Initializing SD card...&amp;quot;);  //  &amp;quot;Инициализация SD-карты... &amp;quot;&lt;br /&gt;
  if (!SD.begin(SD_CS, SPI_DO, SPI_DI, SPI_SCK)) {&lt;br /&gt;
    Serial.println(&amp;quot;failed!&amp;quot;);   //  &amp;quot;не удалась&amp;quot;&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(&amp;quot;OK!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  bmpDraw(&amp;quot;parrot.bmp&amp;quot;, 0, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Эта функция открывает BMP-файл и печатает его на заданных &lt;br /&gt;
// координатах. Ее работу можно ускорить, считывая сразу несколько &lt;br /&gt;
// пикселей, а не пиксель за пикселем. Для этого нужно увеличить &lt;br /&gt;
// размер буфера, однако это, в свою очередь, потребует ресурсов &lt;br /&gt;
// RAM-памяти Arduino. Разумным компромиссом будет 20 пикселей.&lt;br /&gt;
&lt;br /&gt;
#define BUFFPIXEL 20&lt;br /&gt;
&lt;br /&gt;
void bmpDraw(char *filename, uint8_t x, uint8_t y) {&lt;br /&gt;
&lt;br /&gt;
  File     bmpFile;&lt;br /&gt;
  int      bmpWidth, bmpHeight;   // ширина и высота в пикселях &lt;br /&gt;
  uint8_t  bmpDepth;              // глубина цвета (по умолчанию должно стоять 24)&lt;br /&gt;
  uint32_t bmpImageoffset;        // место, с которого в файле начинается само изображение&lt;br /&gt;
  uint32_t rowSize;               // это значение не всегда будет равно bmpWidth; возможно, будет отступ &lt;br /&gt;
  uint8_t  sdbuffer[3*BUFFPIXEL]; // буфер для пикселей (значения R, G и B для каждого пикселя)&lt;br /&gt;
  uint8_t  buffidx = sizeof(sdbuffer); // текущая позиция в буфере для пикселей&lt;br /&gt;
  boolean  goodBmp = false;       // если скетч определит нужный тип заголовка, он выставит здесь «true»&lt;br /&gt;
  boolean  flip    = true;        // данные BMP-файла хранятся по принципу «снизу вверх»&lt;br /&gt;
  int      w, h, row, col; &lt;br /&gt;
  uint8_t  r, g, b;&lt;br /&gt;
  uint32_t pos = 0, startTime = millis();&lt;br /&gt;
&lt;br /&gt;
  if((x &amp;gt;= tft.width()) || (y &amp;gt;= tft.height())) return;&lt;br /&gt;
&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.print(&amp;quot;Loading image '&amp;quot;);  //  &amp;quot;Загрузка изображения «&amp;quot;&lt;br /&gt;
  Serial.print(filename);&lt;br /&gt;
  Serial.println('\'');&lt;br /&gt;
&lt;br /&gt;
  // открываем на SD-карте запрашиваемый файл:&lt;br /&gt;
  if ((bmpFile = SD.open(filename)) == NULL) {&lt;br /&gt;
    Serial.print(&amp;quot;File not found&amp;quot;);  //  &amp;quot;Файл не найден&amp;quot;&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // анализируем заголовок BMP-Файла:&lt;br /&gt;
  if(read16(bmpFile) == 0x4D42) { // сигнатура BMP-файла&lt;br /&gt;
    Serial.print(&amp;quot;File size: &amp;quot;);  //  &amp;quot;Размер файла: &amp;quot;&lt;br /&gt;
    Serial.println(read32(bmpFile));&lt;br /&gt;
    (void)read32(bmpFile); // считываем и игнорируем байты, вписанные при создании файла&lt;br /&gt;
    bmpImageoffset = read32(bmpFile); // место, с которого начинается в файле само изображение (смещение)&lt;br /&gt;
    Serial.print(&amp;quot;Image Offset: &amp;quot;);  //  &amp;quot;Смещение: &amp;quot;&lt;br /&gt;
    Serial.println(bmpImageoffset, DEC);&lt;br /&gt;
    // считываем заголовок DIB:&lt;br /&gt;
    Serial.print(&amp;quot;Header size: &amp;quot;);  //  &amp;quot;Размер заголовка: &amp;quot;&lt;br /&gt;
    Serial.println(read32(bmpFile));&lt;br /&gt;
    bmpWidth  = read32(bmpFile); &lt;br /&gt;
    bmpHeight = read32(bmpFile);&lt;br /&gt;
    if(read16(bmpFile) == 1) {  //  количество цветовых плоскостей – должно быть «1»&lt;br /&gt;
      bmpDepth = read16(bmpFile);  // биты на пиксель&lt;br /&gt;
      Serial.print(&amp;quot;Bit Depth: &amp;quot;);  //  &amp;quot;Глубина цвета: &amp;quot;&lt;br /&gt;
      Serial.println(bmpDepth);&lt;br /&gt;
      if((bmpDepth == 24) &amp;amp;&amp;amp; (read32(bmpFile) == 0)) { // «0» – это без сжатия&lt;br /&gt;
&lt;br /&gt;
        goodBmp = true; // поддерживаемый формат BMP – продолжаем дальше!&lt;br /&gt;
        Serial.print(&amp;quot;Image size: &amp;quot;);  //  &amp;quot;Размер изображения: &amp;quot;&lt;br /&gt;
        Serial.print(bmpWidth);&lt;br /&gt;
        Serial.print('x');&lt;br /&gt;
        Serial.println(bmpHeight);&lt;br /&gt;
&lt;br /&gt;
        // если нужно, границы BMP-изображения будут иметь 4-байтный отступ:&lt;br /&gt;
        rowSize = (bmpWidth * 3 + 3) &amp;amp; ~3;&lt;br /&gt;
&lt;br /&gt;
        // Если значение в bmpHeight отрицательное, то данные &lt;br /&gt;
        // изображения хранятся по принципу «сверху вниз»&lt;br /&gt;
        // Это не канон, но иногда встречается. &lt;br /&gt;
        if(bmpHeight &amp;lt; 0) {&lt;br /&gt;
          bmpHeight = -bmpHeight;&lt;br /&gt;
          flip      = false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        //  загружаем обрезанную область: &lt;br /&gt;
        w = bmpWidth;&lt;br /&gt;
        h = bmpHeight;&lt;br /&gt;
        if((x+w-1) &amp;gt;= tft.width())  w = tft.width()  - x;&lt;br /&gt;
        if((y+h-1) &amp;gt;= tft.height()) h = tft.height() - y;&lt;br /&gt;
&lt;br /&gt;
        // задаем адресный промежуток для границ обрезанного изображения: &lt;br /&gt;
        tft.setAddrWindow(x, y, x+w-1, y+h-1);&lt;br /&gt;
&lt;br /&gt;
        for (row=0; row&amp;lt;h; row++) { // для каждого пиксельного ряда...&lt;br /&gt;
&lt;br /&gt;
          // Ищем начало пиксельного ряда. Возможно, делать это для &lt;br /&gt;
          // каждой строки – слишком трудоемко, однако эта функция &lt;br /&gt;
          // выполняет много «грязной работы» вроде обрезки &lt;br /&gt;
          // изображения и создания отступа для нового пиксельного &lt;br /&gt;
          // ряда. Кроме того, этот поиск имеет место только в том &lt;br /&gt;
          // случае, если нужно поменять позицию файла (это позволяет &lt;br /&gt;
          // избежать кластерных расчетов в библиотеке SD).&lt;br /&gt;
&lt;br /&gt;
          if(flip) //  данные BMP-файла хранятся по принципу «снизу вверх» (нормальный BMP) &lt;br /&gt;
            pos = bmpImageoffset + (bmpHeight - 1 - row) * rowSize;&lt;br /&gt;
          else     //  BMP-файл хранится по принципу «сверху вниз»&lt;br /&gt;
            pos = bmpImageoffset + row * rowSize;&lt;br /&gt;
          if(bmpFile.position() != pos) { // нужно ли запустить поиск?&lt;br /&gt;
            bmpFile.seek(pos);&lt;br /&gt;
            buffidx = sizeof(sdbuffer); // перезагружаем буфер&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          for (col=0; col&amp;lt;w; col++) { // для каждого пикселя...&lt;br /&gt;
            // настало время считывать новые пиксельные данные?        &lt;br /&gt;
            if (buffidx &amp;gt;= sizeof(sdbuffer)) { // да!&lt;br /&gt;
              bmpFile.read(sdbuffer, sizeof(sdbuffer));&lt;br /&gt;
              buffidx = 0; // выставляем индекс на начало &lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // конвертируем пиксели из формата BMP в формат TFT,&lt;br /&gt;
            // а затем выводим их на дисплей:&lt;br /&gt;
            b = sdbuffer[buffidx++];&lt;br /&gt;
            g = sdbuffer[buffidx++];&lt;br /&gt;
            r = sdbuffer[buffidx++];&lt;br /&gt;
            tft.pushColor(tft.Color565(r,g,b));&lt;br /&gt;
          } // последний пиксель&lt;br /&gt;
        } // последняя строка пикселей &lt;br /&gt;
        Serial.print(&amp;quot;Loaded in &amp;quot;);  //  &amp;quot;Картинка загрузилась за &amp;quot;&lt;br /&gt;
        Serial.print(millis() - startTime);&lt;br /&gt;
        Serial.println(&amp;quot; ms&amp;quot;);  // &amp;quot;миллисекунд&amp;quot;&lt;br /&gt;
      } // конец goodBMP&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  bmpFile.close();&lt;br /&gt;
  if(!goodBmp) Serial.println(&amp;quot;BMP format not recognized.&amp;quot;);  //  &amp;quot;Формат BMP не обнаружен&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Эти функции считывают из BMP-файла 16-битные и 32-битные данные.&lt;br /&gt;
// Данные BMP-файла, как и у Arduino, хранятся по принципу &lt;br /&gt;
// «от младшего к старшему». При портировании куда-либо этот порядок, &lt;br /&gt;
// возможно, придется поменять.&lt;br /&gt;
&lt;br /&gt;
uint16_t read16(File f) {&lt;br /&gt;
  uint16_t result;&lt;br /&gt;
  ((uint8_t *)&amp;amp;result)[0] = f.read(); // самый младший бит&lt;br /&gt;
  ((uint8_t *)&amp;amp;result)[1] = f.read(); // самый старший бит&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint32_t read32(File f) {&lt;br /&gt;
  uint32_t result;&lt;br /&gt;
  ((uint8_t *)&amp;amp;result)[0] = f.read(); // самый младший бит&lt;br /&gt;
  ((uint8_t *)&amp;amp;result)[1] = f.read();&lt;br /&gt;
  ((uint8_t *)&amp;amp;result)[2] = f.read();&lt;br /&gt;
  ((uint8_t *)&amp;amp;result)[3] = f.read(); // самый старший бит&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=См.также=&lt;br /&gt;
&lt;br /&gt;
=Внешние ссылки=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Категория:Пример]]&lt;br /&gt;
[[Категория:Примеры]]&lt;br /&gt;
[[Категория:Пример программирования Arduino]]&lt;br /&gt;
[[Категория:Примеры программирования Arduino]]&lt;/div&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
</feed>