• Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors
HomepcDuinoArduino-ish ProgramSPIAlpha Numeric Display
Previous Next

Alpha Numeric Display

Posted by: admin , February 13, 2015

This post was contributed by Charles (cwilt).

I modified an arduino library to control the SparkFun Alpha Numeric Display Driver.
FLIPDISPLAY does not work yet. I have not found a work around for passing the define to the driver.
IMG_20130414_155647

This is a simple clock program.

//#define FLIPDISPLAY // Comment this out if you want the characters flipped 180 degrees

#include <core.h>

#include <AlphaNumeric_Driver.h> // Include AlphaNumeric Display Driver Library

#define NUMBER_OF_DISPLAYS 8  // This value is currently only used by the library for the clear() command.
#include "time.h"


// --------- Pin Definitions -----------
int SDIpin = 11;
int CLKpin = 13;
int LEpin = 10;
int OEpin = 9;
// -------------------------------------
time_t epoch;
struct tm* friendly;
char buffer[50];
int n;
int old_min = 61;


alphaNumeric myDisplay(SDIpin, CLKpin, LEpin, OEpin, NUMBER_OF_DISPLAYS);  // Create an instance of Alpha Numeric Displays


void setup()
{
   myDisplay.begin();
}

void loop()
{
    epoch = time(NULL);
   friendly = localtime(&epoch);
   int temp_min = friendly->tm_min;
   if (temp_min != old_min)
   {
      myDisplay.off();
      myDisplay.clear();
      int temp_hour = friendly->tm_hour;
      if (temp_hour < 1){
           temp_hour = 12;
     }
      if (temp_hour > 12){
         temp_hour = temp_hour - 12;
      }
      n=sprintf(buffer, "% 2d-%02d ", temp_hour, friendly->tm_min);
      if (friendly->tm_hour > 11){
         strncat(buffer,"PM",2);
      }else{
         strncat(buffer,"AM",2);
      }
      myDisplay.scroll(buffer,0);
      myDisplay.on();
      old_min = friendly->tm_min;
   }
   delay(1000);
}

AphaNumeric_Driver.cpp

 

/*
  AlphaNumeric_Driver.cpp - Arduino library to control a string of AlphaNumeric Display Drivers   
  License: Beerware.
*/

#include "AlphaNumeric_Driver.h"

extern "C" {
   #include "environment.h"
}

// Constructor initializes the pins and clears the displays
alphaNumeric::alphaNumeric(const int SDI, const int CLK, const int LE, const int OE, const int displays)
{
   _SDIpin = SDI;
   _CLKpin = CLK;
   _LEpin = LE;
   _OEpin = OE;
   _displayAmount = displays;   
}

void alphaNumeric::begin(void)
{      
   pinMode(_SDIpin, OUTPUT);
   pinMode(_CLKpin, OUTPUT);
   pinMode(_LEpin, OUTPUT);
   pinMode(_OEpin, OUTPUT);
   digitalWrite(_SDIpin, LOW);
   digitalWrite(_CLKpin, LOW);
   digitalWrite(_LEpin, HIGH);
   digitalWrite(_OEpin, LOW);   
   clear();
}

// Turns the displays on, of the are off
void alphaNumeric::on(void)
{
   digitalWrite(_OEpin, LOW);
}

// Turns the displays off, if they are on
// When turned back on, the previously displayed data will still be there
void alphaNumeric::off(void)
{
   digitalWrite(_OEpin, HIGH);
}

void alphaNumeric::scroll(char * string, int time)
{
   int i = 0;
   while(string[i] != '\0')
   {
      shift16(createShiftData(string[i]));
      delay(time);
      i++;
   }
}

void alphaNumeric::clear(void)
{
   for (int i = 0; i < _displayAmount; i++)
      shift16(0);
}

void alphaNumeric::print(char toPrint)
{
   uint16_t shiftData = createShiftData(toPrint);
   
   shift16(shiftData);
}

