ejercicios 04/04/19
EJERCICIO 1) HACER PARPADEAR UN LED AZUL CADA 0.5 SEG
- include "mbed.h"
DigitalOut myled(LED3);
int main() { while(1) { myled = 1; wait(0.5); myled = 0; wait(0.5); } }
EJERCICIO 2)HACER PARPADEAR UN LED VERDE CADA 0.25 SEG
- include "mbed.h"
DigitalOut myled(LED2);
int main() { while(1) { myled = 1; wait(0.25); myled = 0; wait(0.75); } }
EJERCICIO 2.1)HACER PARPADEAR UN LED VERDE CADA 0.25 SEG CON TICKER
- include "mbed.h" void invierte(); DigitalOut led_verde(LED_GREEN); Ticker ti; int main() { ti.attach(&invierte, 0.25); while(1) {
} } void invierte() {
led_verde=!led_verde;
}
EJERCICIO 3) HACER LA SGTE SECUENCIA:[ LEDROJO ON (0.1SEG)-LEDROJO OFF (0.1SEG)] Y VUELVE A EMPEZAR
- include "mbed.h"
DigitalOut myled(LED1);
int main() { while(1) { myled = 0; wait(0.1); myled = 1; wait(0.1); } }
EJERCICIO 3.1) HACER LA SGTE SECUENCIA CON TICKER:[ LEDROJO ON (0.1SEG)-LEDROJO OFF (0.1SEG)] Y VUELVE A EMPEZAR
- include "mbed.h" void invierte(); DigitalOut led_verde(LED_GREEN); Ticker ti; int i=0; int main() { ti.attach(&invierte, 0.1); while(1) {
} } void invierte() { i++; if(i==1) { led_verde=1; } if((i>=2) && (i<10)) { led_verde=0; } if(i==10) { led_verde=0; i=0; }
EJERCICIO 4) HACER LA SGTE SECUENCIA CON TICKER:[[ LEDROJO ON (0.1SEG)-LEDROJO OFF (0.9SEG)X5]-LEDVERDE ON 0.2SEG-LEDVERDE OFF 0.2SEG ] Y VUELVE A EMPEZAR
- include "mbed.h" void invierte(); DigitalOut led_red(LED1); DigitalOut led_verde(LED_GREEN); Ticker ti; int i=0, a=0; int main() { ti.attach(&invierte, 0.1); while(1) {
} } void invierte() { i++; while(a<5) { if(i==1) { led_red=1; } if((i>=2) && (i<10)) { led_red=0; } if(i==10) { led_red=0; i=0; } a++; }
if((i==0) && (a==5)) {
led_verde=1; if(i==2) { led_verde=0; a=0; } }
led_red=!led_red; led_verde=!led_verde;
}
EJEMPLO: Si se toca el slider (cerca de la zona izquierda) , enciende / apaga el led rojo
- include "mbed.h"
- include "tsi_sensor.h"
/*
- Si se toca el slider (cerca de la zona izquierda)
- enciende / apaga el led rojo
- Para FRDM-KL25z
- /
- if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
- define ELEC0 9
- define ELEC1 10
- elif defined (TARGET_KL05Z)
- define ELEC0 9
- define ELEC1 8
- else
- error TARGET NOT DEFINED
- endif
DigitalOut led(LED_RED);
float slider;
int main(void) { TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
while (true) { slider = tsi.readPercentage(); printf("%f \n", slider); if (slider > 0.4) led = !led;
wait(0.2); } }
EJEMPLO 2: DEPENDIENDO DONDE TOQUE TSI, IMPRIME EMI LA MEJOR
- include "mbed.h"
- include "tsi_sensor.h"
/*
- Si se toca el slider (cerca de la zona izquierda)
- enciende / apaga el led rojo
- Para FRDM-KL25z
- /
- if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
- define ELEC0 9
- define ELEC1 10
- elif defined (TARGET_KL05Z)
- define ELEC0 9
- define ELEC1 8
- else
- error TARGET NOT DEFINED
- endif
DigitalOut led(LED_RED);
float slider;
int main(void) { TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
while (true) { slider = tsi.readPercentage(); printf("%f \n", slider); if (slider > 0.4) { led = !led; } if(slider>0.8) { printf("emi la mejor\n\r"); } wait(0.2); } }
EJERCICIO 4: Mostrar en una terminal cada 1s los valores de x, y, z del acelerómetro (Usar Ticker)
- include "mbed.h"
- include "MMA8451Q.h"
- if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) PinName const SDA = PTE25; PinName const SCL = PTE24;
- elif defined (TARGET_KL05Z) PinName const SDA = PTB4; PinName const SCL = PTB3;
- elif defined (TARGET_K20D50M) PinName const SDA = PTB1; PinName const SCL = PTB0;
- else
- error TARGET NOT DEFINED
- endif
- define MMA8451_I2C_ADDRESS (0x1d<<1) Ticker emi; float x, y, z; void funcion(); int main(void) { emi.attach(&funcion,1); MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); PwmOut rled(LED1); PwmOut gled(LED2); PwmOut bled(LED3);
printf("MMA8451 ID: %d\n", acc.getWhoAmI());
while (true) {
x = abs(acc.getAccX()); y = abs(acc.getAccY()); z = abs(acc.getAccZ()); rled = 1.0f - x; gled = 1.0f - y; bled = 1.0f - z;
} } void funcion() {
printf("X: %1.2f Y: %1.2f Z: %1.2f\n", x, y, z); }
EJERCICIO 6: Importar el proyecto de ejemplo de uso del TSI, modificarlo para usar el sensor touch como pulsador de un toque para encender/apagar el Led Verde cuando lo presionan cerca del medio (el valor de la lectura del TSI tiene un valor cercano a 0,5) usar un gap de 0,15 para cada lado.
- include "mbed.h"
- include "tsi_sensor.h"
/*
- Si se toca el slider (cerca de la zona izquierda)
- enciende / apaga el led rojo
- Para FRDM-KL25z
- /
- if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
- define ELEC0 9
- define ELEC1 10
- elif defined (TARGET_KL05Z)
- define ELEC0 9
- define ELEC1 8
- else
- error TARGET NOT DEFINED
- endif
DigitalOut led(LED_GREEN);
float slider;
int main(void) { TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
while (true) { slider = tsi.readPercentage(); printf("%f \n", slider); if ((slider > 0.45)&&(slider < 0.65)) { led = !led; }
wait(0.15); } }
EJERCICIO 7: Modificar el punto 6 y hacer que un extremo controle el Led Rojo, el medio el Led Verde y el extremo opuesto el Led Azul (usar el mismo gap del punto anterior)
- include "mbed.h"
- include "tsi_sensor.h"
/*
- Si se toca el slider (cerca de la zona izquierda)
- enciende / apaga el led rojo
- Para FRDM-KL25z
- /
- if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
- define ELEC0 9
- define ELEC1 10
- elif defined (TARGET_KL05Z)
- define ELEC0 9
- define ELEC1 8
- else
- error TARGET NOT DEFINED
- endif
DigitalOut led(LED_RED); DigitalOut led1(LED_GREEN); DigitalOut led2(LED_BLUE); float slider;
int main(void) { TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
while (true) { slider = tsi.readPercentage(); printf("%f \n", slider); if (slider < 0.45) { led = 0; led1 = 1; led2 = 1; } if ((slider > 0.45)&&(slider < 0.65)) { led = 1; led1 = 0; led2 = 1; } if (slider > 0.65) { led = 1; led1 = 1; led2 = 0; }
wait(0.15); } }
Please log in to post comments.