前言
打算编写一个字幕滚动显示。 可以使用链表、数组、字符串拼接 预计使用循环链表,然后显示其中的3个连续数据,显示在显示屏的第2、3、4行。——delay 使用string数组最为简便。
代码
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
#define MAX_LIST_NUM 15
#define MAX_DISPLAY_NUM 2
#include <Wire.h>
#include "SH1106Wire.h"
SH1106Wire display(0x3c, 23, 22);
String device_list = "A|B|C|D|E|F|G";
String device_list_array[MAX_LIST_NUM] = {"A","B","C","D","E","F"};
String temp_string = "";
int status_dp_list_num = 0;
int status_array_num_current = 0;
int status_array_num_max = 6;
void setup() {
Serial.begin(115200);
Serial.println("Scanning...");
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
void loop() {
Serial.println("in loop");
display.clear();
display.drawString(0, 0, "light on");
display.display();
Serial.print("current: ");
Serial.println(status_array_num_current);
for (int temp=0; MAX_DISPLAY_NUM+1 > temp ; temp++){
temp_string = String(status_array_num_current+temp)+" "+device_list_array[status_array_num_current + temp];
Serial.println(temp_string);
display.drawString(0, 16+16*temp, temp_string);
display.display();
}
delay(1000);
status_array_num_current = status_array_num_current+1;
if (status_array_num_current >= status_array_num_max-MAX_DISPLAY_NUM)
status_array_num_current = 0;
Serial.println("out loop");
}
结果
后续再结合显示匹配的ble device name。
|