Go Down

Topic: Frases aleatorias [SOLUCIONADO] (Read 313 times) previous topic - next topic

Metaconta

Jul 12, 2020, 04:16 pm Last Edit: Jul 23, 2020, 10:34 am by Metaconta
Hola:

A veces en un LDC 20x4 quiero como una especie de fondo pantalla. En este caso hice un ejemplo en Visual C#. Se los dejo para que lo prueben y sepa que es lo que quiero realmente.

Se trata de saber si Arduino es capaz de hacer que cada cierto tiempo, por ejemplo, en cada cinco segundos cambie de frase automáticamente que tengo almacenado en un array o en variables.

¿Es posible hacerlo?

Saludos.

surbyte

Esto puede servirte

Code: [Select]
#include <avr/pgmspace.h>
const char string_0[] PROGMEM = "String 0"; // "String 0" etc are strings to store - change to suit.
const char string_1[] PROGMEM = "String 1";
const char string_2[] PROGMEM = "String 2";
const char string_3[] PROGMEM = "String 3";
const char string_4[] PROGMEM = "String 4";
const char string_5[] PROGMEM = "String 5";


// Then set up a table to refer to your strings.

const char *const string_table[] PROGMEM = {string_0, string_1, string_2, string_3, string_4, string_5};

char buffer[30];  // make sure this is large enough for the largest string it must hold

void setup() {
  Serial.begin(9600);
  while (!Serial);  // wait for serial port to connect. Needed for native USB
  Serial.println("OK");
}


void loop() {
  /* Using the string table in program memory requires the use of special functions to retrieve the data.
     The strcpy_P function copies a string from program space to a string in RAM ("buffer").
     Make sure your receiving string in RAM  is large enough to hold whatever
     you are retrieving from program space. */


  for (int i = 0; i < 6; i++) {
    strcpy_P(buffer, (char *)pgm_read_word(&(string_table[i])));  // Necessary casts and dereferencing, just copy.
    Serial.println(buffer);
    delay(500);
  }
}



Metaconta

Muchas gracias.

Al final es posible.

surbyte

Y porque no lo va a ser?
Te lo respondí considerando que quieres poner muchas frases porque si usaras RAM te vas a quedar limitado al Arduino que uses.

Metaconta

Hola:

Para estas cosas antes lo ponía así el PROGMEN.;

Code: [Select]
const PROGMEM char string_1[] = "String 1";

Así a primeras me doy cuenta. Total, es el mismo perro pero de distinto collar.

Para estas cosas mejor en la memoria Flash o memoria programa, nada de RAM, ni EEPROM interna o externa.

Saludos.

Go Up