Christian Loris
Published

Web Connected 8x8 Scrolling LED Display

An 8x8 LED Display driven by a MAX7219 and a Spark Core. Display content updated from an Azure Web Site using the SparkIODotNet Library.

Full instructions provided5,222
Web Connected 8x8 Scrolling LED Display

Things used in this project

Hardware components

Spark Core Wifi Development Kit
×1
8x8 LED Matrix
×1
MAX7219 LED Matrix/Digit Display Driver
×1
Resistor 10k ohm
Resistor 10k ohm
×1
100nF capacitor
×1
10uF electrolytic capacitor
×1
Half-size Breadboard
×1
Bunch of Breadboard Wires - Male to Male
×1
Bunch of Breadboard Wires – Female to Male
for connecting the LED display to the board
×1

Story

Read more

Code

file_7710.txt

C/C++
// This #include statement was automatically added by the Spark IDE.
#include "LedControl-MAX7219-MAX7221/LedControl-MAX7219-MAX7221.h"

LedControl *led;

int phase = 0;
char message[64];
char custMessage[64];
int messageLength = 0;
int myUptime = 0;

uint8_t data = A5;
uint8_t load = A4;
uint8_t myclock = A3;

void setup() {
    led = new LedControl(data,myclock,load,1); //DIN,CLK,CS,HowManyDisplays
    led->shutdown(0,false); //Turn it on
    led->setIntensity(0,1);

    Spark.function("SetMessage", setMessage);
    Spark.variable("Message", custMessage, STRING);
}

void loop() {

    if(phase==0){ //Message-loop starts
        if(strlen(custMessage) == 0)
        {
            myUptime = (int)(millis()/1000);
            sprintf(message,"Uptime %d:%02d", myUptime / 3600, (myUptime % 3600)/60); //update message
        }
        else
        {
            strcpy(message, custMessage); //update message
        }
        messageLength = strlen(message); // ...and length
        led->tweenLetters(0,' ',message[phase]); //scroll from empty to 1 letter
    }

    if(phase<messageLength-1){ //next characters except last one
        led->tweenLetters(0,message[phase],message[phase+1]);
        phase++;
    }else if(phase==messageLength-1){//last character scrolls to empty
        led->tweenLetters(0,message[phase],' ');
        phase = 0; //restart message-loop
    }
}

int setMessage(String _message)
{
    _message.toCharArray(custMessage, 64);
    return 0;
} 

file_7711.txt

C/C++
protected void btnSet_Click(object sender, EventArgs e)
{
    try
    {
        CoreAPI core = GetCoreAPI();

        core.CallFunctionInt("SetMessage", txtMessage.Text);

        lblError.Visible = false;

        lblCurrentMessage.Text = txtMessage.Text;
    }
    catch (Exception ex)
    {
        lblError.Text = ex.Message;
        lblError.Visible = true;
    }
}

protected void btnClear_Click(object sender, EventArgs e)
{
    txtMessage.Text = "";

    try
    {
        CoreAPI core = GetCoreAPI();

        core.CallFunctionInt("SetMessage", txtMessage.Text);

        lblError.Visible = false;
        lblCurrentMessage.Text = txtMessage.Text;
    }
    catch (Exception ex)
    {
        lblError.Text = ex.Message;
        lblError.Visible = true;
    }
}

protected void btnRefresh_Click(object sender, EventArgs e)
{
    txtMessage.Text = "";

    try
    {
        CoreAPI core = GetCoreAPI();

        lblCurrentMessage.Text = core.GetVariableString("Message");

        lblError.Visible = false;
    }
    catch (Exception ex)
    {
        lblError.Text = ex.Message;
        lblError.Visible = true;
    }
} 

file_7712.txt

C/C++
private CoreAPI GetCoreAPI()
{
    CoreAPI core;

    AppSettingsReader reader = new AppSettingsReader();

    core = new CoreAPI(reader.GetValue("coreID", typeof(string)).ToString(),
        reader.GetValue("accessToken", typeof(string)).ToString());

    return core;
} 

file_7713.xml

XML
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
  <appSettings>
    <add key="CoreID" value="xxxxxxxxxxxxx" />
    <add key="AccessToken" value="yyyyyyyyyyyyyyyyyyyyyyyyyyyyy" />
  </appSettings>
</configuration> 

Github

https://github.com/chrisloris/SparkIODotNet

Credits

Christian Loris
1 project • 7 followers
Software Engineer, Father, Tinkerer, Husband.

Comments