This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 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.
  Responder
#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.
  Responder
#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
  Responder
#4
Descarga otra versión del IDE de arduino, prueba el sublime text2 con Stino.
  Responder
#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.
  Responder
#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???
  Responder
#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
  Responder
#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???
  Responder
#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.
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  Alguien me podría ayudar con este proyecto ocmonpa 1 621 16-01-2021, 11:18 PM
Último mensaje: asesorplaza1
  Proyecto tablet pc con arduino crivi01 3 1,883 23-10-2015, 08:13 PM
Último mensaje: jukillo
  Piedra, papel y tijera con bluetooth (Proyecto Arduino) Asclem 0 1,419 14-07-2015, 06:24 PM
Último mensaje: Asclem
  Proyecto alimentar 66 leds con Arduino Nano Electromecánico 2 1,989 19-03-2015, 01:31 PM
Último mensaje: sifou
  ayuda con proyecto del garduino wuasichu 15 3,403 10-09-2014, 07:51 AM
Último mensaje: wuasichu