Buenos días, a ver si alguien me puede ayudar.
Necesito cambiar los pines rx y tx (0 y 1) por otros, en particular, por el 12 y el 13.
Es para controlar 4 servos en un brazo robótico de aliexpress.
No tengo mucha idea de arduino ya que estoy empezando todavía.
Gracias por vuestro tiempo.
Salud
Esos pines no los puedes cambiar siempre serán el tx/rx de comunicación con la PC. lo único que puedes hacer es crear otro puerto serie de comunicación en los pines que quieras.
Para eso usa una librería como la " SoftwareSerial.h ", instálala y mira sus ejemplos es fácil de usar.
Me parece curioso controlar 4 servos con tx/rx ¿ podrías ponerme un link a ese brazo?
Saludos.
Y para que necesitas cambiarlos?
Que tal, gracias por tu interés. Ahora no estoy en casa pero mi intención era mandarte una foto de la placa con 2 joystick que coloco encima de mi arduino uno.
Ésta lleva para insertar el hc 05 pero a los pines 12 y 13 y he encontrado una app y un código en internet con los que manejar mi brazo robotico de 4 servos.
Es para educación (3 ESO) y no quiero complicarles la vida con cableados.
Cuando llegue a casa te envio mi código de arduino para ver si se puede hacer.
Como no lo manejo mucho, si se pudiera hacer con mblock o similares mucho mejor.
Gracias.
Ya te entendí, tengo ese brazo y esa placa, y es como te dije tendrás que cargar una librería Para crear un segundo " canal " de comunicación serial en esos pines para comunicarte con el Hc-05.
Pero ojo, esa placa solo lleva un conector de 4 pines y el Hc-05 lleva 6, esta más bien pensada para el Hc-06.
Que tal, ya estoy por casa. Te adjunto fotos de mi proyecto.
Como bien dices el HC-05 tiene 6 pines pero dos se quedan por fuera como te indico en la foto y además es muy fácil de conectar, por eso lo de crear un segundo canal rx y tx.
¿Tu me podrías ayudar si te mando el código que me funciona con el rx 0 y tx 1 para duplicarlo y que se pueda usar en el 12 y 13?
Yo lo he intentado pero mis conocimientos en la materia son bastante limitados.
Gracias por adelantado
Nota: Incluye un led en la pinza para encenderlo y apagarlo con la app creada.
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
char a;
String readString;
void setup() {
pinMode(13,OUTPUT);
servo1.attach(5);
servo2.attach(9);
servo3.attach(10);
servo4.attach(11);
Serial.begin(9600);
servo1.write(8);
servo2.write(100);
servo3.write(164);
servo4.write(90);
delay(10);
}
void loop() {
if (Serial.available()) {
a = Serial.read();
if(a=='A'){
motor1();
}
if(a=='B'){
motor2();
}
if(a=='C'){
motor3();
}
if(a=='D'){
motor4();
}
if(a=='E'){
digitalWrite(13,HIGH);
delay(10);
}
if(a=='F'){
digitalWrite(13,LOW);
delay(10);
}
}
}
void motor1(){
delay(10);
while (Serial.available()) {
char b = Serial.read();
readString += b;
}
if (readString.length() >0) {
Serial.println(readString.toInt());
servo1.write(readString.toInt());
readString=""; // Clear string
}
}
void motor2(){
delay(10);
while (Serial.available()) {
char b = Serial.read();
readString += b;
}
if (readString.length() >0) {
Serial.println(readString.toInt());
servo2.write(readString.toInt());
readString="";
}
}
void motor3(){
delay(10);
while (Serial.available()) {
char b = Serial.read();
readString += b;
}
if (readString.length() >0) {
Serial.println(readString.toInt());
servo3.write(readString.toInt());
readString="";
}
}
void motor4(){
delay(10);
while (Serial.available()) {
char b = Serial.read();
readString += b;
}
if (readString.length() >0) {
Serial.println(readString.toInt());
servo4.write(readString.toInt());
readString="";
}
}
¿Tienes ya configurado el HC-05?.
Entiendo que si. Me funciona cuando lo conecto y manejo desde una app los servos. Pero claro, cableando el hc 05 a los pines 1 y 2.
#include <Servo.h>
#include "SoftwareSerial.h"
SoftwareSerial MI_Serial(12, 13); // RX, TX
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
char a;
String readString;
void setup() {
pinMode(13, OUTPUT);
servo1.attach(5);
servo2.attach(9);
servo3.attach(10);
servo4.attach(11);
MI_Serial.begin(9600);
Serial.begin(9600);
servo1.write(8);
servo2.write(100);
servo3.write(164);
servo4.write(90);
delay(10);
}
void loop() {
if (MI_Serial.available()) {
a = MI_Serial.read();
if (a == 'A') {
motor1();
}
if (a == 'B') {
motor2();
}
if (a == 'C') {
motor3();
}
if (a == 'D') {
motor4();
}
if (a == 'E') {
digitalWrite(13, HIGH);
delay(10);
}
if (a == 'F') {
digitalWrite(13, LOW);
delay(10);
}
}
}
void motor1() {
delay(10);
while (MI_Serial.available()) {
char b = MI_Serial.read();
readString += b;
}
if (readString.length() > 0) {
Serial.println(readString.toInt());
servo1.write(readString.toInt());
readString = ""; // Clear string
}
}
void motor2() {
delay(10);
while (MI_Serial.available()) {
char b = MI_Serial.read();
readString += b;
}
if (readString.length() > 0) {
Serial.println(readString.toInt());
servo2.write(readString.toInt());
readString = "";
}
}
void motor3() {
delay(10);
while (MI_Serial.available()) {
char b = MI_Serial.read();
readString += b;
}
if (readString.length() > 0) {
Serial.println(readString.toInt());
servo3.write(readString.toInt());
readString = "";
}
}
void motor4() {
delay(10);
while (MI_Serial.available()) {
char b = MI_Serial.read();
readString += b;
}
if (readString.length() > 0) {
Serial.println(readString.toInt());
servo4.write(readString.toInt());
readString = "";
}
}
La libreria la descargas de AQUI y de crear app ni idea en eso estas solo por mi parte.
Gracias. Lo.pruebo y te digo
En cuanto a la app lo tengo claro con app inventor.
Mil gracias
Que tal de nuevo. He probado el programa y efectivamente funciona.
Hay un pero, y es que con el programa anterior (rx y tx 0 y 1) solo funciona un deslizador de la app para cada motor (como tiene que ser) y no como en la que me has mandado, que funcionan todos los motores con todos los deslizadores.
Además "ratean" como puedes ver en el vídeo que te he mandado por correo.
Gracias por tu tiempo
No puedo enviarte los vídeos a través de ese foro. Si me das tu correo te los envío.
Salud
Los videos subelos a youtube y adjunta los enlaces.
El código de @gonpezzi es el mismo que tienes, solo cambió el puerto serial, revisa porque tienes otro problema pero no es el código.
Problema con el código:
Tienes cruzados los cables Tx del Arduino con RX del BT y vice verza?
Moderador:
Sube los videos a Youtube.
Cómo que no puedes enviar videos, hombre!! Mira otros hilos, estan plagados de videos.
Hay ejemplos en todo el foro.
Lo mejor es que se suban a Youtube y que no haya que descargarlos.
Si los pones para descargar ej. mp4 muchos no lo hacemos (yo al menos).
Mira tu casilla privada. Vuelves a reinicidir en una falta que te he indicado previamente.
Por cierto, no resuelvas borrando, edita y deja un post con todos tus comentarios.
Sintiéndolo mucho no es el cambio de 12 por 13. Cuando lo cambias no transmite.
He incrementado los delay y sigue igual.
No se donde está el fallo y es que además de que no giran finos los servos, con cualquier deslizador mueves los 4 servos.
Agradecería cualquier sugerencia. Gracias.
¿En la app que estás haciendo recibe algo del módulo?