Pages: [1]   Go Down
Author Topic: Capacidad (bits) necesaria para almacenar mediciones.  (Read 806 times)
0 Members and 1 Guest are viewing this topic.
CHILE
Offline Offline
Jr. Member
**
Karma: 1
Posts: 93
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos, tengo una duda que debe ser muy básica:

¿Cómo se cuanto espacio de memoria me ocuparia almacenar una línea de datos como esta?

" 13º Lunes 24 Marzo 12:33:21", quiero hacer un datalogger y quiero ver si me conviene una gran EEPROM o necesito de una microSD, dependiendo claro de la frecuencia con que almacene datos.

Saludos y Gracias.  smiley-roll-blue
Logged

CHILE
Offline Offline
Jr. Member
**
Karma: 1
Posts: 93
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mmm creo entender todo, es decir que debo tratar todo como numeros...mes (1 a 12), dia del mes (1 a 31), dia de la semana (1 a 7) y asi...para la temperatura eso si, debo darme un rango entre los -8º y 40º, por lo que suponiendo una resolución de 1º, necesitaría 48 estados, esto es 5 bits. Voy bien??

Ahora, esta manera que me dices, me serviría solo a mí que se como programe la palabra de X bits. ¿Podría también almacenar todo como caracteres??? De manera de que cualquier mortal pueda leer los datos almacenados?

Saludos y gracias por tu respuesta.
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esta cadena la podrias grabar en una eeprom
Code:
13º Lunes 24 Marzo 12:33:21

de esta manera
1 byte temperatura
2 byte Dia de la semana del 0-7
3 byte dia
4 byte mes del 0-12
5 byte hora
6 byte minuto
7 byte segundo

Saludos.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

CHILE
Offline Offline
Jr. Member
**
Karma: 1
Posts: 93
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Cuando lea los datos voy a tener una serie de cadenas de 0 y 1, como puedo hacer para traducirlas una vez que tenga por ejemplo 200 cadenas de datos, es decir 200 mediciones. ¿tendría que hacer un programa que las lea y me las muestre en caracteres ASCII?

Saludos!
Logged

0
Offline Offline
Newbie
*
Karma: 1
Posts: 48
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¿tendría que hacer un programa que las lea y me las muestre en caracteres ASCII?

Efectivamente. Lo mejor es que te hagas una librería para tratar las palabras y así guardarlas y leerlas a tu antojo.


1 byte temperatura
2 byte Dia de la semana del 0-7
3 byte dia
4 byte mes del 0-12
5 byte hora
6 byte minuto
7 byte segundo


Es más aconsejable trabajar a nivel de bits, ya que de esta manera se desperdicia muchísima memoria y no es que se tenga mucha eeprom. Por ejemplo ¿para que utilizar un byte para almacenar el día de la semana si con sólo 3 bits es posible obtener el mismo resultado?

Saludos chato_sat.
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
en C se pueden usar los campos de bits, que pueden servir para optimizar el uso de memoria. En este caso, se podría definir una estructura que engloba los datos mencionados
Code:
struct datos_byte
{
   int temperatura: 7;                 // 128 estados
   unsigned int      semana: 3;      //   7 estados
   unsigned int     dia_mes: 5;      //  31 estados
   unsigned int  nombre_mes: 4;   //  12 estados
   unsigned int        hora: 5;        //  24 estados
   unsigned int     minutos: 6;       //  60 estados
   unsigned int    segundos: 6 ;     //  60 estados
} datos;

Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
he hecho un programilla de empaquetado de datos (temperatura, semana, dia de mes, nombre de  mes,  hora, minuto, segundo)  utilizando campos de bits (ocupa 5 bytes). Se les da unos valores arbitrarios,  y se muestran  los valores  por puerto serie.
Code:

struct datos_byte
{
   int                temperatura: 7;      // 128 estados
   unsigned int         semana: 3;      //   7 estados
   unsigned int        dia_mes: 5;      //  31 estados
   unsigned int  nombre_mes: 4;      //  12 estados
   unsigned int              hora: 5;      //  24 estados
   unsigned int         minutos: 6;      //  60 estados
   unsigned int       segundos: 6 ;     //  60 estados
} datos;


void setup()
{
   Serial.begin(9600);
}

void loop()
{
  // dando valores arbitrarios
  datos.temperatura = 37;
  datos.semana = 1;
  datos.dia_mes = 2;
  datos.nombre_mes = 3;
  datos.hora = 4;
  datos.minutos = 5;
  datos.segundos = 6;
  
    
  Serial.print("\n-----------------------\n");
  Serial.print("sizeof(datos): ");
  Serial.print(sizeof(datos), DEC);
  Serial.print("\n-----------------------\n");
  
  Serial.print("temperatura: ");
  Serial.println(datos.temperatura, DEC);
  
  Serial.print("datos.semana: ");
  Serial.println(datos.semana, DEC);

  Serial.print("datos.dia_mes: ");
  Serial.println(datos.dia_mes, DEC);

  Serial.print("datos.nombre_mes: ");
  Serial.println(datos.nombre_mes, DEC);

  Serial.print("datos.hora: ");
  Serial.println(datos.hora, DEC);

  Serial.print("datos.minutos: ");
  Serial.println(datos.minutos, DEC);

  Serial.print("datos.segundos: ");
  Serial.println(datos.segundos, DEC);

  delay(3000);
}



Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Es más aconsejable trabajar a nivel de bits, ya que de esta manera se desperdicia muchísima memoria y no es que se tenga mucha eeprom. Por ejemplo ¿para que utilizar un byte para almacenar el día de la semana si con sólo 3 bits es posible obtener el mismo resultado?

Tambien tienes razon, usando estos bits podria ahorrar el uso de memoria. No?
Dia 0-31  5 bits
Mes 0-12 4 bits
hora 0-23 5 bits
minuto 0-60 6 bits

Salu2
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Pages: [1]   Go Up
Jump to: