Скрол в Adafruit
- Войдите на сайт для отправки комментариев
Пнд, 18/04/2022 - 15:02
Подскожите что я не так делаю, как правильно оформить с милисом?
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
unsigned long timing;
void setup() {
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
for (;;);
}
display.setTextColor(SSD1306_WHITE);
}
void loop() {
display.clearDisplay();
display.setCursor(0, 0);
display.setTextSize(1);
display.println("Scroll");
display.println("some part");
display.println("of the screen.");
display.display();
display.startscrollright(0x00, 0x00);
delay(4000);
// if (millis() - timing > 4000){
// display.clearDisplay();
// display.setCursor(0, 0);
// display.setTextSize(1);
// display.println("Scroll");
// display.println("some part");
// display.println("of the screen.");
// display.display();
// display.startscrollright(0x00, 0x00);
// timing = millis();
// }
}
Смотря что вы хотите получить.
Смотря что вы хотите получить.
Избавится от делай в теле цикла, так как нужно в будущем следить за нажатием кнопки.
Питаюсь сделать так чтобы - попадая в цикл, сразу зускалась надпись с эфектом скрола и при этом следило за нажатием кнопки, и как только нажали кнопку выходим из цикла.
Делай мне мешает, вот поэтому пытаюсь построить на милис, но !!!
Питаюсь сделать так чтобы - попадая в цикл, сразу зускалась надпись с эфектом скрола и при этом следило за нажатием кнопки, и как только нажали кнопку выходим из цикла.
Делай мне мешает, вот поэтому пытаюсь построить на милис, но !!!
#include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET 4 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); unsigned long timing; void setup() { if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for (;;); } display.setTextColor(SSD1306_WHITE); pinMode(13, OUTPUT); } void loop() { display.clearDisplay(); display.setCursor(0, 0); display.setTextSize(1); display.println("Scroll"); display.println("some part"); display.println("of the screen."); display.display(); display.startscrollright(0x00, 0x00); timing = millis(); do { //пример digitalWrite(13,!digitalRead(13)); delay(250); //пример } while ((millis()-timing)<4000); display.stopscroll(); display.startscrollleft(0x00, 0x00); timing = millis(); do { //пример digitalWrite(13,!digitalRead(13)); delay(250); //пример } while ((millis()-timing)<4000); // }И скроолл и моргание ...
Ага-а-а-а!
Ясно. Получается как бы врезаем однотактный цикл с инструкцией, в общий цикл.
Сбасибо!
Ты это, если кнопку нужно «слушать», то так не делай, дяди плохому учат.
Лучше почитай это: http://arduino.ru/tutorials/BlinkWithoutDelay
Ага-а-а-а!
Ясно. Получается как бы врезаем однотактный цикл с инструкцией, в общий цикл.
Сбасибо!
Не ага-а-а-а. Это не избавление от миллис, а извращенная замена delay. Настоящий переход на конечный автомат - это отсутствие блокирующих остальной код циклов и delay. Не надо ничего ждать в отдельных циклах, проверили условие: выполнилось - обработали, не выполнилось - тут же забыли и пошли дальше по loop до следующего раза.
Ага-а-а-а!
Ясно. Получается как бы врезаем однотактный цикл с инструкцией, в общий цикл.
Сбасибо!
простофиля... Над тобой просто стебутся, а ты и радуешься.