Todo lo que quiero hacer es enviar texto a mi Arduino y mostrarlo en una pantalla LCD a través de Serial

0

He estado trabajando en esto durante horas y no tengo idea de dónde está el problema ...

Así que tengo el siguiente código ... que cuando escribo una letra en el Monitor Serial obtengo el código binario para esa letra en mi pantalla LCD ...

#include <Adafruit_CharacterOLED.h>
Adafruit_CharacterOLED lcd(6, 7, 8, 9, 10, 11, 12);
void setup() 
{
    // Print a message to the LCD.
  Serial.begin(9600);
  lcd.begin(16, 2);
}

void loop() {
  char TestData;
  if(Serial.available() )
  {
    TestData = Serial.read();
    lcd.setCursor(0, 0);
    lcd.print (TestData, BIN);  // echo the incoming character to the LCD
  }
}

El problema que tengo es cómo convertir el texto de BIN o HEX o de algún otro código ASCII a TEXTO literal ...

He intentado dejar el lcd.print simplemente como lcdprint (TestData) porque entonces debería devolver solo el VAL de la entrada, pero no lo hace, me da unos cuantos símbolos extraños y luego se apaga ... Me gusta algo está mal

También necesito descubrir Char Arrays pero llegaré a eso una vez que averigüe cómo mostrar una carta de monstruos

EDITAR: enlace Este es un video de la comparación de lcd.print (TestData, BIN); vs lcd.print (TestData);

Según el último comentario, el seguimiento funciona como se esperaba:

#include <Adafruit_CharacterOLED.h>
Adafruit_CharacterOLED lcd(6, 7, 8, 9, 10, 11, 12);
void setup() 
{
    // Print a message to the LCD.
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  char TestData='X';
  lcd.print(TestData);
}

void loop() {
  char TestData;
  if(Serial.available() )
  {
    TestData = Serial.read();
    lcd.setCursor(8, 0);
    lcd.print (TestData, BIN);  // echo the incoming character to the LCD
  }
  lcd.setCursor(0, 1);
  int charcode = 65;
  lcd.print(charcode);
}
    

1 respuesta

1

Para resumir lo que se hizo para resolver parcialmente el problema:

  1. Verifique que lcd.print("Hello, World"); funcionó bien en setup()
  2. Se intentó hacer print(char); en la configuración: funcionó bien. La conclusión de esto fue que algo iba mal en el loop()
  3. Ponga delay(1000); en el bucle (): ahora los caracteres se mostraron correctamente en la pantalla OLED.

Esto sugiere que Serial.available() siempre devolvió un valor distinto de cero por alguna razón, por lo que es algo que aún debe ser examinado. Lo más probable es que los caracteres provenientes del puerto serie fueran espacios , ya que la mayoría de las veces no se veía nada en la pantalla OLED.

    
respondido por el angelatlarge

Lea otras preguntas en las etiquetas