viernes, 29 de abril de 2016

ANDROID-Alarma de cuenta atrás


Android

ANDROID

Alarma de cuenta atrás
 

En esta practicas realizamos  una alarma de cuenta atrás.
Para esta alarma empleamos la clase de CountDownTimer .
Ver http://developer.android.com/intl/es/reference/android/os/CountDownTimer.html .

Lo primero es dar nombre a nuestra aplicación.


Seleccionamos un icono bajado de internet.


Elegimos una Activity vacía, sin menú.


Colocamos todos los elementos , botones, textos, etc...
Aún no tengo pillado el truco para colocar los elementos en el lugar que yo quiero, por lo que tardo tiempo en colocarlos a mi gusto.
Para ampliar la imagen en el navegador, dar el botón derecho, y en menú dar ver imagen.


Ejecutando el programa en un dispositivo físico.
La alarma es como máximo de 60 minutos.



Para este programa empleamos la clase de CountDownTimer .

Creamos el tipo ContadorAbajo
private CountDownTimer ContadorAbajo;
Empezamos la cuenta atrás pulsando el botón START . Colocamos el tiempo a descontar (timer) en milisegundos, y descontamos 1 milisegundo cada vez.  Luego lo activamos con ContadorAbajo.start();
ContadorAbajo = new MyCountDownTimer(timer, 1);
ContadorAbajo.start();
Si queremos parar la cuenta atrás pulsamos el botón STOP.
ContadorAbajo.start();
Cada milisegundo se llama a la clase CountDownTimer
//Cuenta atras
    public class MyCountDownTimer extends CountDownTimer
     {
        public MyCountDownTimer(long startTime, long interval)
                {
                       super(startTime, interval);
                }         
              @Override
        public void onFinish() {
                  Mtext1.setText("Cuenta terminada!");
                  toneG.startTone(ToneGenerator.TONE_DTMF_S, 1000);
              }
              @Override
        public void onTick(long millisUntilFinished)
              {
                 long i;
                 long min,seg;
                  Mtext1.setText( " " + millisUntilFinished/100 );
                  i=millisUntilFinished ;
                  i/=1000;
                  min=i/60;
                  seg= i%60;
                  Mcuenta.setText(min + " min. "+ seg +" seg.");

              }
     }
Cuando termina la cuenta y el contador está a cero se produce un sonido de 1000mS creado al inicio con:
toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100);
toneG.startTone(ToneGenerator.TONE_DTMF_S, 1000);


PROGRAMA


Recordar:

Debemos hacer dos ajustes:
El primero en la pantalla de activity_main cambiar para que utilice la API 15 Android 4.0.3  .
Por defecto viene Android 4.4W,  este es para sistemas wearable (relojes,...). Estos modelos no permiten EditText por lo que nos dará error.


Segundo - Si giramos el dispositivo quedan ocultos algunos botones, quedando sin funcionalidad el programa.
Para arregla esto debemos modificar el fichero "AndroidManifest.xml" y añadir:
android:screenOrientation="portrait"
en la línea:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />


Saludos
Juan Galaz


Bibliografía:

http://developer.android.com/intl/es/reference/android/os/CountDownTimer.html
http://developer.android.com/intl/es/reference/android/media/ToneGenerator.html
http://androidbite.blogspot.com.es/2012/11/android-count-down-timer-example.html

miércoles, 20 de abril de 2016

ANDROID - Calculadora de enteros


Android

ANDROID

Calculadora de enteros
 

En esta practicas realizamos  una simple calculadora de enteros.
Se emplean EditText, TextView, Button , además de respuestas a la pulsación de los botones.
Para ampliar en el navegador con el botón derecho dar ver imagen.




Como vemos nos aparecen 22 warnings ,
[I18N] Hardcoded string "-", should use @string resource   
Esto es debido a que ponemos los nombres directamente, y esto no es recomendable a la hora de hacer una aplicación ya que al momento de que nuestra aplicación se quiera volver multi idioma en un futuro, nos sea mas fácil traducirla, ahí entra a jugar el archivo o fichero "strings.xml", este archivo es muy útil en situaciones de querer cambiar un texto que aparece en muchos sitios.


Si queremos eliminar estos warnings debemos editar el fichero "strings.xml" y añadir cada cadena que queramos utilizar.


Vista de la calculadora en el emulador.


Captura de la calculadora en el dispositivo físico.

Como vemos  si giramos el dispositivo queda totalmente inutilizable la calculadora.
Hay que tener muy en cuenta esto problemas cuando se rota la pantalla.