void alphaNumeric::shift16(uint16_t data)
{
   shiftOut(_SDIpin, _CLKpin, MSBFIRST, (data>>);
   shiftOut(_SDIpin, _CLKpin, MSBFIRST, (data&0x00FF));
}

uint16_t alphaNumeric::createShiftData(char character)
{
   switch (character)
   {
      case '0':
      case 0:
         return ZERO;
         break;
      case '1':
      case 1:
         return ONE;
         break;
      case '2':
      case 2:
         return TWO;
         break;
      case '3':
      case 3:
         return THREE;
         break;
      case '4':  
      case 4:
         return FOUR;
         break;
      case '5':
      case 5:
         return FIVE;
         break;
      case '6':
      case 6:
         return SIX;
         break;
      case '7':
      case 7:
         return SEVEN;
         break;
      case '8':
      case 8:
         return EIGHT;
         break;
      case '9':
      case 9:
         return NINE;
         break;
      case 'A':
      case 'a':
      case 10:  
         return A_CHAR;
         break;
      case 'B':
      case 'b':
      case 11:
        return B_CHAR;
         break;
      case 'C':
      case 'c':
      case 12:
         return C_CHAR;
         break;
      case 'D':
      case 'd':
      case 13:
         return D_CHAR;
         break;
      case 'E':
      case 'e':
      case 14:
         return E_CHAR;
         break;
      case 'F':
      case 'f':
      case 15:
         return F_CHAR;
         break;
      case 'G':
      case 'g':
         return G_CHAR;
         break;
      case 'H':
      case 'h':
         return H_CHAR;
         break;
      case 'I':
      case 'i':
         return I_CHAR;
         break;
      case 'J':
      case 'j':
         return J_CHAR;
         break;
      case 'K':
      case 'k':
         return K_CHAR;
         break;
      case 'L':
      case 'l':
         return L_CHAR;
         break;
      case 'M':
      case 'm':
         return M_CHAR;
         break;
      case 'N':
      case 'n':
         return N_CHAR;
         break;
      case 'O':
      case 'o':
         return O_CHAR;
         break;
      case 'P':
      case 'p':
         return P_CHAR;
         break;
      case 'Q':
      case 'q':
         return Q_CHAR;
         break;
      case 'R':
      case 'r':
         return R_CHAR;
         break;
      case 'S':
      case 's':
         return S_CHAR;
         break;
      case 'T':
      case 't':
         return T_CHAR;
         break;
      case 'U':
      case 'u':
         return U_CHAR;
         break;
      case 'V':
      case 'v':
         return V_CHAR;
         break;
      case 'W':
      case 'w':
         return W_CHAR;
         break;
      case 'X':
      case 'x':
         return X_CHAR;
         break;
      case 'Y':
      case 'y':
         return Y_CHAR;
         break;
      case 'Z':
      case 'z':
         return Z_CHAR;
         break;
      case ' ':
         return 0;
         break;
      case '!':
         return EXCLAMATION;
         break;
      case '#':
         return (uint16_t) 0xFFFF;
         break;
      case '$':
         return DOLLAR;
         break;
      case '%':
         return PERCENT;
         break;
      case '^':
         return CARROT;
         break;
      case '&':
         return AMPERSAND;
         break;
      case '*':
         return ASTERISK;
         break;
      case '(':
         return LPAREN;
         break;
      case ')':
         return RPAREN;
         break;
      case '-':
         return MINUS;
         break;
      case '_':
         return UNDERSCORE;
         break;
      case '+':
         return PLUSYSIGN;
         break;
      case '=':
         return EQUALS;
         break;
      case '>':
         return RARROW;
         break;
      case '<':
         return LARROW;
         break;
      case ',':
         return COMMA;
         break;
      case '/':
         return FSLASH;
         break;
      case '\\':
         return BSLASH;
         break;
      case '\'':
         return SINGLEQUOTE;
         break;
      case '"':
         return DOUBLEQUOTE;
         break;
      case 0X5B:
         return LBRACKET;
         break;
      case 0X5D:
         return RIBRACKET;
         break;
      case 0X7D:
         return LECURLY;
         break;
      case 0X7B:
         return RICURLY;
         break;
      case '|':
         return PIPE;
         break;
      case '~':
         return TILDE;
         break;
      case '`':
         return APOSTROPHE;
         break;
      case '@':
         return ATSIGN;
         break;
      case '?':
         return QUESTIONMARK;
         break;
      case ':':
         return COLON;
         break;
      case ';':
         return SEMICOLON;
         break;
      case '.':
         return PERIOD;
         break;
      }


   return 0;   // Return
}

Share!
Tweet

admin

About the author

Leave a Reply Cancel reply

You must be logged in to post a comment.

Category

  • Home
  • pcDuino
  • WiKi
  • Store
  • Distributors