EJEMPLOS CON ARDUINO
EJEMPLO_1
SENTENCIA IF y while
Recibir comandos por un canal serie usando “while” e if
Una aplicación muy practica del ciclo “while” es poder recibir a través del canal serie (podría ser cualquier otro
canal de comunicación) es recibir varios caracteres seguidos uno tras de otro y formar palabras calve o
comandos.
Recibimos letras:
char letra;
void setup() {
[Link](9800);
pinMode(13,OUTPUT); //inicializamos el pin 13 como salida digital
}
void loop() {
while([Link]()>0){
/* Debemos de abrir el serial monitor del IDE para enviar comando.
El bucle while terminará cuando presionemos la tecla enter.
*/
letra=[Link]();// Se lee el carácter introducido
delay(10);// El delay es necesario para no saturar el canal
}
if(letra=='A'){
[Link]("El comando fue A");
}
if(letra=='B'){
[Link]("El comando fue B");
}
if(letra=='C'){
digitalWrite(13,HIGH);// enciende LED
}
If(letra=='D'){
digitalWrite(13,LOW);//apaga LED
}
}
EJEMPLO_2
SENTENCIA IF, WHILE, SWITCH
En este ejemplo, encenderemos o apagaremos dos LEDs dependiendo del contenido de un mensaje
enviado en el monitor serie al Arduino. El programa utiliza las siguientes estructuras de control:
Switch Statement
If-else if- else
While Loop
LA PC DEBE DE ESTAR CONECTADO AL ARDUINO
Diagrama:
Los dos LEDs están conectados a dos pines de salida de Arduino, y el Arduino los enciende o apaga
usando declaraciones condicionales. Hay cuatro estados diferentes:
Si el serial data == 1, sólo se encenderá el LED verde.
Si el serial data ==2, sólo se encenderá el LED amarillo.
Si el serial data ==3, ambos LEDs se encenderán.
Si el serial data son iguales a cualquier otro valor, los LEDs se apagarán
Declaración de cambio por Switch
// USANDO SWITCH
const int green = 8; //led vede
const int yellow = 9; //led amarillo
char i; //variable auxiliar
void setup()
{
pinMode(green , OUTPUT); //como salidas
pinMode(yellow , OUTPUT);
[Link](9600); //para comunicación serie
}
void loop()
{
i = [Link](); // lectura del puerto serial
[Link](i); //escritura en el monitor serie
delay(50) ;
switch(i) // switch
{
case '1': //condición para el led verde
digitalWrite(green,HIGH);
digitalWrite(yellow,LOW);
delay(350);
break;
case '2': // condición para el led amarillo
digitalWrite(green,LOW);
digitalWrite(yellow,HIGH);
delay(350);
break;
case '3': //Condicion para ambos leds
digitalWrite(green,HIGH);
digitalWrite(yellow,HIGH);
delay(350);
break;
default: //leds apagados
digitalWrite(green,LOW);
digitalWrite(yellow,LOW);
break;
}
}
Usando declaraciones de If-Else
// Usando If - else
const int green = 8;
const int yellow = 9;
char i ;
void setup()
{
pinMode(green , OUTPUT); //salidas
pinMode(yellow , OUTPUT);
[Link](9600) ;
}
void loop()
{
i = [Link](); // lecturas del puerto serial
[Link](i);
delay(50);
//sentencias
if(i=='1') //si i es equivalente a 1
{
digitalWrite(green,HIGH);
digitalWrite(yellow,LOW);
delay(350);
}
else if(i=='2') //si i es equivalente a 2
{
digitalWrite(green,LOW);
digitalWrite(yellow,HIGH);
delay(350);
}
else if(i=='3') //si i es equivalente a 3
{
digitalWrite(green,HIGH);
digitalWrite(yellow,HIGH);
delay(350);
}
else //caso contrario
{
digitalWrite(green,LOW) ;
digitalWrite(yellow,LOW) ;
}
}
Usando while Loops
// Usando while Loop
const int green = 8 ;
const int yellow = 9 ;
char i ;
void setup()
{
pinMode(green , OUTPUT) ; //salidas
pinMode(yellow , OUTPUT) ;
[Link](9600) ;
}
void loop()
{
i = [Link]() ; // lectura del puerto serial- monitor serie
[Link](i) ;
delay(50) ;
digitalWrite(green,LOW) ;
digitalWrite(yellow,LOW) ;
while(i=='1') //ciclo while_mientras i sea equivalente a 1
{
digitalWrite(green,HIGH) ;
digitalWrite(yellow,LOW) ;
i = [Link]() ;
[Link](i) ;
delay(350) ;
}
while(i=='2') //ciclo while_mientras i sea equivalente a 2
{
digitalWrite(green,LOW) ;
digitalWrite(yellow,HIGH) ;
i = [Link]() ;
[Link](i) ;
delay(350) ;
}
while(i=='3') //ciclo while_mientras i sea equivalente a 3
{
digitalWrite(green,HIGH) ;
digitalWrite(yellow,HIGH) ;
i = [Link]() ;
[Link](i) ;
delay(350) ;
}
}
EJEMPLO_3
CONTADOR OPERADO POR UN PULSADOR DIGIITAL EN EL PIN 3 DEL ARDUINO UNO,
UTILIZANDO EL MONITOR SERIE PARA VISUALIZAR LOS DATOS DEL CONTEO_PARA
PROTEUS UTILIZAR EN INSTRUMENTOS – VIRTUAL TERMINAL (conectando al RX y TX del
arduino).
int entrada=3; //pin 3 del arduino
int cont=0;
int estado=0;
void setup() {
[Link](9600);
pinMode(entrada,INPUT);
[Link]("contador iniciado");
}
void loop() { //bucle
estado = digitalRead(entrada); //lectura digital en el pin 3
if(estado == HIGH){ //SI ESTADO ES EQUIVALENTE A 1
cont++; //CONTADOR DE INCREMENTO EN +1
while(estado == HIGH){ //antirebote (MIENTRAS ESTADO SEA EQUIVALENTE A UN ALTO - 1)
estado = digitalRead(entrada); //lectura digital en el pin 3
}
}
[Link](“VALOR: ”); //IMPRIMIR CARACTER
[Link](cont); //IMPRIMIR VALORES DEL CONTADOR
[Link](); //SALTO DE LINEA
if(cont > 20){ //SI CONT SUPERA EL VALOR DE 20
[Link]("REINICIANDO CONTEO");
cont=0; //cont a valores iniciales
}
}