Arduino:Примеры/ks0108example: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">») |
Нет описания правки |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 9: | Строка 9: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
* Пример ks0108 GLCD | * Пример ks0108 GLCD | ||
Строка 124: | Строка 124: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Пример]] | [[Категория:Пример]] | ||
[[Категория:Примеры]] | [[Категория:Примеры]] | ||
[[Категория:Пример программирования Arduino]] | [[Категория:Пример программирования Arduino]] | ||
[[Категория:Примеры программирования Arduino]] | [[Категория:Примеры программирования Arduino]] |
Текущая версия от 12:39, 8 июля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Пример работы нескольких графических функций (версия для ks0108)[1]
Этот пример показывает, как использовать на Arduino несколько графических функций библиотеки GLCD. Это скетч-пример из оригинальной библиотеки ks0108.
Код
/*
* Пример ks0108 GLCD
* (скетч-пример из оригинальной библиотеки ks0108)
*
* Базовый тестовый код для библиотеки Arduino KS0108 GLCD.
* Этот код тестирует ряд графических функций, поддерживаемых
* библиотекой, и попутно является примером их использования.
* Кроме того, он показывает информацию о производительности,
* а конкретно – количество кадров в секунду.
*/
#include <glcd.h>
#include "fonts/Arial14.h" // пропорциональный шрифт
#include "fonts/SystemFont5x7.h" // системный шрифт
#include "bitmaps/ArduinoIcon.h" // картинка
//#include "include/glcd_Deprecated.h"
/*
* Проверяем, не маленький ли это дисплей, потому что этот скетч был
* написан перед тем, как библиотека начала поддерживать
* маленькие дисплеи.
*/
#if DISPLAY_HEIGHT < 64
#error примеру ks0108 требуется дисплей, высота которого составляет как минимум 64 пикселя
#endif
#if DISPLAY_WIDTH < 128
#error примеру ks0108 требуется дисплей, ширина которого составляет как минимум 128 пикселей
#endif
unsigned long startMillis;
unsigned int loops = 0;
unsigned int iter = 0;
void setup(){
GLCD.Init(NON_INVERTED); // инициализируем библиотеку в режиме рисования
GLCD.ClearScreen();
GLCD.DrawBitmap(ArduinoIcon, 32,0, BLACK); // рисуем картинку в указанных координатах X и Y
GLCD.SelectFont(System5x7); // переключаемся на системный шрифт с фиксированной шириной
countdown(5);
GLCD.ClearScreen();
introScreen(); // показываем интро
GLCD.ClearScreen();
}
void introScreen(){
GLCD.SelectFont(Arial_14); // вы также можете создавать собственные шрифты
GLCD.GotoXY(20, 2);
GLCD.Puts("GLCD version "); // "Версия GLCD "
GLCD.PrintNumber(GLCD_VERSION);
GLCD.DrawRoundRect(16,0,99,18, 5, BLACK); // закругленный прямоугольник вокруг текстовой области
GLCD.SelectFont(System5x7); // переключаемся на системный шрифт с фиксированной шириной
showCharacters();
countdown(5);
}
void showCharacters(){
byte line = 3; // начинаем с 4-ой линии
for(byte c = 32; c <=127; c++){
if( (c-32) % 20 == 0)
GLCD.CursorTo(1,line++); // функция CursorTo() используется для системного шрифта с фиксированной шириной
GLCD.PutChar(c);
}
}
void drawSpinner(byte pos, byte x, byte y) {
// здесь рисуется объект, который появится в счетчике:
switch(pos % 8) {
case 0 : GLCD.DrawLine( x, y-8, x, y+8, BLACK); break;
case 1 : GLCD.DrawLine( x+3, y-7, x-3, y+7, BLACK); break;
case 2 : GLCD.DrawLine( x+6, y-6, x-6, y+6, BLACK); break;
case 3 : GLCD.DrawLine( x+7, y-3, x-7, y+3, BLACK); break;
case 4 : GLCD.DrawLine( x+8, y, x-8, y, BLACK); break;
case 5 : GLCD.DrawLine( x+7, y+3, x-7, y-3, BLACK); break;
case 6 : GLCD.DrawLine( x+6, y+6, x-6, y-6, BLACK); break;
case 7 : GLCD.DrawLine( x+3, y+7, x-3, y-7, BLACK); break;
}
}
void countdown(int count){
while(count--){ // делаем обратный отсчет
GLCD.CursorTo(0,1); // первый столбец, второй ряд (отсчет от «0»)
GLCD.PutChar(count + '0');
delay(1000);
}
}
void loop(){ // этот блок будет повторяться снова и снова
iter = 0;
startMillis = millis();
while( millis() - startMillis < 1000){ // выделяем для этого цикла одну секунду
GLCD.DrawRect(0, 0, 64, 61, BLACK); // прямоугольник в левой части экрана
GLCD.DrawRoundRect(68, 0, 58, 61, 5, BLACK); // закругленный прямоугольник вокруг текстовой области
for(int i=0; i < 62; i += 4)
GLCD.DrawLine(1,1,63,i, BLACK); // рисуем линии, идущие из левого верхнего угла к правому нижнему углу прямоугольника
GLCD.DrawCircle(32,31,30,BLACK); // рисуем круг с центром в левой стороне экрана
GLCD.FillRect(92,40,16,16, WHITE); // очищаем предыдущую позицию счетчика
drawSpinner(loops++,100,48); // рисуем новую позицию счетчика
//GLCD.FillRect(24,txtLINE3,14,14, WHITE); // очищаем текстовую область, которая будет нарисована ниже
GLCD.CursorTo(5,5); // перемещаем курсор для печати текста
GLCD.PrintNumber(++iter); // печатаем текущий цикл на текущей позиции курсора position
}
// показываем количество проходов в секунду:
GLCD.ClearScreen(); // очищаем кран
GLCD.CursorTo(14,2); // позиция курсора
GLCD.Puts("FPS= "); // печатаем текстовую строку
GLCD.PrintNumber(iter); // печатаем число
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino