Hola gente, estoy haciendo con arduino un control con un joystic para controlar un telescopio. De hecho ya lo tengo hecho y funciona bastante bien a salvo de rotocar un par de cosillas.
A traves del serial envío datos a un programa que estoy haciendo con processing y viceversa de processing a arduino.
El problema que tengo, a ver si me podeis ayudar, es que no soy capaz (en processing) de ALMACENAR UN INTEGER DE MAS DE DOS DÍGITOS INTRODUCIDOS POR TECLADO Y ALMACENARLO EN UNA VARIABLE.
Yo no soy programador aunque tengo algunas nociones pero por mas que busco no he encontrado nada y por eso os pido ayuda.
Saludos
Y porque no pones los códigos o haz alguno que muestre donde tienes el problema, no pongas algo parcial, coloca todo el código.
De todos modos... no hago muchas cosas en processing pero si lees una tecla, la conviertes en string y luego a entero. Lo intentaste asi?
Mi intención es poder poner los grados que yo quiera tanto en el eje x como el y.
Lo que me interesaría es poder almacenar una variable (int) introduciéndola por teclado pero de mas de una cifra, o sea mas de 10. Con key solo puedo almacenar de 0 a 9 o cualquier tecla del teclado pero no mas de dos. O no se hacerlo.
Desde arduino paso por puerto usb lo siguiente:
Serial.write(0);
Serial.write(",");
Serial.print(motorSpeed2);
Serial.write(",");
Serial.print(motorSpeed);
Serial.write(",");
Serial.print(contador); //Contador del optoacoplador eje x
** Serial.write(",");**
** Serial.print(contador2);//Contador del optoacoplador eje y[/b]**
** Serial.write("\n");**
Desde processing paso datos a arduino:
void mousePressed( ){
if(mouseX>=300 && mouseX<=340 && mouseY>=290 && mouseY<=310){
port.write(49); // me gustaría poder enviar una variable introducida por teclado //
} //en vez de 49 un numero que pudiera yo introducirlo por teclado
if(mouseX>=360 && mouseX<=400 && mouseY>=290 && mouseY<=310){
** port.write(50);**
}
if(mouseX>=420 && mouseX<=460 && mouseY>=290 && mouseY<=310){
port.write(51);
** }**
}
Así podría modificar el valor del contador para que cuando volviera a processing y al mepearlo me devolvería los grados que yo quisiera
Es un poco lioso pero no he encontrado otra manera de hacerlo (soy novato
)
Os adjunto los dos archivos tanto de arduino como de processing. Os aviso que no esta muy ordenado y es un poco de lío solo yo se donde esta todo jeje.
Esta muy bien la transmisión de datos a traves de puerto usb por si a alguien le interesa.
Saludos
motor_teles_v6.ino (6.48 KB)
control_dos_variables_serial_port.pde (2.18 KB)
Aca tienes como hacerlo
enlace 1
Esta rutina me parece muy apropidada
String input = "";
void setup(){
}
void draw(){
}
void keyPressed(){
if( key >= '0' && key <= '9' ){
input+=char(key);
println( "The key entered was: " + char(key) );
println( "The current input is: " + input );
if( abs( int( input ) ) > 100 ){
println( "Whoops! That's too many digits. Let's ignore that last one." );
input = input.substring( 0, input.length()-1 );
println( "The current input is: " + input );
}
}
else if( key == '-' && input.equals( "" ) ){
input+='-';
println( "The key entered was: " + char(key) );
println( "The current input is: " + input );
}
else if( key == BACKSPACE && input.length() > 0 ){
println( "Didn't like that last key you pressed, huh? Ok, we'll get rid of it for you." );
input = input.substring( 0, input.length()-1 );
println( "The current input is: " + input );
}
else if (key == RETURN || key == ENTER){
int finalInput = int( input );
println( "Input entered is: " + finalInput );
input = "";
}
}
muchisimas gracias surbyte, es algo parecido solo que en vez de poder introducir dos cifras me gustaría poder llegar hasta 360. De momento voy a intentar hacerlo yo, si no salgo ya postearé mas alante pidiendo ayuda.
PD.
Me parece increible que para guardar un valor por teclado en una variable se tenga que hacer toda esa parafarnalia te aseguro que si no fuera por lo fácil que es la transmisión de datos por usb utilizaría otro sistema de programación.
¿Alguna sugerencia?
Y otra vez muchas gracias
