ejercicios 04/04/19

EJERCICIO 1) HACER PARPADEAR UN LED AZUL CADA 0.5 SEG

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

  1. include "mbed.h"
  2. include "tsi_sensor.h"

/*

  • Si se toca el slider (cerca de la zona izquierda)
  • enciende / apaga el led rojo
  • Para FRDM-KL25z
  • /
  1. if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
  2. define ELEC0 9
  3. define ELEC1 10
  4. elif defined (TARGET_KL05Z)
  5. define ELEC0 9
  6. define ELEC1 8
  7. else
  8. error TARGET NOT DEFINED
  9. 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

  1. include "mbed.h"
  2. include "tsi_sensor.h"

/*

  • Si se toca el slider (cerca de la zona izquierda)
  • enciende / apaga el led rojo
  • Para FRDM-KL25z
  • /
  1. if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
  2. define ELEC0 9
  3. define ELEC1 10
  4. elif defined (TARGET_KL05Z)
  5. define ELEC0 9
  6. define ELEC1 8
  7. else
  8. error TARGET NOT DEFINED
  9. 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)

  1. include "mbed.h"
  2. include "MMA8451Q.h"
  1. if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) PinName const SDA = PTE25; PinName const SCL = PTE24;
  2. elif defined (TARGET_KL05Z) PinName const SDA = PTB4; PinName const SCL = PTB3;
  3. elif defined (TARGET_K20D50M) PinName const SDA = PTB1; PinName const SCL = PTB0;
  4. else
  5. error TARGET NOT DEFINED
  6. endif
  1. 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.

  1. include "mbed.h"
  2. include "tsi_sensor.h"

/*

  • Si se toca el slider (cerca de la zona izquierda)
  • enciende / apaga el led rojo
  • Para FRDM-KL25z
  • /
  1. if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
  2. define ELEC0 9
  3. define ELEC1 10
  4. elif defined (TARGET_KL05Z)
  5. define ELEC0 9
  6. define ELEC1 8
  7. else
  8. error TARGET NOT DEFINED
  9. 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)

  1. include "mbed.h"
  2. include "tsi_sensor.h"

/*

  • Si se toca el slider (cerca de la zona izquierda)
  • enciende / apaga el led rojo
  • Para FRDM-KL25z
  • /
  1. if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
  2. define ELEC0 9
  3. define ELEC1 10
  4. elif defined (TARGET_KL05Z)
  5. define ELEC0 9
  6. define ELEC1 8
  7. else
  8. error TARGET NOT DEFINED
  9. 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.