#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <qrcode.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int qrSize = 5;
QRCode qrcode(qrSize, ECC_LOW);
void setup() {
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
// Generate QR code for WiFi SSID and password
String ssid = "MyWiFiNetwork";
String password = "MyWiFiPassword";
String qrData = "WIFI:T:WPA;S:" + ssid + ";P:" + password + ";;";
qrcode.encode(qrData.c_str());
}
void loop() {
// Clear the display buffer
display.clearDisplay();
// Draw QR code on the screen
for (uint8_t y = 0; y < qrcode.size(); y++) {
for (uint8_t x = 0; x < qrcode.size(); x++) {
if (qrcode.getModule(x, y)) {
display.drawPixel(x+27, y+18, WHITE);
}
}
}
// Update the display
display.display();
}
我们使用两个嵌套的循环来遍历QR码数据,并在每个“模块”(黑色或白色)处绘制一个像素。最后,我们使用display.display()
方法将显示缓冲区中的内容刷新到OLED屏幕上。请注意,由于QR码的尺寸较大,因此可能需要进行微调,以确保它适合您的OLED屏幕。