OLED flash line 1 message/ scroll line 2 message

matchbox

Senior Member
I was looking for a simple code like this that would flash the message on the first line and scroll the message on the second line, but could not find one. So wrote this for my application and thought id share it to save someone else the time.
The first line in this code is setup to extract the flashing message from the 18M2 EEprom on the back of the OLED display.


Code:
   [color=Navy]#picaxe [/color][color=Black]14m2
   
flash:
    [/color][color=Blue]for [/color][color=Purple]b1[/color][color=DarkCyan]=[/color][color=Navy][b]1 [/b][/color][color=Blue]to [/color][color=Navy][b]3                               [/b][/color][color=Green];flash cycles
    [/color][color=Blue]serout c.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]2[/b][/color][color=Black],[/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]128[/b][/color][color=Black],[/color][color=Navy][b]253[/b][/color][color=Black],[/color][color=Navy][b]5[/b][/color][color=Blue])      [/color][color=Green];reset display, position on line 1, flash 18M2 eeprom message
    [/color][color=Blue]pause [/color][color=Navy][b]1000                                  [/b][/color][color=Green];message,ON time
    [/color][color=Blue]serout c.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]128[/b][/color][color=Black],[/color][color=Navy][b]253[/b][/color][color=Black],[/color][color=Navy][b]4[/b][/color][color=Blue])            [/color][color=Green];position line 1, 18m2 eeprom message or empty
    [/color][color=Blue]pause [/color][color=Navy][b]300                                   [/b][/color][color=Green];empty message, OFF time
    [/color][color=Blue]next [/color][color=Purple]b1 
    [/color][color=Blue]serout c.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]208[/b][/color][color=Black],[/color][color=Red]"MESSAGE TO BE SCROLLED"[/color][color=Blue])[/color][color=Green];position line 2, Message to Scroll[/color]
[color=Black]scroll:
    [/color][color=Blue]inc [/color][color=Purple]b0                                      [/color][color=Green];inc counter 
    [/color][color=Blue]if [/color][color=Purple]b0[/color][color=DarkCyan]=[/color][color=Navy][b]52 [/b][/color][color=Blue]then                               [/color][color=Green];counter value set to length of the message 
    [/color][color=Blue]serout c.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]1[/b][/color][color=Blue])                    [/color][color=Green];clear display when message has scrolled 
    [/color][color=Blue]pause [/color][color=Navy][b]50 
    [/b][/color][color=Blue]let [/color][color=Purple]b0[/color][color=DarkCyan]=[/color][color=Navy][b]0                                    [/b][/color][color=Green];reset counter
    [/color][color=Blue]goto [/color][color=Black]flash [/color][color=Blue]endif                               
    serout c.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]24[/b][/color][color=Blue])                   [/color][color=Green];scroll the display left 
    [/color][color=Blue]pause [/color][color=Navy][b]180                                   [/b][/color][color=Green];Scrolling Speed
    [/color][color=Blue]goto [/color][color=Black]scroll[/color]


And the one below uses a message stored in the control processors eeprom. To save on memory
space that messages can take up.


Code:
   [color=Navy]#picaxe [/color][color=Black]14m2
   
flash:
 [/color][color=Blue]for [/color][color=Purple]b1[/color][color=DarkCyan]=[/color][color=Navy][b]1 [/b][/color][color=Blue]to [/color][color=Navy][b]3                           [/b][/color][color=Green];flash cycles
 [/color][color=Blue]serout b.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]2[/b][/color][color=Black],[/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]128[/b][/color][color=Black],[/color][color=Navy][b]253[/b][/color][color=Black],[/color][color=Navy][b]5[/b][/color][color=Blue])  [/color][color=Green];reset display, position on line 1, flash 18M2 eeprom message
 [/color][color=Blue]pause [/color][color=Navy][b]1200                              [/b][/color][color=Green];first message,ON time
 [/color][color=Blue]serout b.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]128[/b][/color][color=Black],[/color][color=Navy][b]253[/b][/color][color=Black],[/color][color=Navy][b]1[/b][/color][color=Blue])        [/color][color=Green];position line 1, 18M2 eeprom empty
 [/color][color=Blue]pause [/color][color=Navy][b]200                               [/b][/color][color=Green];empty message, OFF time
 [/color][color=Blue]next [/color][color=Purple]b1

 [/color][color=Blue]serout b.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black], [/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]1[/b][/color][color=Blue])
 pause [/color][color=Navy][b]500                               [/b][/color][color=Green];eeprom initalisation time
 [/color][color=Blue]eeprom [/color][color=Navy][b]0[/b][/color][color=Black],[/color][color=Blue]([/color][color=Red]"MESSAGE TO BE SCROLLED"[/color][color=Blue])     [/color][color=Green];message to scroll is written into picaxe Eeprom
 [/color][color=Blue]pause [/color][color=Navy][b]30
 [/b][/color][color=Blue]serout b.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]2[/b][/color][color=Black],[/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]208[/b][/color][color=Blue])        [/color][color=Green];reset display, start line 2 position 16[/color]
[color=Black]scroll:
 [/color][color=Blue]for [/color][color=Purple]b0[/color][color=DarkCyan]=[/color][color=Navy][b]0 [/b][/color][color=Blue]to [/color][color=Navy][b]60                          [/b][/color][color=Green];scroll 43 character message plus 16 spaces to scroll message off screen.      
 [/color][color=Blue]read [/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1                              [/color][color=Green];read eeprom 0 and place in b1
 [/color][color=Blue]if [/color][color=Purple]b0[/color][color=DarkCyan]=>[/color][color=Navy][b]43 [/b][/color][color=Blue]then let [/color][color=Purple]b1[/color][color=DarkCyan]=[/color][color=Navy][b]$20 [/b][/color][color=Blue][u]endif         [/u][/color][color=Green];message 43 charactors long, place space to complete scroll-off
 [/color][color=Blue]serout b.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b1[/color][color=Blue])                   [/color][color=Green];display b1
 [/color][color=Blue]serout b.2[/color][color=Black],[/color][color=Blue]n2400[/color][color=Black],[/color][color=Blue]([/color][color=Navy][b]254[/b][/color][color=Black],[/color][color=Navy][b]24[/b][/color][color=Blue])               [/color][color=Green];scrolls the display to the left
 [/color][color=Blue]pause [/color][color=Navy][b]100                               [/b][/color][color=Green];scroll speed
 [/color][color=Blue]next [/color][color=Purple]b0
 [/color][color=Blue]goto [/color][color=Black]flash[/color]
 
Last edited:
Top