You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First of all thanks for this amazing library. It helped a lot to display QR codes on an OLED using Arduino.
I have a question that might be too simple. I want to precompute the QR codes in order to save time.
Is it possible to precompute and store them inside an array-like structure and draw them immediately.
The code works fine when I compute the QR code, i.e. call the qrcode_initText, and draw the image inside the same function call. But I failed to draw the QR codes properly with precomputing.
For precomputing, I tried computing them inside the setup() function and then print them after a button press inside the loop().
Below are the code snippets.
setup():
...
QRCode qrcode;
void setup() {
Serial.begin(BAUD_RATE);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(3); // Normal 1:1 pixel scale
display.setTextColor(WHITE); // Draw white text
display.display();
uint8_t qrcodeBytes[qrcode_getBufferSize(QR_VERSION)];
qrcode_initText(&qrcode, qrcodeBytes, QR_VERSION, 0, "hello");
}
loop():
void loop() {
if (Serial.available() > 0) {
const uint8_t y0 = 10;
const uint8_t x0 = 10;
char data = Serial.read();
if (data == 'Q') {
display.clearDisplay();
for (uint8_t y = 0; y < qrcode.size; y++)
{
for (uint8_t x = 0; x < qrcode.size; x++)
{
uint8_t pixel = 0;
if (qrcode_getModule(&qrcode, x, y) )
{
/*Put black pixel*/
pixel = 1;
}
else
{
/*White pixel*/
pixel = 0;
}
display.drawPixel(x0 + 2 * x, y0 + y, pixel);
display.drawPixel(x0 + 2 * x + 1, y0 + y, pixel);
}
}
for (uint8_t y = 0; y < qrcode.size; y++) {
for (uint8_t x = 0; x < qrcode.size; x++) {
if (qrcode_getModule(&qrcode, x, y)) {
Serial.print("**");
} else {
Serial.print(" ");
}
}
Serial.print("\n");
}
// Bottom quiet zone
Serial.print("\n\n\n\n");
}
}
display.display();
delay(2000);
display.display();
delay(1000);
}
However, I get a broken QR (image below) when I do this. I suspect the values inside the qrCodeBytes get changed between setup and loop.
The text was updated successfully, but these errors were encountered:
Hi!
First of all thanks for this amazing library. It helped a lot to display QR codes on an OLED using Arduino.
I have a question that might be too simple. I want to precompute the QR codes in order to save time.
Is it possible to precompute and store them inside an array-like structure and draw them immediately.
The code works fine when I compute the QR code, i.e. call the qrcode_initText, and draw the image inside the same function call. But I failed to draw the QR codes properly with precomputing.
For precomputing, I tried computing them inside the setup() function and then print them after a button press inside the loop().
Below are the code snippets.
setup():
loop():
However, I get a broken QR (image below) when I do this. I suspect the values inside the qrCodeBytes get changed between setup and loop.
The text was updated successfully, but these errors were encountered: