Rafael Ortriz / Mbed 2 deprecated ht1632_matrix

Dependencies:   EthernetNetIf mbed

Committer:
rafacherin
Date:
Wed Sep 28 07:59:14 2011 +0000
Revision:
0:3011998ebd3e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rafacherin 0:3011998ebd3e 1 #include "mbed.h"
rafacherin 0:3011998ebd3e 2 #include "ht1632.h"
rafacherin 0:3011998ebd3e 3 #include "font3.h"
rafacherin 0:3011998ebd3e 4
rafacherin 0:3011998ebd3e 5 #define HIGH 1
rafacherin 0:3011998ebd3e 6 #define LOW 0
rafacherin 0:3011998ebd3e 7
rafacherin 0:3011998ebd3e 8 DigitalOut ht1632_wrclk(p7); // For Test : Led1 is Clock
rafacherin 0:3011998ebd3e 9 DigitalOut ht1632_data(p5); // Led2 is Data ....
rafacherin 0:3011998ebd3e 10 DigitalOut ht1632_cs(p21); // Led3 is CS
rafacherin 0:3011998ebd3e 11 DigitalOut myled1(LED1);
rafacherin 0:3011998ebd3e 12
rafacherin 0:3011998ebd3e 13 typedef unsigned char byte;
rafacherin 0:3011998ebd3e 14
rafacherin 0:3011998ebd3e 15 void byteOut(byte c);
rafacherin 0:3011998ebd3e 16 void ht1632_chipselect(byte chipno);
rafacherin 0:3011998ebd3e 17 static void ht1632_sendcmd (byte command);
rafacherin 0:3011998ebd3e 18 static void ht1632_senddata (byte address, byte data);
rafacherin 0:3011998ebd3e 19 void ht1632_chipfree(byte chipno);
rafacherin 0:3011998ebd3e 20 void ht1632_writebits (byte bits, byte firstbit);
rafacherin 0:3011998ebd3e 21 void ht1632_plot (int x, int y, char val);
rafacherin 0:3011998ebd3e 22 void setup();
rafacherin 0:3011998ebd3e 23 void loop();
rafacherin 0:3011998ebd3e 24
rafacherin 0:3011998ebd3e 25 int main() {
rafacherin 0:3011998ebd3e 26 setup();
rafacherin 0:3011998ebd3e 27 while(1) {
rafacherin 0:3011998ebd3e 28 loop();
rafacherin 0:3011998ebd3e 29 }
rafacherin 0:3011998ebd3e 30 }
rafacherin 0:3011998ebd3e 31
rafacherin 0:3011998ebd3e 32 /***********************************************************************
rafacherin 0:3011998ebd3e 33 * HT1624.pde - Arduino demo program for Holtek HT1632 LED driver chip,
rafacherin 0:3011998ebd3e 34 * As implemented on the Sure Electronics DE-DP016 display board
rafacherin 0:3011998ebd3e 35 * (16*24 dot matrix LED module.)
rafacherin 0:3011998ebd3e 36 * Nov, 2008 by Bill Westfield ("WestfW")
rafacherin 0:3011998ebd3e 37 * Copyrighted and distributed under the terms of the Berkely license
rafacherin 0:3011998ebd3e 38 * (copy freely, but include this notice of original author.)
rafacherin 0:3011998ebd3e 39 *
rafacherin 0:3011998ebd3e 40 * Adapted for 8x32 display by FlorinC.
rafacherin 0:3011998ebd3e 41 ***********************************************************************/
rafacherin 0:3011998ebd3e 42
rafacherin 0:3011998ebd3e 43 // comment out this line for the 8x32 display;
rafacherin 0:3011998ebd3e 44 #define _16x24_
rafacherin 0:3011998ebd3e 45
rafacherin 0:3011998ebd3e 46
rafacherin 0:3011998ebd3e 47 #ifdef _16x24_
rafacherin 0:3011998ebd3e 48 #define X_MAX 23
rafacherin 0:3011998ebd3e 49 #define Y_MAX 15
rafacherin 0:3011998ebd3e 50 #else
rafacherin 0:3011998ebd3e 51 #define X_MAX 31
rafacherin 0:3011998ebd3e 52 #define Y_MAX 7
rafacherin 0:3011998ebd3e 53 #endif
rafacherin 0:3011998ebd3e 54
rafacherin 0:3011998ebd3e 55 #define plot(x,y,v) ht1632_plot(x,y,v)
rafacherin 0:3011998ebd3e 56 #define cls ht1632_clear
rafacherin 0:3011998ebd3e 57
rafacherin 0:3011998ebd3e 58 #define DISPDELAY 0
rafacherin 0:3011998ebd3e 59
rafacherin 0:3011998ebd3e 60 char* msg = " Corporative Intelligence LABoratory (CILAB)"; //a�adimos 5 espacios en blanco
rafacherin 0:3011998ebd3e 61 //char* msg="cilab";
rafacherin 0:3011998ebd3e 62 int crtPos = 0;
rafacherin 0:3011998ebd3e 63 int pos [24]={16,17,18,19,20,21,22,23,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7};//mapeamos poscion de columna de derecha a izquierda
rafacherin 0:3011998ebd3e 64
rafacherin 0:3011998ebd3e 65 /***********************************************************************
rafacherin 0:3011998ebd3e 66 * ht1632_chipselect / ht1632_chipfree
rafacherin 0:3011998ebd3e 67 * Select or de-select a particular ht1632 chip.
rafacherin 0:3011998ebd3e 68 * De-selecting a chip ends the commands being sent to a chip.
rafacherin 0:3011998ebd3e 69 * CD pins are active-low; writing 0 to the pin selects the chip.
rafacherin 0:3011998ebd3e 70 ***********************************************************************/
rafacherin 0:3011998ebd3e 71
rafacherin 0:3011998ebd3e 72 void ht1632_chipselect(byte chipno)
rafacherin 0:3011998ebd3e 73 {
rafacherin 0:3011998ebd3e 74 ht1632_cs = 0;
rafacherin 0:3011998ebd3e 75 }
rafacherin 0:3011998ebd3e 76
rafacherin 0:3011998ebd3e 77 void ht1632_chipfree(byte chipno)
rafacherin 0:3011998ebd3e 78 {
rafacherin 0:3011998ebd3e 79 ht1632_cs = 1;
rafacherin 0:3011998ebd3e 80 }
rafacherin 0:3011998ebd3e 81
rafacherin 0:3011998ebd3e 82 /*
rafacherin 0:3011998ebd3e 83 * we keep a copy of the display controller contents so that we can
rafacherin 0:3011998ebd3e 84 * know which bits are on without having to (slowly) read the device.
rafacherin 0:3011998ebd3e 85 * Note that we only use the low four bits of the shadow ram, since
rafacherin 0:3011998ebd3e 86 * we're shadowing 4-bit memory. This makes things faster, and we
rafacherin 0:3011998ebd3e 87 * use the other half for a "snapshot" when we want to plot new data
rafacherin 0:3011998ebd3e 88 * based on older data...
rafacherin 0:3011998ebd3e 89 */
rafacherin 0:3011998ebd3e 90 // (fc) covers the case for 32x8 as well (64 bytes, 4 bits)
rafacherin 0:3011998ebd3e 91 byte ht1632_shadowram[96]; // our copy of the display's RAM
rafacherin 0:3011998ebd3e 92
rafacherin 0:3011998ebd3e 93 /*
rafacherin 0:3011998ebd3e 94 * ht1632_writebits
rafacherin 0:3011998ebd3e 95 * Write bits (up to <img src="http://timewitharduino.com/wp-includes/images/smilies/icon_cool.gif" alt="8)" class="wp-smiley"> to h1632 on pins HT1632_DATA, HT1632_WRCLK
rafacherin 0:3011998ebd3e 96 * Chip is assumed to already be chip-selected
rafacherin 0:3011998ebd3e 97 * Bits are shifted out from MSB to LSB, with the first bit sent
rafacherin 0:3011998ebd3e 98 * being (bits & firstbit), shifted till firsbit is zero.
rafacherin 0:3011998ebd3e 99 */
rafacherin 0:3011998ebd3e 100 void ht1632_writebits (byte bits, byte firstbit)
rafacherin 0:3011998ebd3e 101 {
rafacherin 0:3011998ebd3e 102 while (firstbit) {
rafacherin 0:3011998ebd3e 103 ht1632_wrclk = 0;
rafacherin 0:3011998ebd3e 104 if (bits & firstbit) {
rafacherin 0:3011998ebd3e 105 ht1632_data = 1;
rafacherin 0:3011998ebd3e 106 }
rafacherin 0:3011998ebd3e 107 else {
rafacherin 0:3011998ebd3e 108 ht1632_data = 0;
rafacherin 0:3011998ebd3e 109 }
rafacherin 0:3011998ebd3e 110 ht1632_wrclk = 1;
rafacherin 0:3011998ebd3e 111 firstbit >>= 1;
rafacherin 0:3011998ebd3e 112 }
rafacherin 0:3011998ebd3e 113 }
rafacherin 0:3011998ebd3e 114
rafacherin 0:3011998ebd3e 115 /*
rafacherin 0:3011998ebd3e 116 * ht1632_sendcmd
rafacherin 0:3011998ebd3e 117 * Send a command to the ht1632 chip.
rafacherin 0:3011998ebd3e 118 * A command consists of a 3-bit "CMD" ID, an 8bit command, and
rafacherin 0:3011998ebd3e 119 * one "don't care bit".
rafacherin 0:3011998ebd3e 120 * Select 1 0 0 c7 c6 c5 c4 c3 c2 c1 c0 xx Free
rafacherin 0:3011998ebd3e 121 */
rafacherin 0:3011998ebd3e 122 static void ht1632_sendcmd (byte command)
rafacherin 0:3011998ebd3e 123 {
rafacherin 0:3011998ebd3e 124 ht1632_chipselect(ht1632_cs); // Select chip
rafacherin 0:3011998ebd3e 125 ht1632_writebits(ID_CMD, 1<<2); // send 3 bits of id: COMMMAND
rafacherin 0:3011998ebd3e 126 ht1632_writebits(command, 1<<7); // send the actual command
rafacherin 0:3011998ebd3e 127 ht1632_writebits(0, 1); /* one extra dont-care bit in commands. */
rafacherin 0:3011998ebd3e 128 ht1632_chipfree(ht1632_cs); //done
rafacherin 0:3011998ebd3e 129 }
rafacherin 0:3011998ebd3e 130
rafacherin 0:3011998ebd3e 131 unsigned char Cal_RAM_Add (unsigned position)
rafacherin 0:3011998ebd3e 132 /* The parameter &#65533;position&#65533; is pointing of which column will be sent data to.
rafacherin 0:3011998ebd3e 133 The range of columns is 0~47. There are 24 columns on the upper three 0808 dot matrix boards, and their number is from 0 to 23 from left to right.
rafacherin 0:3011998ebd3e 134 There are 24 columns on the lower three 0808 dot matrix boards, and their number is from 24 to 47 from left to right. */
rafacherin 0:3011998ebd3e 135 {
rafacherin 0:3011998ebd3e 136 unsigned char add;
rafacherin 0:3011998ebd3e 137 if (position>23)
rafacherin 0:3011998ebd3e 138 {
rafacherin 0:3011998ebd3e 139 add=position-24;
rafacherin 0:3011998ebd3e 140 add=((add&0xf8)+(7-(add&0x07)))*4+2;
rafacherin 0:3011998ebd3e 141 }
rafacherin 0:3011998ebd3e 142 else
rafacherin 0:3011998ebd3e 143 {
rafacherin 0:3011998ebd3e 144 add=position;
rafacherin 0:3011998ebd3e 145 add=((add&0xf8)+(7-(add&0x07)))*4;
rafacherin 0:3011998ebd3e 146 }
rafacherin 0:3011998ebd3e 147 return(add);
rafacherin 0:3011998ebd3e 148 }
rafacherin 0:3011998ebd3e 149
rafacherin 0:3011998ebd3e 150 /*
rafacherin 0:3011998ebd3e 151 * ht1632_clear
rafacherin 0:3011998ebd3e 152 * clear the display, and the shadow memory, and the snapshot
rafacherin 0:3011998ebd3e 153 * memory. This uses the "write multiple words" capability of
rafacherin 0:3011998ebd3e 154 * the chipset by writing all 96 words of memory without raising
rafacherin 0:3011998ebd3e 155 * the chipselect signal.
rafacherin 0:3011998ebd3e 156 */
rafacherin 0:3011998ebd3e 157 void ht1632_clear()
rafacherin 0:3011998ebd3e 158 {
rafacherin 0:3011998ebd3e 159 char i;
rafacherin 0:3011998ebd3e 160
rafacherin 0:3011998ebd3e 161 ht1632_chipselect(ht1632_cs); // Select chip
rafacherin 0:3011998ebd3e 162 ht1632_writebits(ID_WR, 1<<2); // send ID: WRITE to RAM
rafacherin 0:3011998ebd3e 163 ht1632_writebits(0, 1<<6); // Send address
rafacherin 0:3011998ebd3e 164 for (i = 0; i < 96/2; i++) // Clear entire display
rafacherin 0:3011998ebd3e 165 ht1632_writebits(0, 1<<7); // send 8 bits of data
rafacherin 0:3011998ebd3e 166 ht1632_chipfree(ht1632_cs); // done
rafacherin 0:3011998ebd3e 167 for (i=0; i < 96; i++)
rafacherin 0:3011998ebd3e 168 ht1632_shadowram[i] = 0;
rafacherin 0:3011998ebd3e 169 }
rafacherin 0:3011998ebd3e 170
rafacherin 0:3011998ebd3e 171 /*
rafacherin 0:3011998ebd3e 172 * ht1632_senddata
rafacherin 0:3011998ebd3e 173 * send a nibble (4 bits) of data to a particular memory location of the
rafacherin 0:3011998ebd3e 174 * ht1632. The command has 3 bit ID, 7 bits of address, and 4 bits of data.
rafacherin 0:3011998ebd3e 175 * Select 1 0 1 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 D3 Free
rafacherin 0:3011998ebd3e 176 * Note that the address is sent MSB first, while the data is sent LSB first!
rafacherin 0:3011998ebd3e 177 * This means that somewhere a bit reversal will have to be done to get
rafacherin 0:3011998ebd3e 178 * zero-based addressing of words and dots within words.
rafacherin 0:3011998ebd3e 179 */
rafacherin 0:3011998ebd3e 180 static void ht1632_senddata (byte address, byte data)
rafacherin 0:3011998ebd3e 181 {
rafacherin 0:3011998ebd3e 182 ht1632_chipselect(ht1632_cs); // Select chip
rafacherin 0:3011998ebd3e 183 ht1632_writebits(ID_WR, 1<<2); // send ID: WRITE to RAM
rafacherin 0:3011998ebd3e 184 ht1632_writebits(address, 1<<6); // Send address
rafacherin 0:3011998ebd3e 185 ht1632_writebits(data, 1<<3); // send 4 bits of data
rafacherin 0:3011998ebd3e 186 ht1632_chipfree(ht1632_cs); // done
rafacherin 0:3011998ebd3e 187 }
rafacherin 0:3011998ebd3e 188
rafacherin 0:3011998ebd3e 189 void ht1632_setup()
rafacherin 0:3011998ebd3e 190 {
rafacherin 0:3011998ebd3e 191 ht1632_cs = HIGH; // unselect (active low)
rafacherin 0:3011998ebd3e 192 ht1632_sendcmd(CMD_SYSDIS); // Disable system
rafacherin 0:3011998ebd3e 193
rafacherin 0:3011998ebd3e 194 ht1632_sendcmd(CMD_COMS11); // 16*32, PMOS drivers
rafacherin 0:3011998ebd3e 195
rafacherin 0:3011998ebd3e 196 ht1632_sendcmd(CMD_MSTMD); // Master Mode
rafacherin 0:3011998ebd3e 197 ht1632_sendcmd(CMD_SYSON); // System on
rafacherin 0:3011998ebd3e 198 ht1632_sendcmd(CMD_LEDON); // LEDs on
rafacherin 0:3011998ebd3e 199
rafacherin 0:3011998ebd3e 200 for (byte i=0; i<96; i++)
rafacherin 0:3011998ebd3e 201 ht1632_senddata(i, 0); // clear the display!
rafacherin 0:3011998ebd3e 202
rafacherin 0:3011998ebd3e 203 wait(0.1); // ?
rafacherin 0:3011998ebd3e 204 }
rafacherin 0:3011998ebd3e 205
rafacherin 0:3011998ebd3e 206 /*
rafacherin 0:3011998ebd3e 207 * Copy a character glyph from the myfont data structure to
rafacherin 0:3011998ebd3e 208 * display memory, with its upper left at the given coordinate
rafacherin 0:3011998ebd3e 209 * This is unoptimized and simply uses plot() to draw each dot.
rafacherin 0:3011998ebd3e 210 */
rafacherin 0:3011998ebd3e 211 void ht1632_putchar(int x, int y, int largo, char c)
rafacherin 0:3011998ebd3e 212 {
rafacherin 0:3011998ebd3e 213 // fonts defined for ascii 32 and beyond (index 0 in font array is ascii 32);
rafacherin 0:3011998ebd3e 214 byte charIndex;
rafacherin 0:3011998ebd3e 215 int cord_x;
rafacherin 0:3011998ebd3e 216
rafacherin 0:3011998ebd3e 217 // if (x<0 || x>)
rafacherin 0:3011998ebd3e 218 // return;
rafacherin 0:3011998ebd3e 219
rafacherin 0:3011998ebd3e 220 // replace undisplayable characters with blank;
rafacherin 0:3011998ebd3e 221 if (c < 32 || c > 127)
rafacherin 0:3011998ebd3e 222 {
rafacherin 0:3011998ebd3e 223 charIndex = 0;
rafacherin 0:3011998ebd3e 224 }
rafacherin 0:3011998ebd3e 225 else
rafacherin 0:3011998ebd3e 226 {
rafacherin 0:3011998ebd3e 227 charIndex = c - 32;
rafacherin 0:3011998ebd3e 228 }
rafacherin 0:3011998ebd3e 229
rafacherin 0:3011998ebd3e 230 // move character definition, pixel by pixel, onto the display;
rafacherin 0:3011998ebd3e 231 // fonts are defined as one byte per row;
rafacherin 0:3011998ebd3e 232 for (byte row=0; row<8; row++)
rafacherin 0:3011998ebd3e 233 {
rafacherin 0:3011998ebd3e 234 byte rowDots = myfont[charIndex][row];
rafacherin 0:3011998ebd3e 235 for (byte col=0; col<largo; col++)
rafacherin 0:3011998ebd3e 236 {
rafacherin 0:3011998ebd3e 237 if (x-col>0 && x-col<30)
rafacherin 0:3011998ebd3e 238 {
rafacherin 0:3011998ebd3e 239 cord_x=pos[x-col];
rafacherin 0:3011998ebd3e 240 if (rowDots & (1<<(largo-1-col)))//comprueba si tiene que pintar un 1 o un 0
rafacherin 0:3011998ebd3e 241 plot (cord_x, y+row,1);
rafacherin 0:3011998ebd3e 242 else
rafacherin 0:3011998ebd3e 243 plot(cord_x, y+row, 0);
rafacherin 0:3011998ebd3e 244 }
rafacherin 0:3011998ebd3e 245 }
rafacherin 0:3011998ebd3e 246 }
rafacherin 0:3011998ebd3e 247 }
rafacherin 0:3011998ebd3e 248
rafacherin 0:3011998ebd3e 249 /*
rafacherin 0:3011998ebd3e 250 * plot a point on the display, with the upper left hand corner
rafacherin 0:3011998ebd3e 251 * being (0,0), and the lower right hand corner being (23, 15).
rafacherin 0:3011998ebd3e 252 * Note that Y increases going "downward" in contrast with most
rafacherin 0:3011998ebd3e 253 * mathematical coordiate systems, but in common with many displays
rafacherin 0:3011998ebd3e 254 * No error checking; bad things may happen if arguments are out of
rafacherin 0:3011998ebd3e 255 * bounds! (The ASSERTS compile to nothing by default
rafacherin 0:3011998ebd3e 256 */
rafacherin 0:3011998ebd3e 257 void ht1632_plot (int x, int y, char val)
rafacherin 0:3011998ebd3e 258 {
rafacherin 0:3011998ebd3e 259 if (x<0 || x>X_MAX || y<0 || y>Y_MAX)
rafacherin 0:3011998ebd3e 260 return;
rafacherin 0:3011998ebd3e 261
rafacherin 0:3011998ebd3e 262 char addr, bitval;
rafacherin 0:3011998ebd3e 263
rafacherin 0:3011998ebd3e 264 /*
rafacherin 0:3011998ebd3e 265 * The 4 bits in a single memory word go DOWN, with the LSB
rafacherin 0:3011998ebd3e 266 * (first transmitted) bit being on top. However, writebits()
rafacherin 0:3011998ebd3e 267 * sends the MSB first, so we have to do a sort of bit-reversal
rafacherin 0:3011998ebd3e 268 * somewhere. Here, this is done by shifting the single bit in
rafacherin 0:3011998ebd3e 269 * the opposite direction from what you might expect.
rafacherin 0:3011998ebd3e 270 */
rafacherin 0:3011998ebd3e 271 bitval = 8>>(y&3); // compute which bit will need set
rafacherin 0:3011998ebd3e 272
rafacherin 0:3011998ebd3e 273 addr = (x<<2) + (y>>2); // compute which memory word this is in
rafacherin 0:3011998ebd3e 274
rafacherin 0:3011998ebd3e 275 if (val) { // Modify the shadow memory
rafacherin 0:3011998ebd3e 276 ht1632_shadowram[addr] |= bitval;
rafacherin 0:3011998ebd3e 277 }
rafacherin 0:3011998ebd3e 278 else {
rafacherin 0:3011998ebd3e 279 ht1632_shadowram[addr] &= ~bitval;
rafacherin 0:3011998ebd3e 280 }
rafacherin 0:3011998ebd3e 281 // Now copy the new memory value to the display
rafacherin 0:3011998ebd3e 282 ht1632_senddata(addr, ht1632_shadowram[addr]);
rafacherin 0:3011998ebd3e 283 }
rafacherin 0:3011998ebd3e 284
rafacherin 0:3011998ebd3e 285 /*
rafacherin 0:3011998ebd3e 286 * This works equally well for both 16x24 and 8x32 matrices.
rafacherin 0:3011998ebd3e 287 */
rafacherin 0:3011998ebd3e 288 void displayScrollingLine()
rafacherin 0:3011998ebd3e 289 {
rafacherin 0:3011998ebd3e 290 /* ht1632_putchar(7, 0, 6, 'c');
rafacherin 0:3011998ebd3e 291 crtPos++;
rafacherin 0:3011998ebd3e 292 ht1632_putchar(1, 0,6, 'i');
rafacherin 0:3011998ebd3e 293 crtPos++;
rafacherin 0:3011998ebd3e 294 ht1632_putchar(10, 0, 6, 'l');
rafacherin 0:3011998ebd3e 295 crtPos++;
rafacherin 0:3011998ebd3e 296 ht1632_putchar(7, 8, 6, 'a');
rafacherin 0:3011998ebd3e 297 crtPos++;
rafacherin 0:3011998ebd3e 298 ht1632_putchar(15, 8, 6, 'b');
rafacherin 0:3011998ebd3e 299 crtPos++;
rafacherin 0:3011998ebd3e 300 ht1632_putchar(23, 8,8 , 127);
rafacherin 0:3011998ebd3e 301 // shift the whole screen 6 times, one column at a time;
rafacherin 0:3011998ebd3e 302 */
rafacherin 0:3011998ebd3e 303 for (int x=0; x < 6; x++)
rafacherin 0:3011998ebd3e 304 {
rafacherin 0:3011998ebd3e 305 ht1632_putchar(x+30, 0,6, msg[crtPos]);//para mostrar el efecto de transicion cuando sale
rafacherin 0:3011998ebd3e 306 ht1632_putchar(x+24, 0,6, ((crtPos+1 < strlen(msg)) ? msg[crtPos+1] : ' '));
rafacherin 0:3011998ebd3e 307 ht1632_putchar(x+18, 0,6, ((crtPos+2 < strlen(msg)) ? msg[crtPos+2] : ' '));
rafacherin 0:3011998ebd3e 308 ht1632_putchar(x+12, 0,6, ((crtPos+3 < strlen(msg)) ? msg[crtPos+3] : ' '));
rafacherin 0:3011998ebd3e 309 ht1632_putchar(x+6, 0,6, ((crtPos+4 < strlen(msg)) ? msg[crtPos+4] : ' '));
rafacherin 0:3011998ebd3e 310 ht1632_putchar(x, 0,6, ((crtPos+5 < strlen(msg)) ? msg[crtPos+5] : ' '));
rafacherin 0:3011998ebd3e 311 ht1632_putchar(x-6, 0,6, ((crtPos+6 < strlen(msg)) ? msg[crtPos+6] : ' ')); //para mostrar el efecto de transicion cunado entra
rafacherin 0:3011998ebd3e 312 wait(0.15);
rafacherin 0:3011998ebd3e 313 }
rafacherin 0:3011998ebd3e 314
rafacherin 0:3011998ebd3e 315 ht1632_putchar(15, 8,8 , 127);
rafacherin 0:3011998ebd3e 316
rafacherin 0:3011998ebd3e 317 crtPos++;
rafacherin 0:3011998ebd3e 318 if (crtPos >= strlen(msg))
rafacherin 0:3011998ebd3e 319 {
rafacherin 0:3011998ebd3e 320 crtPos = 0;
rafacherin 0:3011998ebd3e 321 }
rafacherin 0:3011998ebd3e 322 }
rafacherin 0:3011998ebd3e 323
rafacherin 0:3011998ebd3e 324 /***********************************************************************
rafacherin 0:3011998ebd3e 325 * traditional Arduino sketch functions: setup and loop.
rafacherin 0:3011998ebd3e 326 ***********************************************************************/
rafacherin 0:3011998ebd3e 327
rafacherin 0:3011998ebd3e 328 void setup ()
rafacherin 0:3011998ebd3e 329 {
rafacherin 0:3011998ebd3e 330 ht1632_setup();
rafacherin 0:3011998ebd3e 331 cls();
rafacherin 0:3011998ebd3e 332 }
rafacherin 0:3011998ebd3e 333
rafacherin 0:3011998ebd3e 334 void loop ()
rafacherin 0:3011998ebd3e 335 {
rafacherin 0:3011998ebd3e 336 // display line;
rafacherin 0:3011998ebd3e 337 displayScrollingLine();
rafacherin 0:3011998ebd3e 338 }