Estructuras Union de C / Arduino

5 comentarios en “Estructuras Union de C / Arduino”

  1. Holaa holaaa
    Soy nuevo en esto de arduino
    y quiero hacer un robotsito que guarde informacion
    emmmm algo asi como si aprendiera nuevos movimientos.

    para hacer eso se puede utilizar unicamente el “union” o es con el “eeprom” o es una combinacion o nada de eso?

    por ejemplo: para mover un servomotor con un potenciometro a 90º y luego a 30º y que precionando un boton el servo repita los mismos movimientos.

    1. Hola,

      Se puede hacer pero no es facil, de hecho si eres nuevo con Arduino / C yo no iría tan rápido porque vas a tener errores por todos lados y te desanimaras.

      A modo de resumen tendrias que tener en cuenta:

      Tener una parte de código que sepa diferenciar cuando se van a memorizar nuevos movimientos o cuando se van a repetir los almacenados.
      Por ejemplo con tres botones que controlase el inicio y final de grabación y también otro para indicar que grabe ese movimiento y pase al siguiente a memorizar, luego con el potenciómetro tendrias que indicar los grados de movimiento.

      Todo eso hay que guardarlo, puedes hacerlo con estructuras dejando memoria para X movimientos e ir almacenándolos uno por uno.
      También podrías usar una memoria SD y grabar los movimientos en un fichero, un movimiento por linea y tantos movimientos como lineas haya en ese fichero… esto seria mas facil que usar la EEPROM y las estructuras, aunque en el fichero estarías guardando caracteres no números así que tendrias que hacer conversiones…

      También puedes guardar la información en la SD como datos, aunque entonces seria lo mismo que la EEPROM y tendrias que jugar con las estructuras…

      Como ves hay muchas cosas a tener en cuenta y las que me estaré dejando… ves probando todo poco a poco y cuando lo domines “solo” tendrás que juntarlo!

      Saludos!

  2. Estaba intentando recibir en el arduino un numero de 32b desde el servidor php. Para enviarlo desde php lo divido en 4 caracteres ascii usando el operador >>. Luego en arduino muevo esos 4 caracteres con el operador << para recuperar el numero de 32b.
    Si uso el operador bitwise me da un numero negativo que nada tiene que ver con lo que envio.
    Pero haciendo un "union" de long y char[4], si asigno los 4 caracteres a las 4 posiciones del array, luego el long del union es el número que he enviado desde php.

    1. Podrías haber usado Serial.parseInt() que te lee un número de 32 bits directamente del buffer.
      Si estas usando el objeto Client o parecido para leer los datos del servidor, este objeto hereda la misma clase que la de Serial, así que ambos tienen el método parseInt que heredan de Stream.

      Saludos.

Escriba aquí su comentario