Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema con proyecto
#1
Buenas a tod@s:

Aprovechando las fiestas navideñas, no paro de empaparme de información, códigos, tutoriales, proyectos relacionados con Arduino. Y navegando por internet, he visto un código que servía para controlar un led mediante el PC. Cuando escribimos E se enciende y cuando ponemos O lo apagamos. Y por definición parpadea.

Código:
/*Declaramos una variable de tipo caracter en la que se almacenerá
lo que nos llegue por consola*/

char orden;
//Definimos que el led estará en la patilla 9
int led = 9;

void setup (){
//definimos la patilla  del led como salida
pinMode(led,OUTPUT);
//Abrimos la conexión serial a 9600 baudios
Serial.begin(9600);
}

void loop (){
/*leemos las ordenes que nos llegan por consola y
lo almacenamos en la variable orden*/
orden = Serial.read();
switch (orden){
case 'e': digitalWrite(led,HIGH);
break;
case 'E': digitalWrite(led,HIGH);
break;
case 'o': digitalWrite(led,LOW);
break;
case 'O': digitalWrite(led,LOW);
break;
default: digitalWrite(led,HIGH);
        delay(300);
        digitalWrite(led,LOW);
        delay(300);
        digitalWrite(led,HIGH);
        delay(300);
        digitalWrite(led,LOW);
        break;
}
}

El led me parpadea y abro la ventana para el serial (la lupa de arriba a la derecha). Y no me hace nada. El led parpadea continuamente. No veo donde está el error o si lo hago mal. (en la consola inferior me manda errores:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 32
at processing.app.tools.DiscourseFormat.appendFormattedLine(DiscourseFormat.java:194)
at processing.app.tools.DiscourseFormat.show(DiscourseFormat.java:99)
at processing.app.Editor$34.actionPerformed(Editor.java:1157)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 32
at processing.app.tools.DiscourseFormat.appendFormattedLine(DiscourseFormat.java:194)
at processing.app.tools.DiscourseFormat.show(DiscourseFormat.java:99)
at processing.app.Editor$34.actionPerformed(Editor.java:1157)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Muchas gracias de antemano.
Citar
#2
Te llega a abrir la ventana del serial¿? y con otro sketch¿?

El led parpadea porque entra en el case default, y viendo que los errores que te tira son de java, diría que es cosa del IDE. No veo nada raro en el código.
Citar
#3
Buenas a tod@s:

Por eso he puesto la duda, ya que el codigo lo he copiado del tutorial y debería de estar bien

¿Cuál es la solución para solventar el problema que comentas?

Muchas gracias de nuevo
Citar
#4
Descarga otra versión del IDE de arduino, prueba el sublime text2 con Stino.
Citar
#5
Como te dice jukillo tiene pinta de ser el IDE.
Borra el que tengas ahora y ponte el instalable: http://arduino.googlecode.com/files/ardu...indows.exe

Y el led te parpadea, en ciclos de 1 segundo, porque es el programa/sketch que viene grabado de serie, en que tengas el IDE funcionado y grabes el código que pusiste dejara de parpadear para comportarse como quieres Sonrisa
giltesa.com Mi blog personal sobre informática, electrónica, Arduino, bricolaje, etc.
Citar
#6
giltesa escribió:Como te dice jukillo tiene pinta de ser el IDE.
Borra el que tengas ahora y ponte el instalable: http://arduino.googlecode.com/files/ardu...indows.exe

Y el led te parpadea, en ciclos de 1 segundo, porque es el programa/sketch que viene grabado de serie, en que tengas el IDE funcionado y grabes el código que pusiste dejara de parpadear para comportarse como quieres Sonrisa

Buenas a tod@s:

Me instalado el IDE que comentas. Es el mismo que ya tenía. Pero lo he vuelto a instalar y a substituir por si acaso. Ahora lo volveré a probar si funciona correctamente el proyecto.

En el caso que no funcionase (sería lógico ya que es el mismo IDE y el codigo está correcto. Cúal podría ser el problema???
Citar
#7
Electromecánico escribió:
giltesa escribió:Como te dice jukillo tiene pinta de ser el IDE.
Borra el que tengas ahora y ponte el instalable: http://arduino.googlecode.com/files/ardu...indows.exe

Y el led te parpadea, en ciclos de 1 segundo, porque es el programa/sketch que viene grabado de serie, en que tengas el IDE funcionado y grabes el código que pusiste dejara de parpadear para comportarse como quieres Sonrisa

Buenas a tod@s:

Me instalado el IDE que comentas. Es el mismo que ya tenía. Pero lo he vuelto a instalar y a substituir por si acaso. Ahora lo volveré a probar si funciona correctamente el proyecto.

En el caso que no funcionase (sería lógico ya que es el mismo IDE y el codigo está correcto. Cúal podría ser el problema???


Reinstala el Java, si te sigue sin funcionar, aver si se arregla
Citar
#8
Buenas a tod@s:

He copiado otro proyecto:

// Pines digitales a los que conectamos nuestros LEDs

int led1=2;
int led2=3;
int led3=5;
int led4=7;

void setup(){ // Inicialización del programa
Serial.begin(9600); // Comienza la comunicación de Arduino con la PC
delay(1000);

pinMode(led1,OUTPUT); // Inicializa los pines digitales como salida, para controlar los LEDs
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
apagatodos(); // Invocación de la función, para comenzar con todos los LEDs apagados

}

void loop(){

if (Serial.available()){ // Chequea que se haya ingresado algo por teclado
char ch=Serial.read(); // Guarda en la variable ch un caracter ingresado
if ((ch=='1')||(ch=='2')||(ch=='3')||(ch=='4')||(ch=='5')){
int num= ch - '0'; // Conversión de tipo (de char a int)
conversion(num); // Convierte el número leído de teclado (entre 1 y 5) a número de pin correspondiente.
}
else
Serial.println("Numero erroneo"); // El valor ingresado por teclado es incorrecto.

}

}

void conversion(int led){ // LLama a la función cambialed(int ) con el número de pin correspondiente

switch (led) {
case 1:
cambialed(2);
break;
case 2:
cambialed(3);
break;
case 3:
cambialed(5);
break;
case 4:
cambialed(7);
break;
case 5:
apagatodos();
break;
}
}

void cambialed(int led) // Cambia el estado del número de pin recibido
{
if (digitalRead(led)==LOW){ // Si está apagado, lo enciende
Serial.println("Led encendido"); // Imprime en pantalla
digitalWrite(led,HIGH); // Enciende el LED
}

else{ // Si está encendido, lo apaga
Serial.println("Led apagado"); // Imprime en pantalla
digitalWrite(led,LOW);} // Apaga el LED
}



void apagatodos(){ // Apaga todos los LEDs.
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
Serial.println("Todos los leds están apagados"); // Imprime en pantalla
}1230123

Y ese me va correctamente, entonces.. cual es el problema con el proyecto anterior??? He cambiado de proyecto porque cerré el pc y no me acordé de guardar el esquema del circuito y no lo encuentro y por eso lo he cambiado. Pero también ha servido para comprobar que el IDE es correcto.

Conclusiones???
Citar
#9
Buenas a tod@s:

Comentandolo con otro compañero, me ha comentado que en el primer proyecto faltaba escribir "Serial.available", y por eso no funcionaba correctamente el código.

Muchas gracias de todos modos.
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Proyecto sckay 46 3,515 23-11-2015, 04:17 PM
Último mensaje: Iván