Exemple #1
0
/*=============================================================================
 * MENU STUFF
 */
static bool MENUinput(boxC& b)
{
 switch(inputK()) {
    case 27: exit(0); break;

    case 32: BLOrelo(); break;

    case 'a': displayRotate(0.0, -5.0, 0.0); break;
    case 'd': displayRotate(0.0, +5.0, 0.0); break;

    case 'w': displayRotate(+5.0, 0.0, 0.0); break;
    case 's': displayRotate(-5.0, 0.0, 0.0); break;

    case 'q': displayRotate( 0.0, 0.0,+5.0); break;
    case 'e': displayRotate( 0.0, 0.0,-5.0); break;

    case 'z': BLOcolor(+1); break;
    case 'x': BLOcolor(-1); break;

    case '+': displaySpeed(+1); break;
    case '-': displaySpeed(-1); break;

//    case '.': displaySwitchMode(); break;

    case 'm': BLOunit(+1); break;
    case 'n': BLOunit(-1); break;

    case 'r': BLOske(0, +5.0); break;
    case 'f': BLOske(0, -5.0); break;
    case 't': BLOske(1, +5.0); break;
    case 'g': BLOske(1, -5.0); break;
    case 'y': BLOske(2, +5.0); break;
    case 'h': BLOske(2, -5.0); break;
    case 'u': BLOske(3, +5.0); break;
    case 'j': BLOske(3, -5.0); break;
    case 'i': BLOske(4, +5.0); break;
    case 'k': BLOske(4, -5.0); break;
    case 'o': BLOske(5, +5.0); break;
    case 'l': BLOske(5, -5.0); break;

    default: break;
 }

 switch(inputE()) {
/*    case GLUT_KEY_UP:	visualScroll( 0.0, +sp); break;
    case GLUT_KEY_DOWN: visualScroll( 0.0, -sp); break;
    case GLUT_KEY_LEFT: visualScroll( -sp, 0.0); break;
    case GLUT_KEY_RIGHT:visualScroll( +sp, 0.0); break;*/
//    case GLUT_KEY_F1: quadSwitchSurfaceMode(); break;
//    case GLUT_KEY_F2: quadSwitchWireMode(); break;
    default: break;
 }

 // buttons
/* bt_t *a;
 if(key) if(a = guiBtKey(MENUbtset, key)) a->call(a);
 if(a = guiBtMouse(MENUbtset, guiMouseX(), guiMouseY()))
    if(a->call) a->call(a);
*/
}
void startUp ()
{
	display(-2);
	displaySpeed(1,0);
	setSpeed(1,0);
	_delay_ms(5);
	
	display(-1);
	_delay_ms(5);
	
	for (int i = 1; i < 5; i++)
	{
		display(-2);
		displaySpeed(i,1);
		setSpeed(i,1);
		_delay_ms(5);
		
		display(-1);
		_delay_ms(5);
	}
	for (int i = 4; i > 0; i--)
	{
		display(-2);
		displaySpeed(i,1);
		setSpeed(i,1);
		_delay_ms(5);
		
		display(-1);
		_delay_ms(5);
	}
}
int main(void)
{
	init();
	startUp();
	for (int i = 1; i < 4; i++) LEEnabel(i);
	while (1)
	{
		fireMode = getFireMode();
		newMagSize = getMag();			//save the Mag size 
		if(newMagSize == -1) 
		{
			newMag = 0;					//Mag-slot empty 
			ammoCounter = -1;
		}
		
		if(((newMag == 0) & !(newMagSize == -1)))		//Mag-slot not empty anymore 
		{
			ammoCounter = newMagSize;
			newMag = 1;
		}
		if(adcOn == 0)		display(ammoCounter);
		if(adcOn == 1)		
		{
			volt |= (ADCL);
			volt |= (ADCH << 8);
 			volt = volt *15;
			volt = volt /1023;
 			display(volt);
		}
		displaySpeed(speed, motorOn);
		setSpeed(speed, motorOn);
	}
}
Exemple #4
0
/*
 * Leer velocidad. Esta tarea recive como parámetros dos buffers, el primero 
 * lo usa para escribir el contenido de la request. El segundo lo hace
 * para guardar la respuesta del servidor de comunicaciones.
 * 
 * Esta funcion devuelve la velocidad actual de la carreta o -1.0 si obtuvo un error
 */
