Trate de encontrar algún hilo que resuelva mi problema pero no lo encuentro, en fin.
Hice un programa en arduino para controlar reles y leds, dentro del programa utilizo el modulo bluetotth HC-05, un sensor de temperatura DHT11 y un sensor ultrasonico HC-SR04, hice también o al menos estoy intentando hacer una aplicación en App Inventor para controlar dichos leds y reles vía bluetooth, todo esto funciona de maravilla hasta que cree una ventana para mostrar los resultados de los sensores y allí es donde empiezan mis problemas.
Al inicio todo va bien pero después de un rato recibo un error en pantalla que dice: Select list item: Attempt to get item number 2 of a list of length 1: (2), y no tengo la mas remota idea de que se trata.
#include <SoftwareSerial.h>
#include <DHT.h>
// El TX del modulo BT va al pin10 de Arduino
// El RX del modulo BT va al pin11 de Arduino
SoftwareSerial myBluetooth(10, 11);
// Variables sensor DHT11
const int pinDHT11 = A0;
DHT dht11(pinDHT11, DHT11);
long ultimaLectura = 0;
// Iniciando buffer y matrix
char buffer[13];
int matrix[2][2];
// Variables captura datos de App
int datoRecibido;
// Variables sensor HC-RS04 (Ultrasonico)
const int pinTrig = 2;
const int pinEcho = 3;
// Variables Leds
const int pinVer = 4;
const int pinAzu = 5;
const int pinRoj = 6;
const int pinAma = 7;
// Variables Reles
const int pinRele1 = 8;
const int pinRele2 = 9;
void setup() {
Serial.begin(9600);
myBluetooth.begin(38400);
dht11.begin();
pinMode(pinDHT11, INPUT);
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(pinVer, OUTPUT);
pinMode(pinAzu, OUTPUT);
pinMode(pinRoj, OUTPUT);
pinMode(pinAma, OUTPUT);
pinMode(pinRele1, OUTPUT);
pinMode(pinRele2, OUTPUT);
digitalWrite(pinRele1, HIGH);
digitalWrite(pinRele2, HIGH);
}
void loop() {
datoRecibido = "";
if(myBluetooth.available()) {
datoRecibido = myBluetooth.read();
}
estadoLeds(datoRecibido);
estadoReles(datoRecibido);
estadoAmbiente();
estadoHCSR04();
// Empaquetamos los datos para enviar a la App
sprintf(buffer, "%d, %d, %d", matrix[0][0], matrix[0][1], matrix[1][0]);
myBluetooth.write(buffer);
//Serial.println(buffer);
Serial.print("Temperatura : ");
Serial.print(matrix[0][0]);
Serial.println("°C");
Serial.print("Humedad : ");
Serial.print(matrix[0][1]);
Serial.println("%");
Serial.print("Distancia : ");
Serial.print(matrix[1][0]);
Serial.println("cms.");
Serial.println("");
Serial.println("");
delay(500);
}
// Funcion leds
int estadoLeds(char valLed) {
switch(valLed) {
case '1': // Enciende luz principal sala
digitalWrite(pinVer, !digitalRead(pinVer));
break;
case '2': // Enciende luz lampara sala
digitalWrite(pinAzu, !digitalRead(pinAzu));
break;
case '3': // Enciende luz principal comedor
digitalWrite(pinRoj, !digitalRead(pinRoj));
break;
case '4': // Enciende luz lampara comedor
digitalWrite(pinAma, !digitalRead(pinAma));
break;
}
}
// Funcion reles
int estadoReles(char valRele) {
switch(valRele) {
case '5': // Enciende aire acondicionado / ventilador sala
digitalWrite(pinRele1, !digitalRead(pinRele1));
break;
case '6': // Enciende aire acondicionado / ventilador comedor
digitalWrite(pinRele2, !digitalRead(pinRele2));
break;
}
}
// Funcion temperatura
// Temperatura con DHT11
float estadoAmbiente() {
if(millis() - ultimaLectura >= 2000) {
matrix[0][0] = dht11.readTemperature();
matrix[0][1] = dht11.readHumidity();
ultimaLectura = millis();
}
}
// Tempreatura con LM385
/*
float lm35 = analogRead(A0);
float temp = (5.0 * lm35 * 100.0) / 1023.0;
*/
// Funcion sensor HCSR04
float estadoHCSR04() {
digitalWrite(pinTrig, LOW);
delayMicroseconds(2);
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrig, LOW);
float tiempo = pulseIn(pinEcho, HIGH);
float distancia = (tiempo / 58);
matrix[1][0] = distancia;
}
Espero y ojala alguien con mas experiencia en esto me pueda ayudar, se los agradecería muchísimo.