App inventor 2 en español
Cómo programar los teléfonos móviles con Android.
Bluetooth, Arduino y App inventor 2 - Juan Antonio Villalpando
-- Tutorial de iniciación de App Inventor 2 en español --
Volver al índice del tutorial
___________________________
9BB.- Bluetooth, Arduino y App Inventor. Potenciómetro, gráfico dinámico.
scrollingGraph_potenci.aia
- El Arduino con Bluetooth y un potenciómetro, como indica la imagen.
- Al mover el potenciómetro se envía un valor entre 0 y 1000 a App Inventor.
- Se dibuja dinámicamente el gráfico tiempo/valor, es decir se mueve el gráfico hacia la izquierda.
- El móvil se puede poner en horizontal y vertical.
- El código de App Inventor está basado en:
725.- Gráfico en movimiento.
_______________________________________________
- Conexión.
- Bluetooth conectado a los puertos Serie "oficiales" RX-0 y TX-1 (Fíjate que se conectan de forma "cruzada").
- Debemos quitar el módulo para cargar la aplicación.
- Puedes consultar valores en el Serial Monitor.
- Mediante la función map, convertimos limitamos los valores entre 0 y 1000.
arduino_bt_potenciometro.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
void setup(){
Serial.begin(9600);
}
void loop (){
// El terminal central del potenciómetro va a A0 del Arduino
int i = analogRead(A0);
i = map(i,0,1024,0,1000);
Serial.print(i);
Serial.print("\n"); // Fin de línea. Importante.
delay(300);
}
|
- App Inventor.
_______________________________________________
- La gráfica se va desplazando continuamente a la izquierda mostrando los valores obtenidos en el potenciómetro.
- El Reloj tiene un Intervalo de 100.
- El Bluetooth
DelimiterByte = 10
_______________________________________________
- Comentarios.
- Esta es la parte de la llegada de datos del Bluetooth, el dato llega a la variable value.
- Se ejecuta el procedimiento updateGraph.
_______________________________________________
- Comentarios.
- STEP es para que salgan valores aleatorios paso a paso.
- Si pulsas PAUSE, seguirán llegando valores y cuando pulses START se irán mostrando los valores que han llegado anteriormente.
_________________________________________________
- Valor entre -90 y +90
- Si queremos que el valor de y varíe entre -90 y 90, cambiamos la etiqueta.
_______________________________________________
2.- Arduino genera una señal sinusoidal y la transmite por Bluetooth.
scrollingGraph_potenci_simple.aia
- Observa el código de Arduino, genera una señal sinusoidal.
- Los valores que crean esa señal, se van enviando por Bluetooth a Android.
- Los recibe y dibuja una gráfica.
________________________________________
- Arduino.
sinusoidal.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
void setup()
{
Serial.begin(9600);
}
float incremento = 3.14/20; // Resolución
float angulo = 0;
int amplitud = 1000;
int y;
void loop()
{
y = amplitud * sin(angulo);
angulo = angulo + incremento;
y = map(y,-1000,1000,0,1000);
Serial.print(y);
Serial.print("\n");
delay(400);
}
|
- Cambiando a mayor el número 20, aumenta la resolución.
- Si pones un delay muy grande, se enviarán muchos datos y no le dará tiempo procesarlo al Bluetooth del Android, se llenará el Buffer.
_______________________________________________
3.- Al pulsar un Botón, pedimos un valor a Arduino y se muestra en la gráfica.
scrollingGraph_potenci_simple_NoClock.aia
- Este ejemplo no utiliza Reloj en App Inventor, ni delay en el Arduino.
- Cada vez que pulsamos el Botón "Get value" enviamos el caracter "k" a Arduino por Bluetooth y cuando el Arduino lo recibe nos devuelve el siguiente valor de la función sinusoidal.
________________________________________
- Diseño.
________________________________________
- Bloques.
________________________________________
- Arduino.
sinusoidal_get.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com
void setup()
{
Serial.begin(9600);
}
float incremento = 3.14/20;
float angulo = 0;
int amplitud = 1000;
int y;
char caracter;
void loop() {
if(Serial.available()) {
caracter = Serial.read();
if(caracter == 'k'){
y = amplitud * sin(angulo);
angulo = angulo + incremento;
y = map(y,-1000,1000,0,1000);
Serial.print(y);
Serial.print("\n");
caracter = '-';
}
}
}
|
________________________________________
- Comentarios.
- App Inventor envía por Bluetooth el caracter "k" (podría se otro).
- Si Arduino recibe el caracter "k", entonces mediante Serial.print(y); envía el valor actual de y.
- App Inventor RecibeTexto y lo pone en la variable value, para ser insertada en el gráfico.
__________________________________
|