Buenas este es el primer tutorial enlazado a mis segundo blog CursoArduinoMega.
Este tutorial consiste conectar a través de una conexión bluetooth tu dispositivo Android con el Arduino.
Vamos a enviar y recibir información.
Desde el celular Android, vamos a tener dos botones. ON OFF que van encender o apagar respectivamente
Desde el Arduino vamos a enviar 1, 2,3, 4. Ahora utilizamos estos numeros pero podría ser cualquier tipo de información como la temperatura y la humedad de un DHT11
Todos los demás botones es puramente demostrativo que otras funcionalidades se le pueden agregar.
Fuentes: wingoodharry arduino
Configurar HC06
Comencemos con arduino
//#include "DHT.h"
//#define DHTPIN 7
//#define DHTTYPE DHT11
//DHT dht(DHTPIN, DHTTYPE);
int led = 13; //led Rojo de prueba de conexión
float voltageValue[4] = {0,0,0,0};
char inbyte = 0; //Char para leer el led
void setup() {
// initialise serial communications at 9600 bps:
Serial.begin(9600);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
//dht.begin();
}
void loop() {
getVoltageValue();
//when serial values have been received this will be true
if (Serial.available() > 0)
{
inbyte = Serial.read();
Serial.println(inbyte);
if (inbyte == '2')
{
digitalWrite(led, LOW); //LED off
voltageValue[0] = 0;
}
if (inbyte == '1')
{
digitalWrite(led, HIGH); //LED on
voltageValue[0] = 1;
}
}
sendAndroidValues();
delay(2000);
}
void getVoltageValue()
{
voltageValue[0] = 1; //led
voltageValue[1] = 2;
voltageValue[2] = 3;
voltageValue[3] = 4;
}
//enviar los valores por el dipositivo android por el modulo Bluetooth
void sendAndroidValues()
{
Serial.print('#'); //hay que poner # para el comienzo de los datos, así Android sabe que empieza el String de datos
for(int k=0; k<4; k++)
{
Serial.print(voltageValue[k]);
Serial.print('+'); //separamos los datos con el +, así no es más fácil debuggear la información que enviamos
}
Serial.print('~'); //con esto damos a conocer la finalización del String de datos
Serial.println();
delay(10); //agregamos este delay para eliminar tramisiones faltantes
}
Ahora la conexión.
Nota: En código anterior no declaramos el TX y RX (recibir e enviar información) porque vamos a usar D0 y D1. En caso contrario deberíamos declararlo como en el siguiente ejemplo (ver)
SoftwareSerial BT(10,11); //10 RX, 11 TX.
- TXD: Transmisión de datos.
- RXD: Recepción de datos a un voltaje de 3,3V.
Muestro dos opciones. Ambas funcionan.
Lo más importante, cual es muy fácil de equivocarse si uno trabajo apurado, rápido.
Es que
- el RXD hc06 va con el TX0 del arduino
- el TXD hc06 va con el RX0 del arduino
como muestro en las imágenes
Fotos reales
Y sin mas preámbulos a los que nos interesa el código de Android
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tatoado.ramabluewingood" > <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".DeviceListActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"></activity> </application> </manifest>
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:padding="5dp"> </TextView>
<Button
android:id="@+id/buttonOn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LED ON" />
<Button
android:id="@+id/buttonOff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LED OFF />
<TextView
android:id="@+id/sensorView0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/sensorView1
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/sensorView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/sensorView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
device_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView android:id="@+id/title_paired_devices"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Seleccione un dispositivo btSerial "
android:visibility="gone"
android:background="#666"
android:textColor="#fff"
android:paddingLeft="5dp"
/>
<ListView android:id="@+id/paired_devices"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stackFromBottom="false"
android:layout_weight="1"
/>
<TextView
android:id="@+id/connecting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/infoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Si no hay dispositivos en la lista, por favor enlaza tu dispositivo en la configuración de Android"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_margin="5dp"
android:textSize="18dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
</LinearLayout>
</LinearLayout>
MainActivity.java
package com.tatoado.ramabluewingood;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
Button btnOn, btnOff;
TextView txtArduino, txtString, txtStringLength, sensorView0, sensorView1, sensorView2, sensorView3;
TextView txtSendorLDR;
Handler bluetoothIn;
final int handlerState = 0; //used to identify handler message
private BluetoothAdapter btAdapter = null;
private BluetoothSocket btSocket = null;
private StringBuilder recDataString = new StringBuilder();
private ConnectedThread mConnectedThread;
// SPP UUID service - this should work for most devices
private static final UUID BTMODULEUUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
// String for MAC address
private static String address = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Link the buttons and textViews to respective views
btnOn = (Button) findViewById(R.id.buttonOn);
btnOff = (Button) findViewById(R.id.buttonOff);
txtString = (TextView) findViewById(R.id.txtString);
txtStringLength = (TextView) findViewById(R.id.testView1);
sensorView0 = (TextView) findViewById(R.id.sensorView0);
sensorView1 = (TextView) findViewById(R.id.sensorView1);
sensorView2 = (TextView) findViewById(R.id.sensorView2);
sensorView3 = (TextView) findViewById(R.id.sensorView3);
txtSendorLDR = (TextView) findViewById(R.id.tv_sendorldr);
bluetoothIn = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what == handlerState) { //if message is what we want
String readMessage = (String) msg.obj; // msg.arg1 = bytes from connect thread
recDataString.append(readMessage); //keep appending to string until ~
int endOfLineIndex = recDataString.indexOf("~"); // determine the end-of-line
if (endOfLineIndex > 0) { // make sure there data before ~
String dataInPrint = recDataString.substring(0, endOfLineIndex); // extract string
txtString.setText("Datos recibidos = " + dataInPrint);
int dataLength = dataInPrint.length(); //get length of data received
txtStringLength.setText("Tamaño del String = " + String.valueOf(dataLength));
if (recDataString.charAt(0) == '#') //if it starts with # we know it is what we are looking for
{
String sensor0 = recDataString.substring(1, 5); //get sensor value from string between indices 1-5
String sensor1 = recDataString.substring(6, 10); //same again...
String sensor2 = recDataString.substring(11, 15);
String sensor3 = recDataString.substring(16, 20);
if(sensor0.equals("1.00"))
sensorView0.setText("Encendido"); //update the textviews with sensor values
else
sensorView0.setText("Apagado"); //update the textviews with sensor values
sensorView1.setText(sensor1);
sensorView2.setText(sensor2);
sensorView3.setText(sensor3);
//sensorView3.setText(" Sensor 3 Voltage = " + sensor3 + "V");
}
recDataString.delete(0, recDataString.length()); //clear all string data
// strIncom =" ";
dataInPrint = " ";
}
}
}
};
btAdapter = BluetoothAdapter.getDefaultAdapter(); // get Bluetooth adapter
checkBTState();
// Set up onClick listeners for buttons to send 1 or 0 to turn on/off LED
btnOff.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mConnectedThread.write("2"); // Send "0" via Bluetooth
Toast.makeText(getBaseContext(), "Apagar el LED", Toast.LENGTH_SHORT).show();
}
});
btnOn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mConnectedThread.write("1"); // Send "1" via Bluetooth
Toast.makeText(getBaseContext(), "Encender el LED", Toast.LENGTH_SHORT).show();
}
});
}
private BluetoothSocket createBluetoothSocket(BluetoothDevice device) throws IOException {
return device.createRfcommSocketToServiceRecord(BTMODULEUUID);
//creates secure outgoing connecetion with BT device using UUID
}
@Override
public void onResume() {
super.onResume();
//Get MAC address from DeviceListActivity via intent
Intent intent = getIntent();
//Get the MAC address from the DeviceListActivty via EXTRA
address = intent.getStringExtra(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
//create device and set the MAC address
//Log.i("ramiro", "adress : " + address);
BluetoothDevice device = btAdapter.getRemoteDevice(address);
try {
btSocket = createBluetoothSocket(device);
} catch (IOException e) {
Toast.makeText(getBaseContext(), "La creacción del Socket fallo", Toast.LENGTH_LONG).show();
}
// Establish the Bluetooth socket connection.
try
{
btSocket.connect();
} catch (IOException e) {
try
{
btSocket.close();
} catch (IOException e2)
{
//insert code to deal with this
}
}
mConnectedThread = new ConnectedThread(btSocket);
mConnectedThread.start();
//I send a character when resuming.beginning transmission to check device is connected
//If it is not an exception will be thrown in the write method and finish() will be called
mConnectedThread.write("x");
}
@Override
public void onPause()
{
super.onPause();
try
{
//Don't leave Bluetooth sockets open when leaving activity
btSocket.close();
} catch (IOException e2) {
//insert code to deal with this
}
}
//Checks that the Android device Bluetooth is available and prompts to be turned on if off
private void checkBTState() {
if(btAdapter==null) {
Toast.makeText(getBaseContext(), "El dispositivo no soporta bluetooth", Toast.LENGTH_LONG).show();
} else {
if (btAdapter.isEnabled()) {
} else {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 1);
}
}
}
//create new class for connect thread
private class ConnectedThread extends Thread {
private final InputStream mmInStream;
private final OutputStream mmOutStream;
//creation of the connect thread
public ConnectedThread(BluetoothSocket socket) {
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
//Create I/O streams for connection
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte[] buffer = new byte[256];
int bytes;
// Keep looping to listen for received messages
while (true) {
try {
bytes = mmInStream.read(buffer); //read bytes from input buffer
String readMessage = new String(buffer, 0, bytes);
// Send the obtained bytes to the UI Activity via handler
bluetoothIn.obtainMessage(handlerState, bytes, -1, readMessage).sendToTarget();
} catch (IOException e) {
break;
}
}
}
//write method
public void write(String input) {
byte[] msgBuffer = input.getBytes(); //converts entered String into bytes
try {
mmOutStream.write(msgBuffer); //write bytes over BT connection via outstream
} catch (IOException e) {
//if you cannot write, close the application
Toast.makeText(getBaseContext(), "La Conexión fallo", Toast.LENGTH_LONG).show();
finish();
}
}
}
}
DeviceListActivity.java
package com.tatoado.ramabluewingood;
import java.util.Set;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class DeviceListActivity extends Activity {
// Debugging for LOGCAT
private static final String TAG = "DeviceListActivity";
private static final boolean D = true;
// declare button for launching website and textview for connection status
Button tlbutton;
TextView textView1;
// EXTRA string to send on to mainactivity
public static String EXTRA_DEVICE_ADDRESS = "device_address";
// Member fields
private BluetoothAdapter mBtAdapter;
private ArrayAdapter mPairedDevicesArrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.device_list);
}
@Override
public void onResume()
{
super.onResume();
//***************
checkBTState();
textView1 = (TextView) findViewById(R.id.connecting);
textView1.setTextSize(40);
textView1.setText(" ");
// Initialize array adapter for paired devices
mPairedDevicesArrayAdapter = new ArrayAdapter(this, R.layout.device_name);
// Find and set up the ListView for paired devices
ListView pairedListView = (ListView) findViewById(R.id.paired_devices);
pairedListView.setAdapter(mPairedDevicesArrayAdapter);
pairedListView.setOnItemClickListener(mDeviceClickListener);
// Get the local Bluetooth adapter
mBtAdapter = BluetoothAdapter.getDefaultAdapter();
// Get a set of currently paired devices and append to 'pairedDevices'
Set pairedDevices = mBtAdapter.getBondedDevices();
// Add previosuly paired devices to the array
if (pairedDevices.size() > 0) {
findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);//make title viewable
for (BluetoothDevice device : pairedDevices) {
mPairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());
}
} else {
String noDevices = "Ningun dispositivo pudo ser emparejado";
mPairedDevicesArrayAdapter.add(noDevices);
}
}
// Set up on-click listener for the list (nicked this - unsure)
private OnItemClickListener mDeviceClickListener = new OnItemClickListener() {
public void onItemClick(AdapterView av, View v, int arg2, long arg3) {
textView1.setText("Conectando...");
// Get the device MAC address, which is the last 17 chars in the View
String info = ((TextView) v).getText().toString();
String address = info.substring(info.length() - 17);
// Make an intent to start next activity while taking an extra which is the MAC address.
Intent i = new Intent(DeviceListActivity.this, MainActivity.class);
i.putExtra(EXTRA_DEVICE_ADDRESS, address);
startActivity(i);
}
};
private void checkBTState() {
// Check device has Bluetooth and that it is turned on
mBtAdapter=BluetoothAdapter.getDefaultAdapter(); // CHECK THIS OUT THAT IT WORKS!!!
if(mBtAdapter==null) {
Toast.makeText(getBaseContext(), "El dispositivo no soporta Bluetooth", Toast.LENGTH_SHORT).show();
} else {
if (mBtAdapter.isEnabled()) {
Log.d(TAG, "...Bluetooth Activado...");
} else {
//Prompt user to turn on Bluetooth
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 1);
}
}
}
}
Este comentario ha sido eliminado por el autor.
ResponderEliminaresta todo ahí en github
EliminarEsta muito bom....
ResponderEliminar5 estrelas, parabens ramiro
espero que te sirva
Eliminarserviu sim...
Eliminarla app android lo hiciste en android estudio? podrias subir el proyecto o enviarmelo en mi correo linus.kow.2012@gmail.com, aun soy nuevo en esto de la programacion y necesitava hacer una app parecida a la tuya para la universidad, te lo agradeceria bastante.
ResponderEliminarahí esta. Arriba donde dice "github" esta todo el código de Android y Arduino.
Eliminarmuy buena acotacion porque mayor mente hacen app inventor y es limitado los estilo para hacer app, espero que publiques mas
ResponderEliminarmuy buena acotacion porque mayor mente hacen app inventor y es limitado los estilo para hacer app, espero que publiques mas
ResponderEliminarBuenas, muy buen aporte pero me salen algunos errores en el archivo java del DeviceListActivity, me sale tres errores
ResponderEliminarmPairedDevicesArrayAdapter = new ArrayAdapter(this, R.layout.device_name);
En el device name y en
String noDevices = getResources().getText(R.string.none_paired).toString();
en el none_paired
como lo busco en gittub
ResponderEliminarhttps://github.com/patriotaSJ/Bluetooth.git
Eliminardebajo de la imagen dice "download from github" le tenias que hacer click ahí, todo los tutoriales son iguales.
EliminarUna captura
Descarga del código
Video explicativo
Código
hola ramiro es un buen aporte lo que haces pero oye me podrás explicar un poco a detalle sobre android studio en como utilizar el bluetooth en verdad te agradeceré si me apoyas
ResponderEliminarGenial, Me gusta mucho el blog, esto es realmente innovador!!
ResponderEliminarSigue asi Ramiro!!
Hola, el tutorial esta muy bueno, parabens;;;;;;;
ResponderEliminarCom que programa é que gravas tus videosdos tutoriais...
Agradeco respoesta puede ser por email jose_magalhaes_1997@hotmail.com
Obrigado...
Con Camtansia, igual hay muchos otros.
EliminarHola es muy buen tutorial, si quiero mandar texto en vez de 0 y 1, quiero mandar on and off. Intente cambiarle directamente al codigo y no pasa nada :(
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarfua, muchas gracias. Es el mejor comentario que me han hecho. Saludos, que bueno haber sido de ayuda.
ResponderEliminarBuenas Ramiro, esta super bueno el tutoríal, muchísimas gracias.
ResponderEliminarComo podría desarrollar una aplicacion que reciba al mismo tiempo información de dos bluetooth diferentes.
Saludos
Buenas Ramiro
ResponderEliminarAnte todo felicitarte y darte las gracias porque me esta sirviendo de mucha ayuda tu proyecto porque tengo que hacer una app parecida a la que has hecho.
Tengo dos dudas que preguntarte:
1º) El archivo device_main, que esta vacío, ¿para qué sirve?
2º) El archivo device_name, te crea un texto con el dispositivo que ya tienes vinculado en tu dispositivo, ¿no?
Gracias
Sirve para todo, menos para nada.
EliminarSi claro. La puedes enviar por wasap o por gmail.com
EliminarHola Ramiro
ResponderEliminarMe ha encantado el post y te agradezco el código ya que me sirve de mucho, sigue así.
Tengo una duda que plantearte, ¿con tu código puedo recibir datos de forma seguida o hay que añadir algun código?
Gracias
Me salvaste la vida. Saludos desde Venezuela
ResponderEliminarExcelente Muchas gracias, tengo una pregunta como se podria usar el bluetooth en un service para que se pueda recibir informacion de arduino sin necesidad de tener abierta la aplicacion
ResponderEliminarExcelente post!! Una pregunta, como hago para implementar la conexión bluetooth en varias activities y no perder la conexion?
ResponderEliminarexcelente aporte camarada...sigue asi y gracias por compartir toda esta informacion es de gran utilidad....
ResponderEliminarHola Ramiro,
ResponderEliminarel código me ha ayudado mucho para finalizar mi proyecto de carrera de control de un exoesqueleto para rehabilitación de los dedos desde un movil o tablet. Eres parte de él, asi que puedes sentirte orgulloso!
Muchas gracias de nuevo!
Hola saludos Soy Novato en este tema y la verdad me descargue tu codigo Android pero no logro entender la estructura q le ahs puesto yno se ejecuta Por favor si tal vez podrias hacer un video me salvarias la vida literalmente
ResponderEliminarGenial, tendras idea de como mandar una variable? apenas estoy descubriendo Android Studio. He logrado guardar un numero con EditText pero sigo sin poderlo mandar por Bluetooth.
ResponderEliminarhttps://youtu.be/ByXr0ArhlQk
EliminarHola, necesitaria usar tu codigo para un proyecto en el que tengo que enviar un array bidimensional desde android a arduino, queria saber si con tu codigo funcionaba. No entiendo mucho de codigo de conexionado. Muchas gracias!
ResponderEliminarParece algo interesante, acabo de empezar a dominar Android así que todo lo que he leído me ha parecido realmente útil para hacerme una mejor idea, gracias por compartir
ResponderEliminarGenial el laburo que te mandaste man! un saludo
ResponderEliminarMe gusto mucho tu aporte estimado.
ResponderEliminarY para los que piden ayuda con temas que no son de este post o son personales: Agradezcan que alguien comparta su conocimiento y no lo presionen con pedidos fuera de lugar.
Hay que poner de nuestro trabajo personal y ser dadores de soluciones y no de mas problemas.
Me gusto mucho tu aporte estimado.
ResponderEliminarY para los que piden ayuda con temas que no son de este post o son personales: Agradezcan que alguien comparta su conocimiento y no lo presionen con pedidos fuera de lugar.
Hay que poner de nuestro trabajo personal y ser dadores de soluciones y no de mas problemas.
Hola amigo muy buena aportación pero podrías explicarme este método checkBTState
ResponderEliminarestoy tratando de desglosarlo.
GRACIAS
ResponderEliminar:)
El curso me parece complicad mismo siguiendo los pasos. Sin embargo para quien ya tenga una idea de programación lo verá más sencillo y fácil. De todos modos dar la enhorabuena por compartir en publico.
ResponderEliminarExcelente video.
ResponderEliminarLa verdad me parece excelente para tu Tesis.
Sasludos desde el Curso Enarm Virtual.
Buenas tardes Ingeniero.
ResponderEliminarDe ante mano gracias por el tutorial, para mi ha sido muy util. Quisiera saber si me podrias resolver una duda.
Creé una app en AndroidStrudio para hacer un switcheo on/off a una bomba de agua en un tanque de agua, en la aplicación tengo basicamente 2 botones, al boton qué me enciende la bomba le he asignado un valor de '1' y al qué me apaga la bomba le definí el valor de '0'.
Seguidamente a estó del lado de arduino, creé una varibale con el nombre 'state',para asignar los valores qué me llegan desde la app, la variable 'state' la inicializo con el valor igual a '0', luego preguntó en un condicional "if", sí ha establecido la conexión bluetooth entre el dispositivo y el arduino, de ser afirmativa la sentencia, vuelvo a preguntar en una sentencia por el valor del botón qué se halla pulsado en la app.
Sí el boton pulsado ha sido '1', prendo la bomba de agua, de lo contrario sí ha sido
'0' apago la bomba. El skecth de arduino qué tengo hasta ahora para el switch on/off y la comunicación entre el celular y arduino por BT es el siguiente:
#define WPump1_Ch1 10
int state = 0;
int Altura=0;
int Diametro=0;
void setup() {
//Velocidad del puerto Serial
Serial.begin (9600);
pinMode(WPump1_Ch1, OUTPUT);//BOMBA DE AGUA
digitalWrite(WPump1_Ch1, HIGH);
}
void loop() {
if (Serial.available() > 0) {
state = Serial.read();
}
if ( state == 1 ) {
digitalWrite(WPump1_Ch1, LOW);
}
else if (state == 0) {
digitalWrite(WPump1_Ch1, HIGH);
}
}
Tengo una inquietud aun y quísiera saber sí me puedes ayudar a resolverla.
al tener la bomba de agua en un recipiente cilíndrico me gustaría mostrar la capacidad del mismo en un textview en la app, para eso tendría qué crear 2 variables del lado Arduino qué me almacenen los valores de la altura y el diámetro, previamente ingresados en 2 text_box de la App de AndroidStudio, cosa qué haun no lo he logrado hacer, me gustaría saber sí esto es posible y sí me podrias explicar la forma de hacerlo, te lo agradecería enormemente.
Hola que tal, muy buen proyecto, excelente aporte. el codigo esta muy completo.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarMuchas Gracias Bro n.n Me sirvio mucho (Solo tome lo relacioado con android) excelente trabajo Sigue Asi
ResponderEliminarhola muy buen tutorial gracias tengo un problema cuando trato de apagar el led o encender no envia nada del android al arduino pero si recibe datos del arduino al android de antemano gracias por tu respuesta
ResponderEliminarHola, he cargado el proyecto y me ha hecho instalar una imagen de android nueva y unas tools, hasta ahí todo correcto. Pero al ejecutar la aplicación, la instala en el emulador pero me da el error : Unfortunately, Rama Blue Wingood has stopped. Alguna idea? Gracias
ResponderEliminarPerdón, creo que era que tengo que usarlo sobre un móvil físico y no uno virtual. Por si le sirve a alguien.
EliminarGracias por el proyecto,pero no he logrado obtener los datos que envia arduino en la aplicacion android, trado de enviar los estados del led a la app android y no lo logro
ResponderEliminaren realidad es una estafa, los codigos de android tienen errores. Para andar buscando errores y perder el tiempo es mejor hacerlo de cero. En la carpeta de github no esta la carpeta de recursos asi que sólo es perder el tiempo, si vas a compartir, hazlo bien...sino no hagas perder el tiempo a los demás
ResponderEliminarsi para ti es una perdida de tiempo, entonces hazlo tu!
EliminarQue te lo den compilado, en la cuenta de playstore y los beneficios también te los den a tí, no te molestes en buscar siquiera un recurso.Simplemente por el hecho de compartir el conocimiento se merece como mínimo las gracias.
EliminarMuy buen aporte y muchas gracias.
Buenas excelente tu trabajo me ayudado mucho..... eh usado tu codigo para el envio de datos de unos sensores el problema es que esos datos no se visualizan en los texview tal vez alguna idea de que podria ser?????
ResponderEliminaryufgio¿+
ResponderEliminarpoíuu
Excelente trabajo ! Gracias !
ResponderEliminaruna consulta y este parametro mConnectedThread.write("x"); cual es la funcion que cumple me podrias ayudar gracias
ResponderEliminareste parametro cual es la funcion que cumple mConnectedThread.write("x");espero tu respuesta gracias
ResponderEliminarme podrias explicar que funcion cumple este comando mConnectedThread.write("x");espero tu respuesta
ResponderEliminarmake a android app without code and with your mobile.click the link
ResponderEliminarhttp://ethobleo.com/2gy5
Hola amigo, no se si sigas activo o no, pero bueno, mi duda es como obtengo los datos de un sensor de temperatura a mi aplicacion (Android Studio).
ResponderEliminarla parte de arduino es en la que soy novato
https://youtu.be/ByXr0ArhlQk
EliminarHola amiguito, podrias enviarme el codigo de la app para comunicarse con arduido por medio de bluetoo ya que tengo que hacer un proyecto donde guarde los datos de sensor de humedad y temperatura, te lo agredeceria mucho ya es que es un proyecto de la escuela, gracias.mi correo es isabelllehdez@gmail.com
ResponderEliminarHola Ramiro muy buen aporte, tengo dudas de cómo leer los valores de humedad de suelo por medio de una aplicación que estoy desarrollando en Android studio, veras, me lee los valores en el motor de serie ardruino pero no logro q los muestre en la aplicación, me podrías indicar alguna manera de hacerlo?
ResponderEliminarhttps://youtu.be/ByXr0ArhlQk
EliminarPara los que quieren una conexión rápida con tan solo 4 líneas miren este video..
ResponderEliminarhttps://youtu.be/ByXr0ArhlQk
hola buenas tardes! sabes de que ya tengo el código, pero tengo un error que no se como arreglarlo, esta en deviceListActivity. Me podrias decir que es lo que se intenta hacer en el for, tiene adentro BluetoothDevice Device: pairedDevices).
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarprueba cambiando esta linea
ResponderEliminarSet pairedDevices = mBtAdapter.getBondedDevices();
Por Set pairedDevices = mBtAdapter.getBondedDevices();
POR FAVOR LEA !! Hola chicos !!! Soy Caro, vivo en Ohio, EE. UU. Tengo 32 años, estoy muy feliz de haber recibido mi tarjeta de cajero automático en blanco de Adriano. Mi tarjeta de cajero automático en blanco puede retirar $ 4,000 por día. Lo obtuve de Él la semana pasada y ahora he retirado alrededor de $ 10,000 gratis. El cajero automático en blanco retira dinero de cualquier cajero automático y no tiene nombre porque está en blanco, solo su PIN estará en él, no se puede rastrear y ahora tengo dinero para negocios, compras y suficiente dinero para mí y mi familia. vivo. Estoy muy contento y feliz de haber conocido a Adriano porque conocí a cinco personas antes que él y no pudieron ayudarme. Pero estoy feliz ahora que Adriano envió la tarjeta a través de DHL y la recibí en dos días. Obtenga su propia tarjeta de él en este momento, la está dando por una pequeña tarifa para ayudar a las personas, incluso si es ilegal, pero ayuda mucho y nadie es atrapado o rastreado. Estoy feliz y agradecido con Adriano porque cambió mi historia de repente. La tarjeta funciona en todos los países. Es una buena noticia. La dirección de correo electrónico de Adriano es adrianohackers01@gmail.com
ResponderEliminarPOR FAVOR LEA !! Hola chicos !!! Soy Caro, vivo en Ohio, EE. UU. Tengo 32 años, estoy muy feliz de haber recibido mi tarjeta de cajero automático en blanco de Adriano. Mi tarjeta de cajero automático en blanco puede retirar $ 4,000 por día. Lo obtuve de Él la semana pasada y ahora he retirado alrededor de $ 10,000 gratis. El cajero automático en blanco retira dinero de cualquier cajero automático y no tiene nombre porque está en blanco, solo su PIN estará en él, no se puede rastrear y ahora tengo dinero para negocios, compras y suficiente dinero para mí y mi familia. vivo. Estoy muy contento y feliz de haber conocido a Adriano porque conocí a cinco personas antes que él y no pudieron ayudarme. Pero estoy feliz ahora que Adriano envió la tarjeta a través de DHL y la recibí en dos días. Obtenga su propia tarjeta de él en este momento, la está dando por una pequeña tarifa para ayudar a las personas, incluso si es ilegal, pero ayuda mucho y nadie es atrapado o rastreado. Estoy feliz y agradecido con Adriano porque cambió mi historia de repente. La tarjeta funciona en todos los países. Es una buena noticia. La dirección de correo electrónico de Adriano es adrianohackers01@gmail.com
ResponderEliminarAlguna idea del porque la clase de java BluetoothAdapter.java este todo en rojo?
ResponderEliminarHAGA RICO CON EL USO DE TARJETA ATM EN BLANCO DE
ResponderEliminar(besthackersworld58@gmail.com)
¿Alguien ha oído hablar de la tarjeta de cajero automático en blanco? Una tarjeta de cajero automático que le permite retirar efectivo de cualquier cajero automático del mundo. No se requiere nombre, no se requiere dirección y no se requiere cuenta bancaria. La tarjeta Atm ya está programada para dispensar efectivo desde cualquier cajero automático en todo el mundo. Escuché sobre esta tarjeta de cajero automático en línea, pero al principio no le presté atención porque todo parece demasiado bueno para ser verdad, pero estaba convencido y sorprendido cuando mi amigo en mi lugar de trabajo obtuvo la tarjeta del proveedor de la tarjeta de cajero automático de garantía. Ambos fuimos al centro de cajeros automáticos y confirmamos que realmente funciona, sin demora lo probé. Desde entonces, he estado retirando de $ 1,500 a $ 5,000 diariamente de la tarjeta de cajero automático en blanco y esta tarjeta realmente ha cambiado mi vida financieramente. Acabo de comprar un coche caro y estoy pensando en comprarme una casa. Para aquellos interesados en ganar dinero rápido deben contactarlos en: Dirección de correo electrónico: besthackersworld58@gmail.com o WhatsApp él en +1 (323) -723-2568
Quiero agradecer mucho a Kelvin Ericksson por hacerme vivir una vida mejor y más estándar ... Obtuve la tarjeta de cajero automático del servicio de entrega ... Quiero usar este medio para decirle a cualquiera que viva en EE. UU. Y EUROPA para tomar la decisión correcta hoy Kelvin Ericksson es real ... LAS TARJETAS DE ATM PROGRAMADAS son reales y funcionan perfectamente
ResponderEliminarCONTACTO CON KELVIN ERICKSSON: BLANKATMMASTER5555@GMAIL.COM
QUÉ-APLICACIÓN: +3197005033695
Ya tengo una tarjeta ATM en blanco programada para retirar $5,000 por día. Estoy muy feliz por esto porque ya la he usado para obtener $200,000. Georg Bednorz Hackers está entregando estas tarjetas para ayudar a las personas, aunque es ilegal, es algo bueno y él no es como otras estafas que pretenden tener tarjetas ATM en blanco. Nadie es atrapado cuando usa la tarjeta. ¡Obtenga la suya de Georg Bednorz Hackers hoy! Envíe un correo electrónico a georgbednorzhackers@gmail.com
ResponderEliminarMensaje de texto/WhatsApp a través del +1 (262) 355-8285
Signal: @georgbednorzhackers.01
Telegram: @GeorgBednorzhackers
Contáctelos para varios tipos de piratería en: - Hackeo de tarjetas ATM en blanco - Tarjeta de malware de cajero automático de Bitcoin - Recuperar billeteras de Bitcoin - Recuperar bitcoins robados o perdidos - Recuperar cualquier red social bloqueada o pirateada; Facebook, Instagram, Snapchat, TikTok, Gmail, Yahoo mail y sitios web