From 5e1a34c9d7692a60b7eb53b034ad52740996354d Mon Sep 17 00:00:00 2001 From: Agent725 Date: Sat, 8 Nov 2025 19:55:00 +0100 Subject: [PATCH] added delay to ensure OLED is initialized upon cold boot --- codingExamples/screensaver.js | 79 ++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/codingExamples/screensaver.js b/codingExamples/screensaver.js index ff0fdaf..8eb364c 100644 --- a/codingExamples/screensaver.js +++ b/codingExamples/screensaver.js @@ -2,45 +2,48 @@ * SCREENSAVER: bounces a nice little text over the screen */ -// offsets must be defined for correct display on screen! -const Xoffset = 8; -const Yoffset = 8; +// for some reason the OLED screen needs this timeout +setTimeout(function() { + // offsets must be defined for correct display on screen! + const Xoffset = 8; + const Yoffset = 8; -// define the function first, before using it below -function displayText(textString, x,y) { - // write some text - scrn.drawString(textString, Xoffset + x, Yoffset + y); - // write to the screen - scrn.flip(); - // clear a bit of the screen in preparation before next update - scrn.clearRect(Xoffset + x, Yoffset + y, Xoffset + x + 30, Yoffset + y + 8); -} + // define the function first, before using it below + function displayText(textString, x, y) { + // write some text + scrn.drawString(textString, Xoffset + x, Yoffset + y); + // write to the screen + scrn.flip(); + // clear a bit of the screen in preparation before next update + scrn.clearRect(Xoffset + x, Yoffset + y, Xoffset + x + 30, Yoffset + y + 8); + } -// MAIN FUNCTION: bounce text and flash LED (D8) -let on = false; -let x = 0; -let y = 0; -let ix = 1; -let iy = 1; -const txt = 'HELLO'; -function main() { - setInterval(function() { - on = !on; - digitalWrite("D8",on); - y += iy; - x += ix; - if (x > (72-(txt.length*8))) ix = -ix; - if (y > 34) iy = -iy; - if (x < 1) ix = -ix; - if (y < 1) iy = -iy; - displayText(txt,x,y); - }, 100); -} + // MAIN: flash LED (D8) + let on = false; + let x = 0; + let y = 0; + let ix = 1; + let iy = 1; + const txt = 'HELLO'; + function go() { + setInterval(function() { + on = !on; + digitalWrite("D8",on); + y += iy; + x += ix; + if (x > (72-(txt.length*8))) ix = -ix; + if (y > 34) iy = -iy; + if (x < 1) ix = -ix; + if (y < 1) iy = -iy; + displayText(txt, x, y); + }, 100); + } -// -// required modules/libraries (in Espruino must be included at the end due to needing functions) -// -I2C1.setup({scl:"D6",sda:"D5"}); // I2C setup -// initialize the screen and its dimensions (null can be replaced by a callback) -const scrn = require("SSD1306").connect(I2C1, main, { width:72, height:48 }); // for 72x48 LCD + // + // required modules/libraries (in Espruino must be included at the end due to needing functions) + // + I2C1.setup({scl:"D6",sda:"D5"}); // I2C setup + // initialize the screen and its dimensions (null can be replaced by a callback) + const scrn = require("SSD1306").connect(I2C1, main, { width:72, height:48 }); // for 72x48 LCD +}, 5000);