Arduino:Примеры/rotationtest

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Тест функций вращения[1]

Это текстовый скетч для библиотеки ST7735, который при помощи платы Arduino совершает на TFT-дисплее различные вращающие действия: для текста, картинок, фигур и пр.

Код

  1  
  2 /***************************************************
  3 
  4 Тест функций вращения
  5 
  6 Эта библиотека предназначена для работы с TFT-дисплеями (с SPI-интерфейсом) от Adafruit. Библиотека поддерживает следующие устройства:
  7 
  8 * 1,8-дюймовую TFT-плату с SD-картой:
  9   https://www.adafruit.com/products/358
 10 * 1,8-дюймовый TFT-модуль:
 11   https://www.adafruit.com/product/802
 12 * 1,44-дюймовую TFT-плату:
 13   https://www.adafruit.com/product/2088
 14 * «Голый» 1,8-дюймовый TFT-дисплей (без плат и модулей):
 15   https://www.adafruit.com/products/618  
 16 
 17 Руководства и схемы подключения ищите по ссылкам выше. Этим дисплеям 
 18 для коммуникации требуется SPI-интерфейс с 4 или 5 контактами (контакт 
 19 RST опционален).
 20 
 21 Adafruit инвестировала время и ресурсы, создавая эту библиотеку с 
 22 открытым кодом. Пожалуйста, поддержите Adafruit и оборудование с 
 23 открытым кодом, покупая продукты Adafruit!
 24 
 25 Библиотека написана Лимор Фрид (Limor Fried, Ladyada) для Adafruit 
 26 Industries. Весь текст выше должен быть включен при любом повторном 
 27 распространении.
 28 
 29 ****************************************************/
 30 
 31 #include <Adafruit_GFX.h>    // подключаем графическую библиотеку
 32 #include <Adafruit_ST7735.h> // подключаем библиотеку для управления дисплеем
 33 #include <SPI.h>
 34 
 35 
 36 // для TFT-платы можно использовать 2-3 контакта;
 37 // эти контакты будут работать и для 1,8-дюймового TFT-модуля:
 38 #define TFT_CS     10
 39 #define TFT_RST    9  // этот контакт можно подключить к RESET-
 40                       // контакту Arduino, но тогда вместе «9» 
 41                       // надо указать «0».
 42 #define TFT_DC     8
 43 
 44 // Вариант 1 (рекомендуемый): используются аппаратные SPI-контакты
 45 // (на UNO: SCLK – это 13-ый контакт, а MOSI – это 11-ый контакт),
 46 // а 10-ый контакт должен быть выходным. Этот способ быстрее, и его
 47 // необходимо использовать, если вы работаете с картой microSD
 48 // (подробнее смотрите в примере, где рисуется изображение):
 49 Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);
 50 
 51 // Вариант 2: можно использовать любые контакты,
 52 // но процесс будет идти медленней!
 53 #define TFT_SCLK 13   // здесь можно задать любой контакт
 54 #define TFT_MOSI 11   // здесь можно задать любой контакт
 55 //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
 56 
 57 void setup(void) { 
 58   Serial.begin(9600);
 59   Serial.print("Hello! Adafruit ST7735 rotation test");  //  "Привет! Это тест вращающих функций для TFT-дисплея ST7735"
 60 
 61   // используйте этот инициализатор, если работаете 
 62   // с 1,8-дюймовым TFT-дисплеем:
 63   tft.initR(INITR_BLACKTAB);   // инициализируем чипa ST7735S, черный ярлычок
 64 
 65   // используйте этот инициализатор, если работаете 
 66   // с 1,44-дюймовым TFT-дисплеем (нужно раскомментировать):
 67   //tft.initR(INITR_144GREENTAB);  // инициализируем чипa ST7735S, зеленый ярлычок
 68 
 69   Serial.println("init");
 70 
 71   tft.setTextWrap(false); // позволяем тексту уйти за правый край дисплея
 72   tft.fillScreen(ST7735_BLACK);
 73 
 74   Serial.println("This is a test of the rotation capabilities of the TFT library!");  //  "Это скетч, проверяющий функции вращения на TFT-дисплее ST7735"
 75   Serial.println("Press <SEND> (or type a character) to advance");   //  "Чтобы продолжить, нажмите <SEND> (или впишите символ)"
 76 }
 77 
 78 void loop(void) {
 79   rotateLine();
 80   rotateText();
 81   rotatePixel();
 82   rotateFastline();
 83   rotateDrawrect();
 84   rotateFillrect();
 85   rotateDrawcircle();
 86   rotateFillcircle();
 87   rotateTriangle();
 88   rotateFillTriangle();
 89   rotateRoundRect();
 90   rotateFillRoundRect();
 91   rotateChar();
 92   rotateString();
 93 }
 94 
 95 void rotateText() {
 96   for (uint8_t i=0; i<4; i++) {
 97     tft.fillScreen(ST7735_BLACK);
 98     Serial.println(tft.getRotation(), DEC);
 99 
100     tft.setCursor(0, 30);
101     tft.setTextColor(ST7735_RED);
102     tft.setTextSize(1);
103     tft.println("Hello World!");   //  "Привет, мир!"
104     tft.setTextColor(ST7735_YELLOW);
105     tft.setTextSize(2);
106     tft.println("Hello World!");  //  "Привет, мир!"
107     tft.setTextColor(ST7735_GREEN);
108     tft.setTextSize(3);
109     tft.println("Hello World!");  //  "Привет, мир!"
110     tft.setTextColor(ST7735_BLUE);
111     tft.setTextSize(4);
112     tft.print(1234.567);
113     while (!Serial.available());
114     Serial.read();  Serial.read();  Serial.read();
115   
116     tft.setRotation(tft.getRotation()+1);
117   }
118 }
119 
120 void rotateFillcircle(void) {
121   for (uint8_t i=0; i<4; i++) {
122     tft.fillScreen(ST7735_BLACK);
123     Serial.println(tft.getRotation(), DEC);
124 
125     tft.fillCircle(10, 30, 10, ST7735_YELLOW);
126 
127     while (!Serial.available());
128     Serial.read();  Serial.read();  Serial.read();
129 
130     tft.setRotation(tft.getRotation()+1);
131   }
132 }
133 
134 void rotateDrawcircle(void) {
135   for (uint8_t i=0; i<4; i++) {
136     tft.fillScreen(ST7735_BLACK);
137     Serial.println(tft.getRotation(), DEC);
138 
139     tft.drawCircle(10, 30, 10, ST7735_YELLOW);
140  
141     while (!Serial.available());
142     Serial.read();  Serial.read();  Serial.read();
143   
144     tft.setRotation(tft.getRotation()+1);
145   }
146 }
147 
148 void rotateFillrect(void) {
149   for (uint8_t i=0; i<4; i++) {
150     tft.fillScreen(ST7735_BLACK);
151     Serial.println(tft.getRotation(), DEC);
152 
153     tft.fillRect(10, 20, 10, 20, ST7735_GREEN);
154  
155     while (!Serial.available());
156     Serial.read();  Serial.read();  Serial.read();
157 
158     tft.setRotation(tft.getRotation()+1);
159   }
160 }
161 
162 void rotateDrawrect(void) {
163   for (uint8_t i=0; i<4; i++) {
164     tft.fillScreen(ST7735_BLACK);
165     Serial.println(tft.getRotation(), DEC);
166 
167     tft.drawRect(10, 20, 10, 20, ST7735_GREEN);
168  
169     while (!Serial.available());
170     Serial.read();  Serial.read();  Serial.read();
171 
172     tft.setRotation(tft.getRotation()+1);
173   }
174 }
175 
176 void rotateFastline(void) {
177   for (uint8_t i=0; i<4; i++) {
178     tft.fillScreen(ST7735_BLACK);
179     Serial.println(tft.getRotation(), DEC);
180 
181     tft.drawFastHLine(0, 20, tft.width(), ST7735_RED);
182     tft.drawFastVLine(20, 0, tft.height(), ST7735_BLUE);
183 
184     while (!Serial.available());
185     Serial.read();  Serial.read();  Serial.read();
186 
187     tft.setRotation(tft.getRotation()+1);
188   }
189 }
190 
191 void rotateLine(void) {
192   for (uint8_t i=0; i<4; i++) {
193     tft.fillScreen(ST7735_BLACK);
194     Serial.println(tft.getRotation(), DEC);
195 
196     tft.drawLine(tft.width()/2, tft.height()/2, 0, 0, ST7735_RED);
197     while (!Serial.available());
198     Serial.read();  Serial.read();  Serial.read();
199 
200     tft.setRotation(tft.getRotation()+1);
201   }
202 }
203 
204 void rotatePixel(void) {
205   for (uint8_t i=0; i<4; i++) {
206     tft.fillScreen(ST7735_BLACK);
207     Serial.println(tft.getRotation(), DEC);
208 
209     tft.drawPixel(10,20, ST7735_WHITE);
210     while (!Serial.available());
211     Serial.read();  Serial.read();  Serial.read();
212 
213     tft.setRotation(tft.getRotation()+1);
214   }
215 }
216 
217 void rotateTriangle(void) {
218   for (uint8_t i=0; i<4; i++) {
219     tft.fillScreen(ST7735_BLACK);
220     Serial.println(tft.getRotation(), DEC);
221 
222     tft.drawTriangle(20, 10, 10, 30, 30, 30, ST7735_GREEN);
223     while (!Serial.available());
224     Serial.read();  Serial.read();  Serial.read();
225 
226     tft.setRotation(tft.getRotation()+1);
227   }
228 }
229 
230 void rotateFillTriangle(void) {
231   for (uint8_t i=0; i<4; i++) {
232     tft.fillScreen(ST7735_BLACK);
233     Serial.println(tft.getRotation(), DEC);
234 
235     tft.fillTriangle(20, 10, 10, 30, 30, 30, ST7735_RED);
236     while (!Serial.available());
237     Serial.read();  Serial.read();  Serial.read();
238 
239     tft.setRotation(tft.getRotation()+1);
240   }
241 }
242 
243 void rotateRoundRect(void) {
244   for (uint8_t i=0; i<4; i++) {
245     tft.fillScreen(ST7735_BLACK);
246     Serial.println(tft.getRotation(), DEC);
247 
248     tft.drawRoundRect(20, 10, 25, 15, 5, ST7735_BLUE);
249     while (!Serial.available());
250     Serial.read();  Serial.read();  Serial.read();
251 
252     tft.setRotation(tft.getRotation()+1);
253   }
254 }
255 
256 void rotateFillRoundRect(void) {
257   for (uint8_t i=0; i<4; i++) {
258     tft.fillScreen(ST7735_BLACK);
259     Serial.println(tft.getRotation(), DEC);
260 
261     tft.fillRoundRect(20, 10, 25, 15, 5, ST7735_CYAN);
262     while (!Serial.available());
263     Serial.read();  Serial.read();  Serial.read();
264 
265     tft.setRotation(tft.getRotation()+1);
266   }
267 }
268 
269 void rotateChar(void) {
270   for (uint8_t i=0; i<4; i++) {
271     tft.fillScreen(ST7735_BLACK);
272     Serial.println(tft.getRotation(), DEC);
273 
274     tft.drawChar(25, 15, 'A', ST7735_WHITE, ST7735_WHITE, 1);
275     while (!Serial.available());
276     Serial.read();  Serial.read();  Serial.read();
277 
278     tft.setRotation(tft.getRotation()+1);
279   }
280 }
281 
282 void rotateString(void) {
283   for (uint8_t i=0; i<4; i++) {
284     tft.fillScreen(ST7735_BLACK);
285     Serial.println(tft.getRotation(), DEC);
286 
287     tft.setCursor(8, 25);
288     tft.setTextSize(1);
289     tft.setTextColor(ST7735_WHITE);
290     tft.print("Adafruit Industries");
291     while (!Serial.available());
292     Serial.read();  Serial.read();  Serial.read();
293 
294     tft.setRotation(tft.getRotation()+1);
295   }
296 }

См.также

Внешние ссылки