Para arregla esto debemos modificar el fichero "AndroidManifest.xml" y añadir:
android:screenOrientation="portrait"
en la línea:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />

También podemos observar que se crea un menú automáticamente llamado Settings el cual se puede cambiar de nombre  cambiando el fichero "strings.xml", en esta practica tampoco lo modificamos.

Mi intención era incluir la carpeta de todo el proyecto comprimida, pero ocupa 2,9 Megas.
Mi decisión es solo incluir un fichero comprimido con 3 archivos:
activity_calculadora_intmain.xml
CalculadoraINTMainActivity.java
CalculadoraINT.apk


PROGRAMA



Saludos
Juan Galaz


Bibliografía:
https://danielme.com/2012/09/17/rotaciones-de-pantalla-en-android/
http://stackoverflow.com/questions/582185/android-disable-landscape-mode
http://www.blogdemigueldiaz.com/2012/08/programacion-en-android-para-torpes-iv-asignar-eventos-a-elementos/
http://www.javaya.com.ar/androidya/
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=536
http://www.nachocabanes.com/android/
http://downloads.puresoftware.org/files/android/
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=536
http://www.yofriki.com/2013/03/instalar-eclipse-y-sdk-android-en.html
http://www.ubuntu-es.org/node/181017#.VxD7yxcshaU




lunes, 18 de abril de 2016

ANDROID Conversor centímetro<-> pulgadas


Android

ANDROID

Conversor

centímetro<-> pulgadas 


En esta practicas realizamos un conversor de centímetros(cm) a pulgadas (inch) y a la inversa.
Se emplean EditText, TextView, Button , además de respuestas a la pulsación de los botones.

Creamos un nuevo proyecto.



Le llamamos ConversorUnidades y seleccionamos las opciones como figuran en la imagen.


Aquí cambiamos el icono de la aplicación.


Para el tipo de actividad usamos Blank Activity.



Debemos hacer dos ajustes:
El primero en la pantalla de activity_main cambiar para que utilice la API 15 Android 4.0.3  .
Por defecto viene Android 4.4W,  este es para sistemas wearable (relojes,...). Estos modelos no permiten EditText por lo que nos dará error.


Y en menú Proyecto->Propiedades  seleccionar Android 4.0.3 .
Esto es debido a que por defecto viene otra opción, y cuando lanzamos la aplicacion al emulador nos señala que no es compatible con nuestro sistema, aunque funcione.



Empezamos a colocar todos los elementos.
Para ampliar en el navegador con el botón derecho dar ver imagen.
Como podemos ver el sistema de colocación es relativo a la posición de otro elemento, por lo que debemos estudiar como situar cada elemento, conviene hacer un croquis antes de empezar para no tener problemas posteriores.


Tenemos que dar un nombre ID para cada elemento, yo coloco el prefijo A para los elementos de activity_main.xml (Aentrada).
Indicamos el texto que aparecerá por defecto (2.54).
Para Aentrada indicamos alineación a la derecha, Gravity  right .
Para el caso de los botones indicamos la función a realizar, en el caso de Boton Cm->inch  indicamos FunCm.


Si examinamos  el fichero activity_main.xml podemos ver todas las propiedades de cada elemento.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="conversorunidades.seta43.MainActivity" >

    <EditText
        android:id="@+id/Aentrada"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:gravity="center_vertical|right"
        android:inputType="numberDecimal"
        android:text="2.54" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/Atipo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/Aentrada"
        android:layout_alignBottom="@+id/Aentrada"
        android:layout_marginLeft="14dp"
        android:layout_toRightOf="@+id/Aentrada"
        android:text="cm" />

    <Button
        android:id="@+id/Abotoncm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/Aentrada"
        android:layout_marginTop="20dp"
        android:onClick="FunCm"
        android:text="cm->inch" />

    <Button
        android:id="@+id/Abotoninch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/Abotoncm"
        android:layout_alignBottom="@+id/Abotoncm"
        android:layout_toLeftOf="@+id/Atipo"
        android:onClick="FunInch"
        android:text="inch->cm" />

    <TextView
        android:id="@+id/Aresultado"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/Abotoncm"
        android:layout_marginTop="36dp"
        android:layout_toLeftOf="@+id/Atipo"
        android:gravity="right"
        android:text="1 in"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>
activity_main.xml

 Después de crear todo el interface gráfico, empezamos con la programación.
