示例#1
0
void LED_board::light_row(int row_index){
    if((row_index < 0) || (row_index > (NUM_ROW-1))) return;
    for(int i = 0; i < NUM_ROW; i++){
        for(int j = 0; j < NUM_COL; j++){
            if(i == row_index){
                set_LED(i, j, true); //turn on
            }else{
                set_LED(i, j, false); //turn off
            }
        }
    }
}
示例#2
0
void LED_board::light_col(int col_index){
    if((col_index < 0) || col_index > (NUM_COL - 1)) return;
    for(int i = 0; i < NUM_ROW; i++){
        for(int j = 0; j < NUM_COL; j++){
            if(j == col_index){
                set_LED(i, j, true); //turn on
            }else{
                set_LED(i, j, false); //turn on
            }
        } 
    }
}
示例#3
0
void LED_board::set_panel(bool state){
    for(int i = 0; i < NUM_ROW; i++){
        for(int j = 0; j < NUM_COL; j++){
            set_LED(i,j,state);
        }
    }
}
示例#4
0
void main(void) {
    init();
    while (1) {
        send_UART_word(exchange_SPI_2char(PIXY_SYNC, DUMMY));
        set_LED();
        
    }
    return;
}
示例#5
0
int main(void)
{
    uint16_t time = 0;
    led_color_t col;
    
    // dog
    WDTCTL = WDTPW + WDTHOLD;     
    
    // set vcore to highest value, mclk 24 MHz
    SetVCoreUp(0x01);
    SetVCoreUp(0x02);  
    SetVCoreUp(0x03);  
    // hw init
    hardware_clock_init();
    init_spi_master();
    timer_init();
    
    // internal LED and debug pins
    P1DIR |= BIT0;                            
    P2DIR |= BIT2;
    
    // channel 17 = UCATXIFG as trigger for DMA
    DMACTL0 = 0;               
    DMACTL1 = 17;               
    DMACTL2 = 0;               
    DMACTL3 = 0;               
    // DMA2 configuration
    // bytewise access for source and destination, increment source, single transfer
    DMA2CTL = DMADT_0 | DMASRCINCR_3 | DMASRCBYTE | DMADSTBYTE | DMAIE; 
    DMA2SA = (uint16_t)(&led_raw[1]); // source
    DMA2DA = (uint16_t)&UCA0TXBUF;    // destination
    DMA2SZ = SIZE_OF_LED_ARRAY-1;     // size in bytes
    
    __eint();
    // all set, now let the DMA run
    DMA2CTL |= DMAEN ;
    UCA0TXBUF = led_raw[0];
    while (1)                
    {
        time++;
        P1OUT ^= BIT0;
        LPM0;
        // DMA transfer has finished, you may calculate LED updates now
        // timer A is triggered app. every 10msec, so you have around 6msec time
        // to update the strip
        
        // this is a color fading thing
        for (uint8_t i=0; i<NR_OF_LEDS; i++){
            col.g = (time % 512) + i*4;
            col.r = (time % 256) + i;
            col.b = (time / 1024) + (NR_OF_LEDS - i);
            set_LED(i,&col);
        }
    }
}
示例#6
0
文件: o3.c 项目: Catuna/TDT4160
//PB1 press handler
void GPIO_EVEN_IRQHandler(void) {
    switch (state) {
    	case HOURS_STATE:
    		if(hours + minutes + seconds == 0) {
    			state = ALARM_STATE;
    			set_LED(1);
    		}
    		else
    			state++;
    		break;
    	case ALARM_STATE:
    		state = SECONDS_STATE;
    		set_LED(0);
    		break;
    	case COUNTDOWN_STATE:
    		break;
    	default:
    		state++;
    };

    GPIO_map->IFC = 1<<10;
}
示例#7
0
文件: o3.c 项目: Catuna/TDT4160
void SysTick_Handler(void) {
    switch (state) {
		case COUNTDOWN_STATE:
			seconds--;
    		if(hours == 0 && minutes == 0 && seconds == 0) {
    			state = ALARM_STATE;
    			set_LED(1);
    		}
			if(seconds == -1) {
				minutes--;
				seconds = 59;
				if(minutes == -1) {
					hours--;
					minutes = 59;
				}
			}
    };
}
示例#8
0
文件: httpUtil.c 项目: Wiznet/W7500P
uint8_t predefined_set_cgi_processor(uint8_t * uri_name, uint8_t * uri, uint8_t * buf, uint16_t * len)
{
	uint8_t ret = 1;	// ret = '1' means 'uri_name' matched
	uint8_t val = 0;

	if(strcmp((const char *)uri_name, "todo.cgi") == 0)
	{
		// to do
		;//val = todo(uri);
		//*len = sprintf((char *)buf, "%d", val);
	}
	// Digital I/O; dio_s, dio_d
	else if(strcmp((const char *)uri_name, "set_LED.cgi") == 0)
	{
		val = set_LED(uri);
		*len = sprintf((char *)buf, "%d", val);
	}	
	else
	{
		ret = 0;
	}

	return ret;
}
示例#9
0
文件: main.c 项目: busmaster/homebus
/*-----------------------------------------------------------------------------
*  program start
*/
int main(void) {                      

    int     sioHandle;
    uint8_t i;
    uint8_t u8;

    MCUSR = 0;
    wdt_disable();

    /* get module address from EEPROM */
    sMyAddr = eeprom_read_byte((const uint8_t *)MODUL_ADDRESS);
    for (i = 0; i < NUM_BUTTON_EVENT_ADDRESSES; i++) {
        sMySwitchAddr[i] = eeprom_read_byte((const uint8_t *)(BUTTON_EVENT_ADRESS_BASE + i));
    }
   
    PortInit();
    TimerInit();
    SioInit();
    SioRandSeed(MY_ADDR);
    sioHandle = SioOpen("USART0", eSioBaud9600, eSioDataBits8, eSioParityNo, 
                        eSioStopBits1, eSioModeHalfDuplex);
    SioSetIdleFunc(sioHandle, IdleSio);
    SioSetTransceiverPowerDownFunc(sioHandle, BusTransceiverPowerDown);

    BusTransceiverPowerDown(true);
   
    BusInit(sioHandle);
    spRxBusMsg = BusMsgBufGet();

    /* enable global interrupts */
    ENABLE_INT;  
    i2c_slave(SLAVE_ADRESSE);

    button_register = 0;

    init_BJ(SLAVE_ADRESSE);

    for (i = 0; i < NR_OF_LEDS; i++) {
        u8 = eeprom_read_byte((const uint8_t *)(COLOR_LED_BASE + i));
        set_LED(i, u8);
        sNewLedData[i / 2] |= (u8 & 0x0f) << ((i % 2) ? 4 : 0);
    }

    i2c_slave(SLAVE_ADRESSE);

    SendStartupMsg();
   
    while (1) { 
        Idle();
        if (send_startup == 1) {
            init_BJ(SLAVE_ADRESSE);
            for (i = 0; i < NR_OF_LEDS; i++) {
                set_LED(i, eeprom_read_byte((const uint8_t *)(COLOR_LED_BASE + i)));
            }
        }
        sInputState = button_register; 
        ProcessButton(sInputState);

        ProcessBus();

        for (i = 0; i < BUS_SW16_LED_SIZE_SET_VALUE; i++) {
            if ((sNewLedData[i] & 0x0f) != (sLedData[i] & 0x0f) ) { // linke LED
                set_LED(i * 2, sNewLedData[i] & 0x0f);
                i2c_slave(SLAVE_ADRESSE);
            }
            if ((sNewLedData[i] & 0xf0) != (sLedData[i] & 0xf0) ) { // rechte LED
                set_LED(i * 2 + 1, (sNewLedData[i] & 0xf0) >> 4);
                i2c_slave(SLAVE_ADRESSE);
            }
            sLedData[i] = sNewLedData[i];
        }
    }
示例#10
0
void LED_board::turn_on_line(int num_pts, int *points){
    for(int i = 0; i <= num_pts * 2; i += 2){
       set_LED(points[i], points[i+1], true); //turns on
    }
}
示例#11
0
void LED_board::set_col(int col_index, bool state){

    for(int i = 0; i < NUM_ROW; i++){
        set_LED(i, col_index, state);
    }
}
示例#12
0
void LED_board::set_row(int row_index, bool state){
    for(int j = 0; j < NUM_COL; j++){
        set_LED(row_index, j, state);
    }
}