Show Posts
Pages: [1]
1  International / Español / Re: (SOLUCIONADO)lecturas raras por puerto serie on: March 05, 2012, 11:22:45 am
al final con un pequeño delay, en el transmisor fué suficiente, aunque de vez en cuando sale un 32 en el sensor 0, una cosa muuuuuuuuuuu rara pero que de momento puede valer, si averiguo por que pasa esto lo posteo. un saludo y gracias otra vez
2  International / Español / Re: lecturas raras por puerto serie on: March 04, 2012, 11:06:40 am
voy a probar muchas gracias
3  International / Español / (SOLUCIONADO)lecturas raras por puerto serie on: February 21, 2012, 04:10:11 pm
hola de nuevo, a ver quien le echa coj... y me cuenta que me sale aqui que estoy volviendome loco. Más que solventar el problema, me gustaria si puede ser que me expliqueis que es lo que pasa. os cuento el problema, tengo estos codigos, mitad copiados mitad adaptados (primer problema... smiley-lol) con los que he conseguido comunicar dos placas, y al principio me sale unas lecturas logicas pero luego se vuelven locas las placas y me sale lo que les apetece, os coloco los codigos y las lecturas por cierto es para controlar un robot con dos joystick, uno para motores( puente H) y un pan tilt, por si algun alma caritativa tiene tirados un par de codigos para pasar  smiley-grin smiley-grin smiley-grin smiley-grin :
TRANSMISOR (solo pongo un trozo que es un ladrillo)
Code:
val0 = map(analogRead(0), 0, 1023, 250, 0);  
  val1 = map(analogRead(1), 0, 1023, 250, 0);
  val2 = map(analogRead(2), 0, 1023, 250, 0);
  val3 = map(analogRead(3), 0, 1023, 250, 0);
  
  // send the values to the serial port before sync value
  {Serial.print(255, BYTE);  // ================ SYNC
  Serial.print(val0, BYTE);} // X Left - X 0
  {Serial.print(254, BYTE);  // ================ SYNC
  Serial.print(val1, BYTE);} // Y Left - Y 1
  {Serial.print(253, BYTE);  // ================ SYNC
  Serial.print(val2, BYTE);} // X Right - X 2
  {Serial.print(252, BYTE);  // ================ SYNC
  Serial.print(val3, BYTE);} // Y Right - Y 3

