Manejo de pantallas de texto con varias interfaces de comunicación

Dependencies:   mbed TextLCD

Revision:
5:2e4e5085d597
Parent:
4:a3e4bb2053cb
Child:
6:8b78e3cddd78
--- a/main.cpp	Sun Mar 29 13:12:07 2015 +0000
+++ b/main.cpp	Wed Feb 12 21:20:37 2020 +0000
@@ -2,74 +2,139 @@
 
 #include "mbed.h"
 #include "TextLCD.h"
- 
+
 // Host PC Communication channels
-Serial pc(USBTX, USBRX); // tx, rx
- 
+Serial pc(PA_2,PA_3); // tx, rx
+
 // I2C Communication
-I2C i2c_lcd(p9,p10); // SDA, SCL
+I2C i2c_lcd(PB_9, PB_8); // SDA, SCL
 //I2C i2c_lcd(p28,p27); // SDA, SCL
- 
+
 // SPI Communication
-SPI spi_lcd(p5, NC, p7); // MOSI, MISO, SCLK
+//SPI spi_lcd(p5, NC, p7); // MOSI, MISO, SCLK
 
-// LCD instantiation 
+// LCD instantiation
 //TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD20x2);        // 4bit bus: rs, e, d4-d7
-TextLCD_I2C lcd(&i2c_lcd, 0x40, TextLCD::LCD20x4);                  // I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type
+TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD20x4);                  // I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type
 //TextLCD_I2C lcd(&i2c_lcd, 0x42, TextLCD::LCD16x2, TextLCD::WS0010); // I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type, Ctrl Type
 //TextLCD_I2C lcd(&spi_lcd, p8, TextLCD::LCD24x4D);                   // I2C exp: SPI bus, CS pin, LCD Type
 //TextLCD_SPI_N lcd(&spi_lcd, p8, p9, TextLCD::LCD16x2, NC, TextLCD::ST7032_3V3); // SPI native: SPI bus, CS pin, RS pin, LCDType=LCD16x2, BL=NC, LCDTCtrl=ST7032
 //TextLCD_I2C_N lcd(&i2c_lcd, ST7032_SA, TextLCD::LCD16x2, NC, TextLCD::ST7032_3V3); // I2C native: I2C bus, slaveaddress, LCDType=LCD16x2, BL=NC, LCDTCtrl=ST7032 =Ok
 //TextLCD_I2C_N lcd(&i2c_lcd, SSD1803_SA1, TextLCD::LCD20x4D, NC, TextLCD::SSD1803_3V3); // I2C native: I2C bus, slaveaddress, LCDType=LCD20x4D, BL=NC, LCDTCtrl=SSD1803 =Ok
- 
-int main() {   
-  Timer t;
+
+int main()
+{
+    Timer t;
+
+    pc.printf("TextLCD Enhanced Test. Columns=%d, Rows=%d\n\r", lcd.columns(), lcd.rows());
+
+    for (int row=0; row<lcd.rows(); row++) {
+        int col=0;
 
-  pc.printf("TextLCD Enhanced Test. Columns=%d, Rows=%d\n\r", lcd.columns(), lcd.rows());
-    
-  for (int row=0; row<lcd.rows(); row++) {
-    int col=0;
-      
-    pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));      
+        pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));
 //    lcd.putc('-');
-    lcd.putc('0' + row);      
-      
-    for (col=1; col<lcd.columns()-1; col++) {    
-      lcd.putc('*');
+        lcd.putc('0' + row);
+
+        for (col=1; col<lcd.columns()-1; col++) {
+            lcd.putc('*');
+        }
+
+        pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));
+        lcd.putc('+');
     }
- 
-    pc.printf("MemAddr(Col=%d, Row=%d)=0x%02X\n\r", col, row, lcd.getAddress(col, row));      
-    lcd.putc('+');       
-  }    
+    wait(1);
+// Fill screen again and time it
+    t.start();
 
-// Fill screen again and time it
-  t.start();
+    for (int row=0; row<lcd.rows(); row++) {
+        int col=0;
+
+        lcd.putc('0' + row);
 
-  for (int row=0; row<lcd.rows(); row++) {
-    int col=0;
-      
-    lcd.putc('0' + row);      
-      
-    for (col=1; col<lcd.columns()-1; col++) {    
-      lcd.putc('*');
+        for (col=1; col<lcd.columns()-1; col++) {
+            lcd.putc('*');
+        }
+
+        lcd.putc('+');
     }
- 
-    lcd.putc('+');       
-  }    
-  t.stop();    
-  pc.printf("All my hard work took %f sec\r\n", t.read());          
+    t.stop();
+    pc.printf("All my hard work took %f sec\r\n", t.read());
+    wait(1);
+
 
 // Show cursor as blinking character
-   lcd.setCursor(TextLCD::CurOff_BlkOn);
- 
+    lcd.setCursor(TextLCD::CurOff_BlkOn);
+
 // Set and show user defined characters. A maximum of 8 UDCs are supported by the HD44780.
-// They are defined by a 5x7 bitpattern. 
-  lcd.setUDC(0, (char *) udc_0);  // Show |>
-  lcd.putc(0);    
-  lcd.setUDC(1, (char *) udc_1);  // Show <|
-  lcd.putc(1);    
-    
-  pc.printf("Bye now\r\n");          
+// They are defined by a 5x7 bitpattern.
+    lcd.setUDC(0, (char *) udc_0);  // Show |>
+    lcd.putc(0);
+    lcd.setUDC(1, (char *) udc_1);  // Show <|
+    lcd.putc(1);
+
+    pc.printf("Bye now\r\n");
+
+    wait(1);
+
+    // Clear the screen and locate to 0,0
+    lcd.cls();
+
+    // LCD Backlight control
+    lcd.setBacklight(TextLCD::LightOn);
+
+    // LCD Orientation control, supported for some Controllers
+    //lcd.setOrient(TextLCD::Bottom);
+
+    // LCD BigFont control, supported for some Controllers
+    //lcd.LCDBigFont(TextLCD::TopBottomLine);
+
+    // Locate cursor to a screen column and row
+    int col = 0;
+    int row = 0;
+    lcd.locate(col,row);
+    wait(1);
+
+    // Write a character to the LCD "ARROW"
+    int c = 1;
+    for (int row=0; row<lcd.rows(); row++) {
+        lcd.putc(c);wait(0.1);
+
+        for (col=1; col<lcd.columns()-1; col++) {
+            lcd.putc(c);wait(0.1);
+        }
+    }
+    wait(2);
+
+    // Write a raw string to the LCD
+    const char* text = "Hola text";
+    lcd.cls();
+    lcd.locate(1,1);
+    lcd.printf(text);
+    wait(1);
+
+    // Write a raw string to the LCD *-> pointer*
+    const char* msg = "Hello printf";
+    int string_size = strlen (msg);
+    lcd.setCursor(TextLCD::CurOff_BlkOff);
+    lcd.locate(1,2);
+    lcd.printf("msg: %.*s", string_size, msg);
+    wait(1);
+
+
+
+    // Return the memoryaddress of screen column and row location
+    lcd.getAddress(col,row);
+    pc.printf("column %d\trow %d\r\n",col,row);
+    wait(1);
+
+
+
+    // Return the number of rows ans columns
+    pc.printf("column %d\trow %d\r\n",lcd.rows(),lcd.columns());
+    wait(1);
+
+
+
 }