Saludos buenas noches este es mi primer POST. Uso un Arduino NANO ATMEGA328 y ya hago pinitos y cositas por mi cuenta. He avanzado mucho en un par de meses. He sido capaz de hacer bastantes cosas.
Normalmente uso CODEBENDER para la parte del Arduino y APP INVENTOR para la parte del móvil (Uso un SAMSUNG S4). El motivo de este mensaje es ver si me podéis orientar un poco con este proyecto que estoy preparando. Por una parte aprendo y por otra le enseño a mi hijo uniendo LEGO ARDUINO etc.... Es altamente gratificante.
Aporto dos SKETCHS que funcionan sin errores por separado.
Por un lado la parte de los SERVOS que ya soy capaz de usar sin problemas (dos servos mueven dos brazos), por otro el sketch de los LEDS que se encienden y se apagan.
Ambas partes por separado funcionan sin ningún contratiempo como digo. El APP inventor controla ambos sketchs. Mi problema viene a la hora de emitir a traves del bluetooth los comandos.
He probado muchas cosas pero no hay forma. Los leds parece que van locos y no responden a los comandos cuando intento integrar ambas programaciones. Parece que va todo lento y los leds parpadean y no va el conjunto. Me pierdo con el envío simultáneo de comandos numéricos y comandos de texto.
Mi petición es que me orientéis para que tanto comandos numéricos como comandos de texto puedan convivir y desde la misma APP poder usar tanto los movimientos de los SERVOS como el encendido y apagado de los LEDS. A partir de que pueda hacerlo, ya me meteré con sensores ultrasonicos motores etc... Gracias por vuestros consejos.
CODIGO LEDS Y DEBAJO CODIGO SERVOS SEPARADOS POR -----------------------------------
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
char a; // stores incoming character from other device
void setup()
{
// set digital pin to control as an output
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
// set the data rate for the SoftwareSerial port
bluetooth.begin(57600);
Serial.begin(9600);
}
void loop()
{
if (bluetooth.available())
// Si lleva texto a través del Bluetooth
{
a=(bluetooth.read());
Serial.println(a);
if (a=='A')
{
digitalWrite(5, HIGH);
Serial.println("LED rojo1 on");
}
if (a=='B')
{
digitalWrite(5, LOW);
Serial.println("LED rojo1 off");
}
if (a=='C')
{
digitalWrite(6, HIGH);
Serial.println("LED rojo2 on");
}
if (a=='D')
{
digitalWrite(6, LOW);
Serial.println("LED rojo2 off");
}
if (a=='E')
{
digitalWrite(7, HIGH);
Serial.println("LED verde on");
}
if (a=='F')
{
digitalWrite(7, LOW);
Serial.println("LED verde off");
}
}
}
----------------------------------------------------------------------------
#include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo1, myservo2, myservo3, myservo4, myservo5, myservo6;
int bluetoothTx = 10;
int bluetoothRx = 11;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup()
{
myservo1.attach(9);
myservo2.attach(8);
myservo3.attach(7);
myservo4.attach(6);
myservo5.attach(5);
myservo6.attach(4);
//Setup usb serial connection to computer
Serial.begin(9600);
//Setup Bluetooth serial connection to android
bluetooth.begin(57600);
}
void loop()
{
//Read from bluetooth and write to usb serial
if(bluetooth.available()>= 2 )
{
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 *256) + servopos;
Serial.println(realservo);
if (realservo >= 1000 && realservo <1180){
int servo1 = realservo;
servo1 = map(servo1, 1000,1180,0,180);
myservo1.write(servo1);
Serial.println("servo 1 ON");
delay(10);
}
if (realservo >=2000 && realservo <2180){
int servo2 = realservo;
servo2 = map(servo2,2000,2180,0,180);
myservo2.write(servo2);
Serial.println("servo 2 On");
delay(10);
}
if (realservo >=3000 && realservo < 3180){
int servo3 = realservo;
servo3 = map(servo3, 3000, 3180,0,180);
myservo3.write(servo3);
Serial.println("servo 3 On");
delay(10);
}
if (realservo >=4000 && realservo < 4180){
int servo4 = realservo;
servo4 = map(servo4, 4000, 4180,0,180);
myservo4.write(servo4);
Serial.println("servo 4 On");
delay(10);
}
if (realservo >=5000 && realservo < 5180){
int servo5 = realservo;
servo5 = map(servo5, 5000, 5180,0,180);
myservo5.write(servo5);
Serial.println("servo 5 On");
delay(10);
}
if (realservo >=6000 && realservo < 6180){
int servo6 = realservo;
servo6 = map(servo6, 6000, 6180,0,180);
myservo6.write(servo6);
Serial.println("servo 6 On");
delay(10);
}
}}
Un saludo y gracias.