Creamos las diferentes variables.
Para hacer cálculos en coma flotante .
double MiEntrada,MiResultado;
Dos cadenas para la entrada y el resultado.
String StEntrada,StResultado;
Para cada elemento gráfico que queramos modificar .
private EditText WEntrada;
private TextView WResultado,WTipo;

public class MainActivity extends ActionBarActivity
    {
    double MiEntrada,MiResultado;
    String StEntrada,StResultado;
    private EditText WEntrada;
    private TextView WResultado,WTipo;
Para cada elemento gráfico que queramos modificar debemos encontrarlo y asignarle una variable.
WEntrada=(EditText)findViewById(R.id.Aentrada);
WResultado=(TextView)findViewById(R.id.Aresultado);
WTipo=(TextView)findViewById(R.id.Atipo);

protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WEntrada=(EditText)findViewById(R.id.Aentrada);
        WResultado=(TextView)findViewById(R.id.Aresultado);
        WTipo=(TextView)findViewById(R.id.Atipo);
    }
Creamos las funciones de cada botón.
public void FunCm(View view)
    {
        StEntrada=WEntrada.getText().toString();
        MiEntrada=Double.parseDouble(StEntrada);
        MiEntrada= MiEntrada / 2.54;       
        StResultado = String.format("%1.2f in", MiEntrada);
        WResultado.setText(StResultado);
       
        WTipo.setText("cm");    
    }
   
    public void FunInch(View view)
    {
        StEntrada=WEntrada.getText().toString();
        MiEntrada=Double.parseDouble(StEntrada);
        MiEntrada= MiEntrada * 2.54;
        StResultado = String.format("%1.2f cm ", MiEntrada);
        WResultado.setText(StResultado);
       
        WTipo.setText("in");
    }
}

Como vemos nos produce error en cada widget que no hemos declarado.
O lo colocamos a mano, o le damos a Import  "TextView" y lo importa automáticamente.


Declaración a mano de los diferentes Widgets.
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


package conversorunidades.seta43;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity
    {
    double MiEntrada,MiResultado;
    String StEntrada,StResultado;
    private EditText WEntrada;
    private TextView WResultado,WTipo;
   

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WEntrada=(EditText)findViewById(R.id.Aentrada);
        WResultado=(TextView)findViewById(R.id.Aresultado);
        WTipo=(TextView)findViewById(R.id.Atipo);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
        {
       
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    public void FunCm(View view)
    {
        StEntrada=WEntrada.getText().toString();
        MiEntrada=Double.parseDouble(StEntrada);
        MiEntrada= MiEntrada / 2.54;       
        StResultado = String.format("%1.2f in", MiEntrada);
        WResultado.setText(StResultado);
       
        WTipo.setText("cm");    
    }
   
    public void FunInch(View view)
    {
        StEntrada=WEntrada.getText().toString();
        MiEntrada=Double.parseDouble(StEntrada);
        MiEntrada= MiEntrada * 2.54;
        StResultado = String.format("%1.2f cm ", MiEntrada);
        WResultado.setText(StResultado);
       
        WTipo.setText("in");
    }
}

MainActivity.java

Probamos nuestro programa en el emulador.


También lo probamos en un terminal físico.


ConversorUnidades.zip

Espero que os guste este pequeño tutorial. Es un tutorial sin pretensiones de un novato en la programación de android.

Saludos
Juan Galaz


Bibliografía:
http://www.blogdemigueldiaz.com/2012/08/programacion-en-android-para-torpes-iv-asignar-eventos-a-elementos/
http://www.javaya.com.ar/androidya/
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=536
http://www.nachocabanes.com/android/
http://downloads.puresoftware.org/files/android/
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=536
http://www.yofriki.com/2013/03/instalar-eclipse-y-sdk-android-en.html
http://www.ubuntu-es.org/node/181017#.VxD7yxcshaU


sábado, 16 de abril de 2016

Mi primer programa android - Hola mundo

Android


Mi primer programa android
Hola mundo


En el artículo anterior habíamos instalado y configurado todos los programas necesarios para poder compilar un programa para android. Ahora nos toca hacer nuestro primer programa, Hola mundo .

Lo primero es indicar el lugar de trabajo, si hemos realizado otro trabajo anterior nos cargará automáticamente el último trabajo. Si queremos otro espacio de trabajo vamos al menú File-> Switch Workspace , donde seleccionamos otro y damos nuestro nombre al lugar workspaceTutorial0.


Nos toca crear nuestro primer proyecto android.



Llegamos a la siguiente  pantalla donde seleccionamos las diferentes API de compilación.
Aquí debemos tener cuidados para que la elección sea correcta y no nos de errores posteriores.


Aceptamos la siguiente pantalla. Next->


Aquí podemos elegir nuestro icono, para nuestra aplicación utilizamos el que viene por defecto.


Para el tipo de actividad usamos Blank Activity.


Aquí personalizamos el nombre de la actividad.


Después de un rato nos aparece creado nuestro primer programa.
No vamos a tocar nada, esto solo es una prueba.
Puedes ver la imagen ampliada en tu navegador con ver imagen.


Por fin vamos a ver nuestro proyecto en el emulador de android.
También podíamos utilizar un dispositivo físico para instalar y ejecutar nuestro programa.


Si todo va bien , veremos en nuestro emulador el programa realizado.


Un saludo
Juan Galaz

Bibliografía:
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=536
http://www.nachocabanes.com/android/
http://downloads.puresoftware.org/files/android/
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=536
http://www.yofriki.com/2013/03/instalar-eclipse-y-sdk-android-en.html
http://www.ubuntu-es.org/node/181017#.VxD7yxcshaU



viernes, 15 de abril de 2016

Android

Instalación del SDK - ANDROID en linux
adt-bundle

Hacía tiempo que quería realizar algún programa en android, pero me daba pereza tener que aprender otro lenguaje de programación. La realidad es la que es, y el número de dispositivos que llevan android es casi infinito ;), no me queda mas remedio que aprender a programar para android.
En este pequeño tutorial solo explico la forma de instalar y configurar los programas necesarios para programar para android bajo linux, seguro que existen muchos mejores manuales, pero este lo hago para mi y para que le sirva a alguien.
Para hacer todas las pruebas creo un usuario que se llama android , y es donde voy ha instalar los programas necesarios.
También es necesario tener instalado java y jdk de java , si queremos los ponemos instalar desde Synaptic  el paquete OpenJDK y Openjdk-7-jre . Como veréis cuando arranca eclipse nos mostrará algún aviso indicando que es mejor instalar el java desde oracle por ser mas rápido, hacer lo que os guste.
Lo primero es ir a la página:
    http://downloads.puresoftware.org/files/android/adt-bundle/
