Go Down

Topic: Ayuda led que parpadea segun el puerto serie (Read 932 times) previous topic - next topic

pavlete

Buscando por internet encontre este ejemplo:

/*
* Serial Read Blink
* -----------------
* Turns on and off a light emitting diode(LED) connected to digital  
* pin 13. The LED will blink the number of times given by a
* single-digit ASCII number read from the serial port.
*
* Created 18 October 2006
* copyleft 2006 Tod E. Kurt <tod@todbot.com>
* http://todbot.com/
*
* based on "serial_read_advanced" example
*/

int ledPin = 13;   // select the pin for the LED
int val = 0;       // variable to store the data from the serial port

void setup() {
 pinMode(ledPin,OUTPUT);    // declare the LED's pin as output
 Serial.begin(9600);        // connect to the serial port
}

void loop () {
 val = Serial.read();      // read the serial port

 // if the stored value is a single-digit number, blink the LED that number
 if (val > '0' && val <= '9' ) {
   val = val - '0';          // convert from character to number
   for(int i=0; i<val; i++) {
     Serial.println("blink!");
     digitalWrite(ledPin,HIGH);
     delay(150);
     digitalWrite(ledPin, LOW);
     delay(150);
   }
   //Serial.println();
 }
}

Lo que intento es modificar el programa para que me permita hacer parpadear el led de 0 a 6000 veces pero no logro hacer que lo haga más de 9 veces.

e intentado:

if (val > '0' && val <= '6000' )

pero naa.

Supongo que la solución no es muy complicada, pero recién iniciado en el mundillo, ando perdido.

Alguna idea?

pavlete

Resuelto!.

La solución era bastante fácil usando simplemessagesystem y el codigo siguiente:
Code: [Select]
#include <SimpleMessageSystem.h>

int ledPin = 12;   // Pin que se enciende
int val = messageGetInt();

void setup() {
 pinMode(ledPin,OUTPUT);    
 Serial.begin(9600);        
Serial.println("Numero de impulsos?");
}

void loop () {

 if (messageBuild() > 0) {   // si el mensaje se recibe completo (con su salto de carro)
 val = messageGetInt();      // la variable toma el valor del entero
   for(int i=0; i<val; i++) { // repite la lineas inferiores el número de veces indicado por la variable
     digitalWrite(ledPin,HIGH);
     delay(150);
     digitalWrite(ledPin, LOW);
     delay(150);
   }

   Serial.print("Impulsos= ");
   Serial.println(val, DEC);
   Serial.println("que quieres ahora??");
 }

}

Go Up