float read_speed(char * request_buf, char * answer_buf) {
	strcpy(request_buf,"SPD: REQ\n");
	wr_arduino(request_buf, answer_buf);
	
	if (1 == sscanf (answer_buf,"SPD:%f\n",&CURRENT_SPEED)) {
		displaySpeed(CURRENT_SPEED);  
	} else {
		CURRENT_SPEED = -1.0;	//Server returned error 
	}	//TODO remove this for final version
	
	return CURRENT_SPEED;
}
void lightDisplay(void) {
    int i;

    clearStates();
    displaySpeed();
    displayDirection();
    _delay_ms(1000);

    for (i = 0; i < 8; i++) {
        dir[i] = ON;
        if (i < 6) {
            spd[i] = ON;
            if (i < 4) {
                ctrl[i] = ON;
            }
        }
        displaySpeed();
        displayDirection();
        _delay_ms(1000);
    }

}
Exemple #6
0
void toggleDisplay(){
	int temp = displayMode + 1;
	temp = temp % 3;
	displayMode = temp;
	clearDisplay();
	if(displayMode == 0){
		displaySpeed();
	}else if(displayMode == 1){
		displayDistance();
	}else if(displayMode == 2){
		displayTime();
	}
}
Exemple #7
0
void displayCalculations(){

	switch(displayMode){
	case 0:
		displaySpeed();
		break;
	case 1:
		displayDistance();
		break;
	case 2:
		displayTime();
		break;
	default:
		displayNumbers(-1,-1,-1,-1);
		break;
	}

}
int main(void) {

    //setup USART recive
    UCSR0B = (1<<RXEN0);
    UCSR0C = (1<<UCSZ00) | (1<<UCSZ01);
    UBRR0 = 25; // 25 = 2400 baud; 6 = 9600 baud


    /* Set pins as output, high->output, low->input */
    DDRA = 0xFF;          /* Pin for LED out */
    DDRB = 0xFF;          /* Pin for LED out */

    DDRC = 0xFF;          /* Pin for LED out */
    DDRD = 0xFE;          /* Pin for LED out */

    unsigned char input;
    unsigned char value;
    unsigned char control;

    PORTA = 0xFF;
    PORTB = 0xFF;
    PORTC = 0xFF;
    PORTD = 0xFF;
    _delay_ms(1000);

    /*
    while (1){
    	clearStates();
    	lightDisplay();
    }*/
    /*
    int i = 0;
    unsigned int states[4] = {0x27, 0xA0, 0x56, 0xD4};  */
    /*
    while (1) {
    	unsigned char in = USART_Receive();

    	for (int i = 0; i < 8; i++) {
    		dir[i] = (in>>(7-i))&0x1;
    	}
    	displayDirection();
    }
    */

    while(1) {
        //clearStates();
        input = USART_Receive();

        //input = 0x27;
        /*  _delay_ms(2000);
          input = states[i];
          i++;
          i = i%4;*/

        control = input & CTRL_MSK;
        if (input & CMD_BIT) {
            ctrl[LONG_SIP]  = control == LONG_SIP                ? ON : OFF;
            ctrl[LONG_PUFF] = control == LONG_PUFF               ? ON : OFF;
            ctrl[SIP]       = control == SIP  || ctrl[LONG_SIP]  ? ON : OFF;
            ctrl[PUFF]      = control == PUFF || ctrl[LONG_PUFF] ? ON : OFF;
        } else {
            clearCtrl();
        }

        value = (input&VAL_MSK) >> 3;
        if (input & SPD_BIT) { //SPEED
            clearSpeed();
            if (input & NEG_BIT) { //REVERSE
                spd[0] = ON;
            }
            else { //FORWARD
                switch (value) {
                default:
                case 4:
                    spd[4+SPD_OFFSET] = ON;
                case 3:
                    spd[3+SPD_OFFSET] = ON;
                case 2:
                    spd[2+SPD_OFFSET] = ON;
                case 1:
                    spd[1+SPD_OFFSET] = ON;
                    break;
                case 0:
                    spd[0+SPD_OFFSET] = ON;
                    break;
                }
            }
            displaySpeed();
        }
        else { //DIRECTION
            clearDir();
            if (input & NEG_BIT) { //LEFT
                switch (value) {
                default:
                case 4:
                    dir[DIR_OFFSET+1-4] = ON;
                case 3:
                    dir[DIR_OFFSET+1-3] = ON;
                case 2:
                    dir[DIR_OFFSET+1-2] = ON;
                case 1:
                    dir[DIR_OFFSET+1-1] = ON;
                    break;
                case 0:
                    break;
                }
            }
            else { //RIGHT
                switch (value) {
                default:
                case 4:
                    dir[4+DIR_OFFSET] = ON;
                case 3:
                    dir[3+DIR_OFFSET] = ON;
                case 2:
                    dir[2+DIR_OFFSET] = ON;
                case 1:
                    dir[1+DIR_OFFSET] = ON;
                    break;
                case 0:
                    break;
                }
            }
            displayDirection();
        }
    }

    return 0;

}