y descargar la versión de 32 bits para linux.
    adt-bundle-linux-x86-20140702.zip
Una vez descargada la descomprimimos en la carpeta de usuario, y la renombramos como adt-bundle para que no sea tan larga.

En la imagen ponemos observa los dos directorios que tiene el directorio adt-bundle, que son el editor eclipse y  sdk para las librerías de programación en android.
Entramos en el directorio eclipse y ejecutamos el programa que también se llama eclipse.

Aparecerá la imagen siguiente y esperaremos hasta que termine de cargar.


Cuando termina de cargar nos pregunta el lugar donde almacena los proyectos.


Ya tenemos el editor eclipse cargado.


Ahora tenemos que bajar desde internet las partes del SDK que queramos.


Aquí existen numerosas opciones para bajar de internet,  APIs de las versiones de android.
Yo he realizado un resumen de las que he bajado para este tutorial en la siguiente imagen.
Hay que tener algo cuidado de lo que se baja debido a que te puede no funcionar a desconfigurarse todo.
He de decir que he sido bastante conservador en la elección de paquetes a bajar.
Paciencia se tarda un rato en bajar los paquetes.........


Ahora nos toca crear las maquinas emuladoras donde probar los programas que creemos.
Vamos al  menú de eclipse , Windows-> Android Virtual Device Manager
No encontramos con una pantalla para crear maquinas virtuales.
Aquí podemos crear una máquina que utilice un procesador ARM, que es el que usan el 90% de los teléfonos móviles, pero el emulador es bastante lento.
Para hacer pruebas he creado un emulador de un Intel Atom (x86) que funciona bien para la mayoría de los programas que voy hacer.


Una vez creada la maquina virtual pulsamos el botón Start y veremos en una ventana la emulación de nuestro dispositivo.


Llegados a este punto debemos decir que no siempre los emuladores sirven, y que muchas veces debemos probar los programas en un dispositivo físico, un teléfono.
Lo primero tenemos que ir el dispositivo físico (móvil),  ajuste->Opciones de desarrollo-> Depuración  y activar Depuración USB. En algunos modelos es diferente, deberéis averiguar como se hace en el vuestro.
Ahora con el dispositivo conectado al ordenador deberéis entrar en una consola de linux y averiguar un dato necesario para la configuración posterior.
Teclear lsusb y nos saldrá lo siguiente:

