Introduction: COI - Scrolling Text
You can use the code linked at the bottom as a skeleton for your own program. Modify the appendLCD or scrollLCD code to display the text you want, and be sure to include the initLCD(); command in the setup function.
Step 1: Hardware
- Intel Edison
- Static Mat
- Computer
- 2 Mini USB Cables
- Jumper Cable
- Seeed RGB Backlight LCD
Step 2: Setup
- Plug your Grove base shield into your Edison.
- Plug jumper cable into I2C port (which one doesn’t matter). Plug other end into RGB Backlight LCD.
- Download code at the end of the page.
- Paste code into Arduino IDE.
- Upload the code into Edison.
- Play around with the scrolling text to see what you can create.
Step 3: Programming/Code
Download the file at the end of the instructable, or copy the following code into your Arduino-Intel IDE (Integrated Development Environment). Upload the code to the Edison Board.
//This is a library of functions designed to simplify the task of setting up scrolling code on the lcd screen
//There are several modes of text scrolling: //Continuous scrolling - characters will scroll across the lcd screen as they are added. //Looped scrolling - Update a String that scrolls on loop, choose the row to scroll.
#include #include
rgb_lcd lcd;
const int lcdRows = 2; const int lcdCols = 16;
int milisPerChar = 125; long prevMilis = 0;
int scrollPos[lcdRows]; String prevStrings[lcdRows];
//EXAMPLE STRINGS: String scrollingText = "This text will scroll at the specified rate on loop from right to left.";
void initLCD(){
lcd.begin(lcdCols, lcdRows);
for(int i = 0; i < lcdRows; i++){
scrollPos[i] = 0;
prevStrings[i] = " ";
for(int j = 0; j < lcdCols - 1; j++){
prevStrings[i] += " ";
}
}
lcd.setRGB(255,255,255); //White by default, can be customized
}void scrollLCD(int rowNum, String text){
text = text + " ";
if(millis() - prevMilis > milisPerChar){
scrollPos[rowNum] += (millis()-prevMilis)/milisPerChar;
scrollPos[rowNum] = scrollPos[rowNum] % text.length();
prevMilis = millis();
} lcd.setCursor(0,rowNum);
for(int i = 0; i < lcdCols; i++){
lcd.print(" ");
}
lcd.setCursor(0,rowNum);
if(text.length() < lcdCols){
lcd.print(text);
lcd.setRGB(255,0,0);
}
else {
for(int i = 0; i < lcdCols; i++){
lcd.print(text[(scrollPos[rowNum] + i)%text.length()]);
}
}
}void appendLCD(int rowNum, String textToAppend){
prevStrings[rowNum] = prevStrings[rowNum] + textToAppend;
prevStrings[rowNum] = prevStrings[rowNum].substring(prevStrings[rowNum].length()-1-lcdCols, prevStrings[rowNum].length());
lcd.setCursor(0, rowNum);
lcd.print(prevStrings[rowNum]);
}void setup() {
initLCD();//Perform Other Initialization Steps Here: }
void loop() {
scrollLCD(0, scrollingText);
if(random(4)==0){
String alphabet = "ABCDEFGHIGJKLMNOPQRSTUVWXYZ";
int ranVal = random(alphabet.length());
appendLCD(1, alphabet.substring(ranVal, ranVal+1));
}
delay(100);//Unless you are doing a lot of processing, this is necessary to prevent screen flickering.
}Attachments
Step 4: Results/Lessons Learned
This product allows the user to display a long string of text on a screen that isn’t large enough to display it. It can be used for a variety of things ranging from displaying a grocery list to advertising the benefits of a product.






