Show Posts
Pages: [1]
1  International / Software / Re: Pregunta simple. on: November 17, 2012, 05:57:26 pm
Listo. Ya lo solucione, en efecto el problema me lo estaba dando el código ascii 10.

Gracias por toda tu ayuda.
2  International / Software / Re: Pregunta simple. on: November 17, 2012, 04:16:48 pm
De nuevo gracias.

La funcion " prenderled()" la he incluido aparte puesto que posteriormente incluiré mas funciones, en realidad el programa va para mas largo y lo tengo que presentar, asuntos de estética realmente.
La band=0 no corresponde a ningún pulsador, solo la uso para que imprima la primera linea una sola vez, es decir que me pida la contraseña una sola vez y me la vuelva a pedir solo cuando se apague el led.

Si te fijas bien el "else" de imprimir contraseña errónea no corresponde al "if serial available() > 0" (de hecho el "if serial available() > 0" no lleva ningún "else" en el código) sino que corresponde al "if(lectura==contra)", puesto que como tu has dicho en dado caso me imprimiría la leyenda "contraseña errónea" incluso cuando no hay lectura en el Puerto serie, cosa que el programa no hace.

Sin embargo tienes razón, el problema seguramente lo debe de estar dando el retorno de carro, puesto que el programa lee en el serial un código que no corresponde al de la contraseña imprime entonces el "contraseña errónea". Seguiré modificando el código a ver que obtengo.

Gracias por el ejemplo adjunto.
Saludos.
3  International / Software / Re: Pregunta simple. on: November 17, 2012, 12:27:00 am
Antes que nada muchas gracias por responder. Sin embargo no me queda del todo claro lo que me dices, según yo he puesto el condicional como lo planteas la segunda vez. De haberlo puesto como la primera vez en todo caso siempre que no haya lectura en el puerto serie debería de imprimirme la leyenda "contraseña errónea" ¿no?
He puesto un condicional "if(lectura==contra)" el cual precisamente pregunta si lo que hay en el puerto serie es correcto de ser incorrecto me debe de mandar al "else" donde se imprime la contraseña errónea, sin embargo pareciera como si entrara al "if" y posteriormente al "else" también, o en todo caso dos veces al "else"

Una disculpa de antemano si no entredí tu respuesta. Gracias por tu tiempo.
4  International / Software / Pregunta simple. on: November 16, 2012, 01:38:10 am
Hola.

Soy novata con esto del arduino, se un poco de programación C pero aun así estoy teniendo un problema muy simple. Espero que puedan ayudarme.
Estoy realizando un código para prender y apagar un led cuando se ingrese una contraseña por el serial monitor, en este caso la contraseña es '1' pero posteriormente en el desarrollo del programa el usuario podrá cambiarla haciendo uso de un teclado matricial. El problema que tengo ahora es que en efecto el led se apaga y se prende adecuadamente, pero también se imprime la instrucción de contraseña errónea en el Serial monitor (aun después de darle la contraseña correcta), cuando la contraseña que ingreso es incorrecta la leyenda se imprime dos veces. No se a que se deba esto, agradecería un poco de ayuda, ocupo que la leyenda solo se imprima en el serial monitor cuando la contraseña es errónea y en ese caso que se imprima una sola vez.

Aquí les dejo el código que tengo:

Code:
/*Programa para prender un Led dada una contraseña en el Serial Monitor */

const int ledPin = 12; // Led al pin 12
int contra='1', band=0, val;      //variable para leer el dato
void prenderled(void);

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  prenderled();
}

void prenderled()
{
if(band==0){
  Serial.println("\n Ingrese contrasena:");
  band=1;}
 
   if (Serial.available() > 0) {
     int lectura = Serial.read();
     
     if(lectura==contra)
    {
      val=digitalRead(ledPin);
      if(val==HIGH){
        digitalWrite(ledPin, LOW); 
        Serial.println("\n Led apagado");
        band=0;
        Serial.println(lectura);
        }
      else{
        digitalWrite(ledPin, HIGH);
        Serial.println("\n Led prendido");
        Serial.println(lectura);
        }
    }
    else
    {
     Serial.println("\nContrasena erronea");
     Serial.println(lectura);
    } 
     
  }
}

Gracias.
Pages: [1]