buen día.
mi trabajo consiste en un brazo robótico, el cual pueda grabar datos y posteriormente reproducirlos.
Tengo un problema con mi programación ( SOY NOVATO EN PROGRAMACIÓN), estoy utilizando arreglos- arrays. Digamos que escribí para que mi arduino1 guardara 150 datos "[150]", para que luego mi servo los reprodujera. El caso es que si no llego a utilizar todos los datos que ya había escrito que se iban a utilizar (150), entonces en el momento en que se reproducen los datos, en el monitor serial (Serial.println), observo que se autocompleta con el grado " 0 ", cosa que yo no puedo aceptarlo, debido a que ese grado en mi brazo robótico es un movimiento imposible de lograr(mi estructura, diseño, no lo permite).
CABE RESALTAR que usé en "servo.write" en mi void setup() para que en un comienzo se muestre primero lo grados que yo quiero, y no el grado " 0 ", que no es aceptable para mi estructura(diseño).
LES ADJUNTO MI CÓDIGO PARA QUE ME PUEDAN AYUDAR. (soy principiante u.u)
GRACIAS DE ANTEMANO.
#include <Servo.h>
Servo miservo;
Servo miservo1;
Servo miservo2;
Servo miservo3;
#include <SoftwareSerial.h> // TX RX software library for bluetooth
int bluetoothTx = 10; // bluetooth tx to 10 pin
int bluetoothRx = 11; // bluetooth rx to 11 pin
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
int servo;
int servo1;
int servo2;
int servo3;
int servo0;
int servo11;
int servo22;
int servo33;
int contador=0;
int estado=0;
int boton=2;
int ultimoestado=0;
int posiciones[150];
int posiciones1[150];
int posiciones2[150];
int posiciones3[150];
int i=0;
void setup(){
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, INPUT);
miservo.attach(6);
miservo1.attach(7);
miservo2.attach(12);
miservo3.attach(8);
miservo3.write(60);
miservo2.write(120);
miservo1.write(72);
miservo.write(3);
Serial.begin(9600);
bluetooth.begin(38400);
}
void loop()
{
estado=digitalRead(2);
if(estado != ultimoestado){
if(estado == HIGH)
{
contador++;
Serial.print("contador :");
Serial.println(contador);
}
}
ultimoestado=estado;
//********************************* NORMAL ( SIN PULSAR BOTON )**********************//
if (contador == 0)
{
contador = 0;
digitalWrite(5,HIGH);
if(bluetooth.available()>= 2 )
{
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 *256) + servopos;
Serial.print(servopos);
Serial.print(" ");
Serial.println(servopos1);
if (realservo >= 1000 && realservo <1040) {
int servo = realservo;
servo0 = map(servo, 1000, 1180, 0, 180);
miservo.write(servo0);
Serial.println("Servo0 ON");
delay(10);
}
if (realservo >= 2070 && realservo <2170) {
int servo1 = realservo;
servo11 = map(servo1, 2000, 2180, 0, 180);
miservo1.write(servo11);
Serial.println("Servo1 ON");
delay(10);
}
if (realservo >= 3100 && realservo <3180) {
int servo2 = realservo;
servo22 = map(servo2, 3000, 3180, 0, 180);
miservo2.write(servo22);
Serial.println("Servo2 ON");
delay(10);
}
if (realservo >= 4000 && realservo <4124) {
int servo3 = realservo;
servo33 = map(servo3, 4000, 4180, 0, 180);
miservo3.write(servo33);
Serial.println("Servo3 ON");
delay(10);
}
}
}
//********************************* GRABAR (PRIMERA PULSADA)**********************//
if (contador == 1)
{
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
int estadosw=digitalRead(4);
if (i<150)
{
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 servo = realservo;
servo0 = map(servo, 1000, 1180, 0, 180);
miservo.write(servo0);
Serial.println("Servo 1 ON");
delay(10);
}
if (realservo >= 2000 && realservo <2180) {
int servo1 = realservo;
servo11 = map(servo1, 2000, 2180, 0, 180);
miservo1.write(servo11);
Serial.println("Servo 2 ON");
delay(10);
}
if (realservo >= 3000 && realservo <3180) {
int servo2 = realservo;
servo22 = map(servo2, 3000, 3180, 0, 180);
miservo2.write(servo22);
Serial.println("Servo 3 ON");
delay(10);
}
if (realservo >= 4000 && realservo <4180) {
int servo3 = realservo;
servo33 = map(servo3, 4000, 4180, 0, 180);
miservo3.write(servo33);
Serial.println("Servo 4 ON");
delay(10);
}
posiciones[i]=servo0;
posiciones1[i]=servo11;
posiciones2[i]=servo22;
posiciones3[i]=servo33;
Serial.println(posiciones3[i]);
if (i>=0 && i<=100)
{
Serial.println(" grabando");
}
if ( i>125)
{
Serial.println(" grabando y finalizando");
}
i++;
}
}
}
//********************************* REPRODUCIR **********************//
if (contador == 2)
{
digitalWrite(3,HIGH);
for(int i=0;i<150;i++)
{
Serial.print("reproduciendo posiciones ");
Serial.print(posiciones[i]);
Serial.print(" reproduciendo posiciones1 ");
Serial.print(posiciones1[i]);
Serial.print(" reproduciendo posiciones2 ");
Serial.print(posiciones2[i]);
Serial.print(" reproduciendo posiciones3 ");
Serial.println(posiciones3[i]);
miservo.write(posiciones[i]);
miservo1.write(posiciones1[i]);
miservo2.write(posiciones2[i]);
miservo3.write(posiciones3[i]);
if(posiciones3[i]==0)
{
posiciones3[i]=120;
miservo3.write(120);
delay(10);
}
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
delay(10);
estado=digitalRead(2);
if(estado!=ultimoestado)
{
if (estado==HIGH)
{
break;
contador++;
}
delay(50);
}
ultimoestado=estado;
}
}
//********************************* VOLVER A INICIO **********************//
if (contador == 3)
{
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
delay(400);
digitalWrite(3,LOW);
delay(200);
digitalWrite(4,LOW);
delay(200);
Serial.println("alto");
contador=0;
Serial.println(contador);
}
}