android@debian8A:~$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 004: ID 14cd:8168 Super Top
Bus 003 Device 006: ID 0bb4:0c02 HTC (High Tech Computer Corp.) Dream / ADP1 / G1 / Magic / Tattoo (Debug)


En nuestro caso nuestro móvil lo reconoce como un HTC , nos quedamos con el dato en negrita 0bb4 .
Para que nos reconozca nuestro dispositivo linux debemos hacer unos cuantos cambios en la configuración de linux. Las instrucciones siguiente las he sacado de internet, no recuerdo la fuente.
Para un HTC que es nuestro caso;
    SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
guardamos el archivo como: 51-android.rules y lo copiamos a:
    /etc/udev/rules.d/
con el siguiente comando:
    sudo cp 51-android.rules /etc/udev/rules.d/
Le damos permisos
    sudo chmod a+r /etc/udev/rules.d/51-android.rules

Fuente: http://www.yofriki.com/2013/03/instalar-eclipse-y-sdk-android-en.html

Para ver si tanto el dispositivo físico como el emulado lo tenemos bien configurado, accedemos a la pantalla DDMS y comprobamos que aparecen los dos dispositivos conectados  y listos.
 

Existe también otro emulador llamado genymotion que emplea VirtualBox y que funciona bien y rápido. En los últimos SDK existe un módulo que acelera la emulación, pero solo funciona en los procesadores Pentium.

Ya tenemos todo configurado para realizar nuestro primer programa para android.

Saludos
Juan Galaz

Bibliografía:
http://downloads.puresoftware.org/files/android/
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=536
http://www.yofriki.com/2013/03/instalar-eclipse-y-sdk-android-en.html
http://www.ubuntu-es.org/node/181017#.VxD7yxcshaU

lunes, 11 de abril de 2016

Letrero con matriz de led controlado por android-MAX7219-Bluetooth HC05

Página principal

Arduino
Anunciador con matriz de led
controlado por android
MAX7219
Bluetooth  HC05


En el anterior montaje había utilizado el MAX7219 para realizar un marcador deportivo matrixb.html , en esta ocasión aumento el numero de matrices de led a 4, siendo el numero de caracteres visualizados 8, y el control se realiza mediante bluetooth con un teléfono android.

Diagrama del montaje de los 4 matrices de led.


Buffer de 32 bytes GrafBuff[32]


Esquema del circuito.


Detalle del conexionado.


Circuito montado.


Como vemos en el circuito empleamos 4 matrices de led de 8 bytes cada matiz, dando un total de 32 bytes.
En un buffer llamado GrafBuff[32] almacenamos toda la información que queramos representar en los led.
Una vez que hemos terminado de realizar todos impresiones de caracteres en el buffer volcamos la información en los leds mediante el función  Refres().
Cuando mandamos la cadena de caracteres el arduino lo procesa según el primer carácter de la cadena.
Si el primer carácter es / realiza un scroll de la cadena completa.
Si el primer carácter es & realiza un scroll de la cadena hasta que llega al primer dígito.
En cualquier otro caso la cádena enviada se queda fija.

La comunicación entre el dispositivo android y el arduino se hace mediante el módulos Bluetooth  HC05.
Es un simple modulo que emplea la comunicación serie (Tx/Rx). Esta vez aunque sea poco ortodoxo he empleado una resistencia de 330 ohmios para adaptar los niveles entre el HC05 y el arduino , de tal manera que si se conecta el HC05 no se puede programar el arduino dado que los dos se conectan a los mismos pins.
Para cambiar la contraseña y el nombre del HC05 recomiendo ver mi montaje ardisx.html.


Programa matriz en el android.

Para el programa en android he utilizado un interprete de basic  en su modo trial  BASIC4Android.
Debemos tener activado el bluetooth y emparejados los dispositivos.
Escribimos lo que queramos y lo mandamos a la matriz de caracteres.
La representación es instantánea si la representación anterior es fija, si es con scroll debemos esperar para visualizarlo a que termine el scroll.
Por un motivo que no he podido arreglar cuando se rota la pantalla en el android se pierde la comunicación y debemos reconectar si queremos cambiar el letrero.


Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 80 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 500 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 600mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.

PROGRAMAS


Saludos.
Juan Galaz

Bibliografía:

http://seta43.duckdns.org/marelo.html
http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/