RECEPTOR
Code:
void loop() {
  
   // read the serial port
   // see what is the SYNC value and then
   // assign the next value to the sensor variable
  
   if (Serial.available()>1) {
      incomingByte = Serial.read();
      
     Serial.print(int(incomingByte));
      
      // X Left - X 0
      if ((int(incomingByte) == 255)) {  
        sensor0 = Serial.read();
        Serial.print("    Sensor 0 = ");
        Serial.println(int(sensor0));              
      }
      
      // Y Left - Y 1
      if ((int(incomingByte) == 254)) {
        sensor1 = Serial.read();
        Serial.print("    Sensor 1 = ");
        Serial.println(int(sensor1));        
      }

      // X Right - X 2
      if ((int(incomingByte) == 253)) {
        sensor2 = Serial.read();
        Serial.print("    Sensor 2 = ");
        Serial.println(int(sensor2));              
      }
      
      // Y Right - Y 3
      if ((int(incomingByte) == 252)) {
        sensor3 = Serial.read();
        Serial.print("    Sensor 3 = ");
        Serial.println(int(sensor3));        
      }
   }
  
   // after reading all the incoming values
   // lets make the robot move
  
   // SENSOR 1 ---- LEFT MOTOR
  

Y LAS LECTURAS QUE APARECEN EN EL SERIAL DEL RECEPTOR
Code:
255    Sensor 0 = 127
254    Sensor 1 = 123
253    Sensor 2 = 123
252    Sensor 3 = 125
255    Sensor 0 = 127
254    Sensor 1 = 123
253    Sensor 2 = 123
252    Sensor 3 = 125
255    Sensor 0 = 127
254    Sensor 1 = 123
253    Sensor 2 = 123
252    Sensor 3 = 125
255    Sensor 0 = 127
254    Sensor 1 = 123
253    Sensor 2 = 123
252    Sensor 3 = 125
255    Sensor 0 = 127
254    Sensor 1 = 123
253    Sensor 2 = 123
252    Sensor 3 = 255
127255    Sensor 0 = 127
255    Sensor 0 = 127
255    Sensor 0 = 127
10255    Sensor 0 = 255
127255    Sensor 0 = 127
255    Sensor 0 = 127
255    Sensor 0 = 127
255    Sensor 0 = 127
123253    Sensor 2 = 254
123127254    Sensor 1 = 255
127127254    Sensor 1 = 125
255    Sensor 0 = 125
255    Sensor 0 = 252
125252    Sensor 3 = 125
123252    Sensor 3 = 253
123253    Sensor 2 = 123
12550125255    Sensor 0 = 123



muchas gracias...
4  International / Español / Re: como fijar servos pan/tilt con joystick o boton? on: December 29, 2011, 04:25:52 am
Muchas gracias, casi paisano, soy de Puertollano.
Voy a estudiar lo que me has dicho, tambien he encontrado lo de fijarlo con un pulsador, utilizando el kb de la eeprom,
un saludo.
5  International / Español / como fijar servos pan/tilt con joystick o boton? on: December 28, 2011, 01:04:33 pm
Hola, me dirijo a vosotros por que tengo una duda con un codigo para manejar un pan/tilt, este funciona perfectamente, pero necesito fijarlo en la posicion en la que esté cuando suelte el joystick (este vuelve al centro), he pensado en dos opciones:
la primera, es que el joystick sea un simple interruptor, y que cuando pase de "x" angulo el servo empiece a funcionar, y cuando el joystick vuelve al centro el servo se pare.
la segunda, es poner un pulsador (el que lleva el joystick integrado) que haga la funcion de fijar el servo,
supongo que sera una chorrada pero no encuentro como hacerlo, aqui os dejo el codigo para que le echeis un vistazo.
un saludo.
 
Quote
#include <Servo.h>

Servo horzServo; // Create a servo object for the pan (horizontal) servo
Servo vertServo; // Create a servo object for the tilt (vertical) servo

int horzPin = 0; // Analog input for the joystick horizontal axis
int vertPin = 1; // Analog input for the joystick vertical axis
int vertVal; // Value read from the vertical axis
int horzVal; // Value read from the horizontal axis

/**
* Setup
*/
void setup()
{
  horzServo.attach(11); // Use pin 9 PWM output for horizontal servo
  vertServo.attach(10); // Use pin 10 PWM output for vertical servo
}

/**
* Main program loop
*/
void loop()
{
  horzVal = analogRead(horzPin); // Read joystick horizontal position
  horzVal = map(horzVal, 0, 1023, 0, 179); // Scale reading to suit servo
  horzServo.write(horzVal); // Move servo to required position

  vertVal = analogRead(vertPin); // Read joystick vertical position
  vertVal = map(vertVal, 0, 1023, 0, 179); // Scale reading to suit servo
  vertServo.write(vertVal); // Move servo to required position

  delay(15); // Give the servos time to settle
}
6  International / Español / Re: novato autodidacta pidiendo ayuda para trasladar ordenes a motores. on: December 28, 2011, 12:35:53 pm
solucionado, he optado por otro codigo que encontre y que funcionaba, ahora a estudiar. jajajajaja. smiley-lol
7  International / Español / Re: novato autodidacta pidiendo ayuda para trasladar ordenes a motores. on: December 20, 2011, 05:00:36 pm
muchas gracias por la rapida respuesta, estoy utilizando un joystick desguazado de un mando de playstation 2, las lecturas las tengo y son correctas, voy a estudiarme lo que me has dicho y veremos que sale, pero es que soy un poco ceporro, y me costara enterarme. muchas gracias y ya contestare cuando lo tenga claro o me lie del todo   smiley-lol
8  International / Español / novato autodidacta pidiendo ayuda para trasladar ordenes a motores. on: December 20, 2011, 03:40:58 pm
Hola, pues eso me presento: soy jose, un novato autodidacta, y estoy empezando (despues de hacer ejercicios con los led), a controlar un robot con la direccion tipo tanque, con un joystick, he encontrado un codigo, que lo he probado y si que leo las lecturas del joystick's pero no veo la forma de pasar esta esta lectura a los motores, por favor una ayudita diciendome donde mirar (pero que sea muy sencillo que estoy empezando) o explicarme como crear el motor cc y governarlo, a ver si tengo mas suerte que con otro post que dejé nadie me pudo contestar (ya esta borrado). por favor contestarme aunque sea para decirme que me olvide de este proyecto, muchas gracias.
el codigo es para enviarlo via xbee, pero primero quiero empezar en la misma placa y mas adelante me complicare os dejo el codigo:

//this code reads from the inputshield's joystics, and forwards the message to the xbee sensor on the remote

//Remote Arduino Reads the analog values of the joystick->
//Remote Arduino translates the signal meaning and creates commands ->
//Remote Arduino Serial Port ->
//Remote Xbee Shield ->
//Tank Xbee Shield ->
//Tank Arduino Forwards the signal to pins 12,13 ->
//TankShield pin 12, 13 reads command and controls motors



void setup()
{
Serial.begin(9600);
digitalWrite(4, HIGH); pinMode(4, INPUT);
digitalWrite(5, HIGH); pinMode(5, INPUT);
}

unsigned int V1;
unsigned int L1;
long LEFT = 255;
long RIGHT = 255;
long Throttle; //forwards is positive, reverse is negative
long Percent; //percentage of power given to the right side

void loop()
{

///////////////////////////////////////////////////////////////
//Read JOY Position
/////////////////////////////////////////////////////////////// 
L1 = analogRead(5);//Joy latteral read analog value (1023 is the most left position and 0 is the most right position
V1 = analogRead(4);//Joy vertical read analog value (1023 is the most up/forward position and 0 is the most down/reverse position)

Percent = L1 + 1; //add 1 so I never have to divide by zero 0
Percent = Percent * 100; //scale up the value to apply a ratio to the "RIGHT" and "LEFT"
Percent = (Percent/1024); //divide by the most possible value (all the way right)

///////////////////////////////////////////////////////////////
//TEST JOY Position and calculate respective direction
///////////////////////////////////////////////////////////////

if (V1>600 & Percent<60 & Percent>40)//Forward
{
  RIGHT = 255;
  LEFT = 255;
}
else if (V1>600 & Percent<96 & Percent>59)//Forward but left
{
  RIGHT = 255;
  LEFT = (150-Percent)*255;
  LEFT = LEFT/100;
}
else if (V1>600 & Percent<41 & Percent>4)//Forward but right
{
  RIGHT = (Percent+50)*255;
  RIGHT = RIGHT/100;
  LEFT = 255;
}
else if (V1<400 & Percent<60 & Percent>40)//Reverse
{
  RIGHT = -255;
  LEFT = -255;
}
else if (V1<400 & Percent<96 & Percent>59)//Reverse but left
{
  RIGHT = -255;
  LEFT = (150-Percent)*(-255);
  LEFT = LEFT/100;
}
else if (V1<400 & Percent<41 & Percent>4)//Reverse but right
{
  RIGHT = (Percent+50)*(-255);
  RIGHT = RIGHT/100;
  LEFT = -255;
}
else if (V1>399 & V1<601 & Percent>80)//Sharp left turn
{
  RIGHT = +255;
  LEFT = -255;
}
else if (V1>399 & V1<601 & Percent<20)//Sharp right turn
{
  RIGHT = -255;
  LEFT = +255;
}
else //stop
{
  RIGHT = 0;
  LEFT = 0;
}


// Remote Arduino Serial Port ->
//Remote Xbee Shield ->
//Tank Xbee Shield ->
//Tank Arduino ->
//TankShield pin 12, 13

// command structure is:
//"THROTTLE|left-gear-box|right-gear-box;"
Serial.print("THROTTLE|"); //print the throttle command to the serial port
Serial.print(RIGHT);
Serial.print("|");
Serial.print(LEFT);
Serial.print(";");

delay(100);//give time for the XBee transfer
}
Pages: [1]