void ActivarLeds(int valor){ if((valor & (1<<0))==(1<<0)){ Chip_GPIO_SetValue(LPC_GPIO_PORT, 5,(1<<0)); }else{ Chip_GPIO_ClearValue(LPC_GPIO_PORT, 5,(1<<0)); } if((valor & (1<<1))==(1<<1)){ Chip_GPIO_SetValue(LPC_GPIO_PORT, 5,(1<<1)); }else{ Chip_GPIO_ClearValue(LPC_GPIO_PORT, 5,(1<<1)); } if((valor & (1<<2))==(1<<2)){ Chip_GPIO_SetValue(LPC_GPIO_PORT, 5,(1<<2)); }else{ Chip_GPIO_ClearValue(LPC_GPIO_PORT, 5,(1<<2)); } if((valor & (1<<3))==(1<<3)){ Chip_GPIO_SetValue(LPC_GPIO_PORT, 0,(1<<14)); }else{ Chip_GPIO_ClearValue(LPC_GPIO_PORT, 0,(1<<14)); } if((valor & (1<<4))==(1<<4)){ Chip_GPIO_SetValue(LPC_GPIO_PORT, 1,(1<<11)); }else{ Chip_GPIO_ClearValue(LPC_GPIO_PORT, 1,(1<<11)); } if((valor & (1<<5))==(1<<5)){ Chip_GPIO_SetValue(LPC_GPIO_PORT, 1,(1<<12)); }else{ Chip_GPIO_ClearValue(LPC_GPIO_PORT, 1,(1<<12)); } }
/** @brief funcion que lee los datos del sensor DHT22 * primero realiza la inicializacion con los tiempos especificados * *luego lee 40 bits de datos que envia el sensor * *@param dhthum parametro pasado como referencia donde se modificara el valor de la humedad *@param dhttemp parametro pasado como referencia donde se modificara el valor de la temperatura */ void leer_dht22(float *dhthum,float *dhttemp){ int dht_pin_in; float dhth,dhtt; int i; byte dht22_dat[5],dht22_pin_checksum; for(i=0;i<5;i++){ dht22_dat[i]=0; } //START SIGNAL Chip_SCU_PinMux(dht22_port,dht22_pin,SCU_MODE_PULLUP | SCU_MODE_ZIF_DIS,FUNC0); //dth22 como output Chip_GPIO_SetDir(LPC_GPIO_PORT,dht22_gpioPort,(1<<dht22_gpioPin),!0); dht22_delay_us(20); Chip_GPIO_ClearValue(LPC_GPIO_PORT,dht22_gpioPort,(1<<dht22_gpioPin)); dht22_delay_ms(5); Chip_GPIO_SetValue(LPC_GPIO_PORT,dht22_gpioPort,(1<<dht22_gpioPin)); dht22_delay_us(30); //WAIT RESPONSE Chip_SCU_PinMux(dht22_port,dht22_pin,SCU_MODE_PULLUP | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS,FUNC0); Chip_GPIO_SetDir(LPC_GPIO_PORT,dht22_gpioPort,(1<<dht22_gpioPin),!1);//dth22 como input dht_pin_in=Chip_GPIO_GetPinState(LPC_GPIO_PORT,dht22_gpioPort,dht22_gpioPin); if(dht_pin_in){ ciaaPOSIX_printf("Error de inicializacion nro 1"); } dht22_delay_us(80); dht_pin_in=Chip_GPIO_GetPinState(LPC_GPIO_PORT,dht22_gpioPort,dht22_gpioPin); if(!dht_pin_in){ ciaaPOSIX_printf("Error de inicializacion nro 1"); } dht22_delay_us(70); for(i=0;i<5;i++){ dht22_dat[i]=leer_datos_dht(); } dht22_pin_checksum= dht22_pin_dat[0]+dht22_pin_dat[1]+dht22_pin_dat[2]+dht22_pin_dat[3]; if(dht22_pin_dat[4]!=dht22_pin_checksum){ ciaaPOSIX_printf("\r\nDHT checksum error"); } dhth = (dht22_dat[0]<<8) | dht22_dat[1]; dhth /= 10; dhtt = (dht22_dat[2]<<8) | dht22_dat[3]; dhtt /= 10; *dhttemp = dhtt; *dhthum = dhth; }
/** \brief Main function * * This is the main entry point of the software. * * \returns 0 * * \remarks This function never returns. Return value is only to avoid compiler * warnings or errors. */ int main(void) { Chip_SCU_PinMux(1,0,MD_PUP|MD_EZI|MD_ZI,FUNC0); /* GPIO0[4], SW1 */ Chip_SCU_PinMux(1,1,MD_PUP|MD_EZI|MD_ZI,FUNC0); /* GPIO0[8], SW2 */ Chip_SCU_PinMux(1,2,MD_PUP|MD_EZI|MD_ZI,FUNC0); /* GPIO0[9], SW3 */ Chip_SCU_PinMux(1,6,MD_PUP|MD_EZI|MD_ZI,FUNC0); /* GPIO1[9], SW4 */ Chip_GPIO_SetDir(LPC_GPIO_PORT, 0,(1<<4)|(1<<8)|(1<<9),0); Chip_GPIO_SetDir(LPC_GPIO_PORT, 1,(1<<9),0); /* LEDs */ Chip_SCU_PinMux(2,0,MD_PUP,FUNC4); /* GPIO5[0], LED0R */ Chip_SCU_PinMux(2,1,MD_PUP,FUNC4); /* GPIO5[1], LED0G */ Chip_SCU_PinMux(2,2,MD_PUP,FUNC4); /* GPIO5[2], LED0B */ Chip_SCU_PinMux(2,10,MD_PUP,FUNC0); /* GPIO0[14], LED1 */ Chip_SCU_PinMux(2,11,MD_PUP,FUNC0); /* GPIO1[11], LED2 */ Chip_SCU_PinMux(2,12,MD_PUP,FUNC0); /* GPIO1[12], LED3 */ Chip_GPIO_SetDir(LPC_GPIO_PORT, 5,(1<<0)|(1<<1)|(1<<2),1); Chip_GPIO_SetDir(LPC_GPIO_PORT, 0,(1<<14),1); Chip_GPIO_SetDir(LPC_GPIO_PORT, 1,(1<<11)|(1<<12),1); Chip_GPIO_ClearValue(LPC_GPIO_PORT, 5,(1<<0)|(1<<1)|(1<<2)); Chip_GPIO_ClearValue(LPC_GPIO_PORT, 0,(1<<14)); Chip_GPIO_ClearValue(LPC_GPIO_PORT, 1,(1<<11)|(1<<12)); /*Hardware GPIO initialization (leds, buttons ...)*/ /* perform the needed initialization here */ while(1) { /* add your code here */ Chip_GPIO_ClearValue(LPC_GPIO_PORT, 5, 1<<13); Chip_GPIO_SetValue(LPC_GPIO_PORT, 5, 1<<13); } return 0; }