Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/rotationtest

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Тест функций вращения[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. }

См.также

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

  1. github.com - rotationtest.ino