Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Устройство M5Stack имеет три встроенных кнопки, которые имеют названия BtnA, BtnB, BtnC соответственно слева направо. Для работы с ними есть несколько функций.
В примерах есть скетч для работы с кнопками - File | Examples | M5Stack | Basic | Button.
#include <M5Stack.h>
void setup() {
M5.begin(true, false, true);
M5.Power.begin();
M5.Lcd.clear(BLACK);
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setTextSize(2);
M5.Lcd.setCursor(65, 10);
M5.Lcd.println("Button example");
M5.Lcd.setCursor(3, 35);
M5.Lcd.println("Press button B for 700ms");
M5.Lcd.println("to clear screen.");
M5.Lcd.setTextColor(RED);
}
void loop() {
// update button state
M5.update();
if (M5.BtnA.wasReleased()) {
M5.Lcd.print('A');
} else if (M5.BtnB.wasReleased()) {
M5.Lcd.print('B');
} else if (M5.BtnC.wasReleased()) {
M5.Lcd.print('C');
} else if (M5.BtnB.wasReleasefor(700)) {
M5.Lcd.clear(BLACK);
M5.Lcd.setCursor(0, 0);
}
}
После запуска скетча мы видим чёрный экран с надписью "Button example" (Пример с кнопкой). На другой строчке надпись "Press button B for 700ms to clear screen" (Нажмите кнопку B на 700 миллисекунд для очистки экрана).
Далее вы можете нажимать на любые из трёх кнопок в любом порядке - соответствующие символы кнопок будут появляться на третьей строке.
Вы можете очистить экран, если удерживать кнопку B чуть больше, чем обычно. Затем снова можете нажимать на кнопки - символы будут выводиться уже с первой строки.
Напишем другой пример - в зависимости от нажатой кнопки будем выводить круг определённого цвета.
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Lcd.setBrightness(100);
M5.Lcd.setTextSize(3);
M5.Lcd.fillScreen(TFT_WHITE);
M5.Lcd.setCursor(44, 215);
M5.Lcd.setTextColor(RED);
M5.Lcd.printf("RED");
M5.Lcd.setCursor(116, 215);
M5.Lcd.setTextColor(GREEN);
M5.Lcd.printf("GREEN");
M5.Lcd.setCursor(222, 215);
M5.Lcd.setTextColor(BLUE);
M5.Lcd.printf("BLUE");
}
void loop() {
if (M5.BtnA.wasPressed())
{
M5.Lcd.fillCircle(160, 100, 80, RED);
}
if (M5.BtnB.wasPressed())
{
M5.Lcd.fillCircle(160, 100, 80, GREEN);
}
if (M5.BtnC.wasPressed())
{
M5.Lcd.fillCircle(160, 100, 80, BLUE);
}
M5.update();
}
На рисунке представлен результат после нажатия синей кнопки.