Ejemplo n.º 1
0
int main(void)
{
	DrvUART_Close(UART_PORT0);
	//------------------
    Init();
    Initial_pannel();
    clr_all_pannal();
    while(1)
       {
    	seg_display(hitung);

    	/*UNLOCKREG();
    	SYSCLK->PWRCON.XTL12M_EN = 1;//Enable 12MHz Crystal
    	SYSCLK->CLKSEL0.HCLK_S = 0;
    	LOCKREG();*/
    	servo_tutup();
    	//DrvSYS_Delay(10);
    	Initial_pannel();
    	DrvGPIO_ClrBit(E_GPD, 14);

    	print_lcd(0,"Selamat Datang");
    	print_lcd(1,"1. Kumpul Borang");
    	print_lcd(2,"2. Absen Doang");
    	print_lcd(3," > Silakan Tekan:");
    	//DrvSYS_Delay(10000);

    	key=Scankey();
    	while(key==4){
           	       		bacarfid();
           	       	}


       	while(key==1){
      kumpul();
       	}

       	while (key==2){
       		absen();
       print_lcd(2,"3. ADC=");
       	DrvADC_StartConvert();
       	adc=DrvADC_GetConversionData(7);
       	Show_Word(3,5,adc/1000+'0');
       	Show_Word(3,6,adc%1000/100+'0');
       	Show_Word(3,7,adc%100/10+'0');
       	Show_Word(3,8,adc%10+'0');

       	}




       	DrvGPIO_SetBit(E_GPC,12);
       	DrvSYS_Delay(1000);


       }
}
Ejemplo n.º 2
0
void absen(){
	uint8_t hasiluart[8];
	clr_all_pannal();

		while(key==2){
	       	DrvGPIO_ClrBit(E_GPC,12);
	       	DrvSYS_Delay(10000);
	       	print_lcd(0,"Tap Kartu Anda");
	       	print_lcd(1,"Pada Reader");
	       	bacarfid();
	       	DrvUART_Read(UART_PORT0,hasiluart,1);
	       	if(hasiluart[0]=='B'){
	       	       	clr_all_pannal();
	       	       	       		    print_lcd(0,"Terima Kasih :)");
	       	       	       		    print_lcd(1,"Tito Alvi");
	       	       	       		    hitungabsen++;
	       	       	       		    			DrvGPIO_ClrBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_SetBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_ClrBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_SetBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_ClrBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		        		DrvGPIO_SetBit(E_GPB,11);
	       	       	       		        		DrvSYS_Delay(100000);
	       	       	       		    print_lcd(0,"Terima Kasih :)");
	       	       	       			DrvSYS_Delay(5000000);

	       	       	       			main();
	       	       	}
	       	if(hasiluart[0]!='B'){
	       		clr_all_pannal();
	       		print_lcd(0,"Maaf :(");
	       		print_lcd(1,"Nama kamu gak");
	       		print_lcd(2,"Ada di Basis Data");
	       		print_lcd(3,"COBA LAGI !!!");
	       		DrvGPIO_ClrBit(E_GPB,11);
	       			       		DrvSYS_Delay(500000);
	       			       		DrvGPIO_SetBit(E_GPB,11);
	       			       		DrvSYS_Delay(100000);
	       			       		DrvGPIO_ClrBit(E_GPB,11);
	       			       		DrvSYS_Delay(500000);
	       			       		DrvGPIO_SetBit(E_GPB,11);
	       			       		DrvSYS_Delay(100000);
	       			       	delay(5000000);
	       		DrvSYS_Delay(2000000);
	       		absen();
	       	}



		}
}
Ejemplo n.º 3
0
void display_info_timer(void*)
{
    char lcd_text_buf[33];

    if(try_to_connect == 1)
    {
        Fl::repeat_timeout(0.1, &display_info_timer);
        return;
    }

    if(display_info == SENT_DATA)
    {
        sprintf(lcd_text_buf, "stream sent\n%0.2lfMB",
                kbytes_sent / 1024);
        print_lcd(lcd_text_buf, strlen(lcd_text_buf), 0, 1);
    }

    if(display_info == STREAM_TIME && timer_is_elapsed(&stream_timer))
    {
        sprintf(lcd_text_buf, "stream time\n%s",
                timer_get_time_str(&stream_timer));
        print_lcd(lcd_text_buf, strlen(lcd_text_buf), 0, 1);
    }

    if(display_info == REC_TIME && timer_is_elapsed(&rec_timer))
    {
        sprintf(lcd_text_buf, "record time\n%s",
                timer_get_time_str(&rec_timer));
        print_lcd(lcd_text_buf, strlen(lcd_text_buf), 0, 1);
    }

    if(display_info == REC_DATA)
    {
        sprintf(lcd_text_buf, "record size\n%0.2lfMB",
                kbytes_written / 1024);
        print_lcd(lcd_text_buf, strlen(lcd_text_buf), 0, 1);
    }

    Fl::repeat_timeout(0.1, &display_info_timer);
}
void print_long_message(char * message)
{
    uint8_t head;
    uint8_t tail;
    uint8_t lcd_display[16];
    uint16_t k;
    for (tail = 0; tail < strlen(message) - 15; tail++)
    {
        for(head = 0; head < 16; head++)
        {
            lcd_display[head] = message[head + tail];
        }
        print_lcd(lcd_display);
        for (k = 0; k < 100; k++)
        {
            delay(10000);
        }
    }
}
Ejemplo n.º 5
0
void __attribute__((__interrupt__)) _U2RXInterrupt( void )
{    
    if (U2STAbits.OERR) {
        U2STAbits.OERR = 0;
    }
    RXmsg[RXct] = U2RXREG;
    
    //print_lcd("hello");
    if (!ipcommand && RXct> 4 && !strncmp(RXmsg,"+IPD", strlen("+IPD"))){
        ipcommand = 1;
    }
    
    if (RXct>0 && ((!ipcommand && (RXmsg[RXct] == '\n' && RXmsg[RXct-1] == '\r')) || (ipcommand &&(RXmsg[RXct] == '}')))) {//(RXmsg[RXct] = 'K') & (RXmsg[RXct-1] = 'O')) {
        RXmsg[RXct-1] = '\0';
        int m;
        ipcommand=0;
        char rxBuf[40];
        int rxBuffIndex=0;
        int gpsIndex=0;
        
        
        if (RXct> 4 && !strncmp(RXmsg,"+IPD", strlen("+IPD"))){
            
            //print_lcd("HERE");
            //lcd_clear();
            //print_lcd(RXmsg);
        
            for (m = 0; m < RXct; m++){
                if (RXmsg[m] == '@'){ //update rover location
                    //print_lcd("aaa");
                    m++;
                    while(RXmsg[m] !='{' && RXmsg[m] !='\0'){
                        //numGPSpoints = numGPSpoints*10+(RXmsg[m]-'0');
                        m++;
                    }
                    int k = 0;
                    for(k = 0;k<1;k++){
                        rxBuffIndex = 0;
                        m++;
                        for(;RXmsg[m] !='}';m++){
                            rxBuf[rxBuffIndex++]=RXmsg[m];
                        }
                        rxBuf[rxBuffIndex]='\0';
                        //
                        double roverTemp1, roverTemp2;
                     
                        sscanf(rxBuf,"%lf,%lf", &roverTemp1,&roverTemp2);
                        roverlat[roverlatIndex] = roverLat;
                        roverlog[roverlogIndex] = roverLog;
                        
                        roverlatIndex = (roverlatIndex+1)%ROVER_LEN;
                        roverlogIndex = (roverlogIndex+1)%ROVER_LEN;
                        
                        gpsIndex++;
                        m++;
                        m++;
                    }
                    /*sprintf(outputBuf, "%lf", roverLog);
                    lcd_clear();
                    print_lcd(outputBuf);
                    lcd_line2();
                    sprintf(outputBuf, "%lf", roverLat);
                    print_lcd(outputBuf);*/
                    gpsLock=1;
                    break;
                }
                if (RXmsg[m] == '$'){
                    //print_lcd("aaa");
                    m++;
                    while(RXmsg[m] !='{' && RXmsg[m] !='\0'){
                        numGPSpoints = numGPSpoints*10+(RXmsg[m]-'0');
                        m++;
                    }
                    int k = 0;
                    for(k = 0;k<numGPSpoints;k++){
                        rxBuffIndex = 0;
                        m++;
                        for(;RXmsg[m] !='}';m++){
                            rxBuf[rxBuffIndex++]=RXmsg[m];
                        }
                        rxBuf[rxBuffIndex]='\0';
                        //
                        sscanf(rxBuf,"%lf,%lf", &gpsLonge[gpsIndex],&gpsLat[gpsIndex]);
                        gpsIndex++;
                        m++;
                        m++;
                    }
                    sprintf(outputBuf, "%lf", gpsLat[numGPSpoints-1]);
                    print_lcd(outputBuf);
                    lcd_line2();
                    sprintf(outputBuf, "%lf", gpsLonge[numGPSpoints-1]);
                    print_lcd(outputBuf);
                    //waypointsReady = 1;
                    
                    waypointsReady = 1;
                    break;
                }
            }
        }
        
        if (RXct> 14 && !strncmp(RXmsg,"+CGPSINFO:", strlen("+CGPSINFO:"))){
            RXmsg[RXct-1] = '\0';
            
            int q;
            int commaCount = 0;
            int cgpsOffset = 10;    //offset to gps data in string
            for (cgpsOffset = 0; cgpsOffset <RXct;cgpsOffset++ ){
                if (RXmsg[cgpsOffset] == ':'){
                    break;
                }
            }
            cgpsOffset++;
            int latIndex = 0;
            int logIndex = 0;
            char latBuf[60];    //buffer for lat
            char logBuf[60];    //buffer for long
            //print_lcd("gps not locked");
            if (RXmsg[cgpsOffset] == ','){    //remove 0 && if not test
                
            }else{
                //strcpy(RXmsg,"+CGPSINFO:4567.87,N,8546.12,date,utc,alt");   //copy over test string
                for (q = cgpsOffset; RXmsg[q] !='\0' && q <RXct ; q++){
                    if (commaCount == 0 && RXmsg[q]!=','){
                        latBuf[latIndex++]=RXmsg[q];
                    }
                    if (commaCount == 0 && RXmsg[q]==','){
                        latBuf[latIndex++]='\0';
                        sscanf(latBuf, "%lf", &roverLat);
                    }
                    if (commaCount == 2 && RXmsg[q]!=','){
                        logBuf[logIndex++]=RXmsg[q];
                    }
                    if (commaCount == 2 && RXmsg[q]==','){
                        logBuf[logIndex++]='\0';
                        sscanf(logBuf, "%lf", &roverLog);
                        //break;
                    }
                    if (RXmsg[q]==','){
                        commaCount++;
                    }
                }
                //test 
                 /*sprintf(outputBuf, "%lf", roverLat);
                 lcd_clear();
                 print_lcd(outputBuf);
                 print_lcd(" ");
                 sprintf(outputBuf, "%lf",roverLog);
                 print_lcd(outputBuf);*/
                
                 gpsLock=1;
                 //while (1);
                }
           /* lcd_clear();
             print_lcd(RXmsg);*/
            }
        
        RXct = 0;
        //lcd_clear();
        //:wq
        //delay_ms(100);
        //print_lcd(RXmsg);
    } else {
        RXct++;
    }
    IFS1bits.U2RXIF = 0;
}
Ejemplo n.º 6
0
int main ( void )
{

    //TRISA = 0b0010000000000000;
    TRISA = 0b00001111;
    TRISAbits.TRISA12 = 0;
    
    TRISCbits.TRISC1 = 0;
    TRISCbits.TRISC2 = 0;
    TRISCbits.TRISC3 = 0;
    TRISCbits.TRISC4 = 0;
    
    //TRISD = 0;
    TRISD = 0b0000000000010000; // RD11: DIR2; RD8: PWM2
    
    //TRISE = 0b00001000;
    TRISE = 0b00001000; // RE6: DIR1; RE0: PWM1
    TRISEbits.TRISE7 = 0; 
   
    //LCD an
    _PCFG16 = 1; // AN16 is digital
    _PCFG17 = 1; // AN17 is digital
    _PCFG18 = 1; // AN18 is digital
    _PCFG19 = 1; // AN19 is digital
    _PCFG20 =1;
    _PCFG31=1;
    
    //pwm analog select
    _PCFG24=1;
    _PCFG30=1;
    
    //RE4 for lcd r/s
     _PCFG28=1;
     TRISEbits.TRISE4 = 0;
    
    AD1PCFGHbits.PCFG28 = 1;
    AD1PCFGHbits.PCFG27 = 1;
    AD1PCFGHbits.PCFG30 = 1;
    AD1PCFGHbits.PCFG24 = 1;
    AD1PCFGH = 0x0020;
    TRISAbits.TRISA13 = 1;
    //set pwm low
    PWM1=0;
    PWM2=0;
    
    SYS_Initialize ( ) ;
    
    CLKDIVbits.FRCDIV = 0;
    CLKDIVbits.PLLPOST = 0;  // N2 = 2
    CLKDIVbits.PLLPRE = 0;  // N1 = 2
    PLLFBD = (Fosc*N1_default*N2_default/Ffrc) - M_default; // M = 8 -> Fosc = 7.3728 MHz * 8 / 2 / 2 = 16 MHz
    while(!OSCCONbits.LOCK);	// Wait for PLL to lock
	RCONbits.SWDTEN = 0;      // Disable Watch Dog Timer
    
    //TRISF = 0;
    gpsLock = 0;
   
    lcd_init();
    print_lcd("Initializing");
    //delay_ms(500);
    //lcd_clear();
    
    /*lcd test
    char line1[] = " On Route ";
    char line2[] = " Arrived ";
    //send_command_byte(0xFF);
    //while(1){send_command_byte(0xFF);send_data_byte(0);}
   // delay_ms(2);
    //send_command_byte(0x02); // Go to start of line 1
    //send_command_byte(0b00001111); // Display: display on, cursor on, blink on
    //send_command_byte(0b00000110); // Set entry mode: ID=1, S=0
    //send_command_byte(0b00000001); // Clear display
    
    print_lcd(line1);
    delay_ms(5000);
    lcd_clear();
    print_lcd(line2);
    //send_command_byte(0xC0); // Go to start of line 1
    //while(1){send_command_byte(0b00000001);}
    while(1);*/
    
    /*int a;
    long long int ct;
    int i;
    int j=0;*/
    //i2c init

    
    //uart init
    UART_Initialize();
    delayMs(100);
    
    
    /* while(1){//test for delay ms configuration
        //PORTDbits.RD1 = 1;
        //delayUs(10);
        //for(i = 0;i <7;i++);
        delayMs(10);
        PORTDbits.RD12 = 1;
        //for (i = 0; i < 1000; i++);
        //PORTDbits.RD1 = 0;
        //for(i = 0;i <7;i++);
        delayMs(10);
        
        PORTDbits.RD12 = 0;
        //for (i  = 0; i < 1000; i++);
    }*/
    
    //ultrasonic test
    
   /* while(1){
        long double x;
        delayMs(500);
        PORTEbits.RE4 = 1;                  //TRIGGER HIGH
        PORTDbits.RD5 = 1; 
        delay_us(10);                     //10uS Delay 
        lcd_clear();
        ultraSonicEn = 1;
        ultraSonicCount = 0;

        PORTEbits.RE4 = 0;                  //TRIGGER LOW
        PORTDbits.RD5 = 0; 
        
        
        while (!PORTDbits.RD4);              //Waiting for Echo
       IEC0bits.T2IE = 1; //enable timer
        while(PORTDbits.RD4);// 
        IEC0bits.T2IE = 0; //disable timer
        x = ultraSonicCount/TICKS_PER_METER;
        sprintf(outputBuf,"%lf",x); 
        print_lcd(outputBuf);
    }*/

    //TX_str(endGPS);
    //delayMs(3000);
    //TX_str(startGPS);
    /*TX_str(startGPShot);
    delayMs(2000);
    while ( !gpsLock ) {
        TX_str(getGPS);
        delayMs(500);
    }*/
    
   //TCP code
    
    TX_str(openNet);
    delayMs(5000);
    TX_str(openConnection);
    delayMs(5000);
 
    // while(!BUTTON_IsPressed ( BUTTON_S3 ));
    //TX_str(sprintf("%s%d\r",sendTCP, strlen("10")));
    sprintf(outputBuf2,"2\n%lf,%lf\n\r",roverLog,roverLat );
    sprintf(cmdBuf,"%s%d\r", sendTCP,strlen(outputBuf2));
         
    TX_str(cmdBuf);
    delayMs(3000);
    TX_str(outputBuf2);
    while(!waypointsReady || !gpsLock);
    
    
    //while(1);
    delayMs(7000);
    lcd_clear();
    print_lcd("waypoints locked");
    
    i2c_init();
    //i2c_write3(0x3c, 0x00, 0x70);
    i2c_write3(0x3c, 0x00, 0b00011000);
    //i2c_write3(0x3c, 0x01, 0b11000000);
    i2c_write3(0x3c, 0x01, 0xA0);
    i2c_write3(0x3c, 0x02, 0x00);
    
    //timer init, do this after other initializations
    motorDuty=0;
    tim1_init();
    tim2_init();
   
    /*
    double angleTolerance = 8.0;
     motorDuty=2;
 
    while (1){ //adjust


        double angleDiff = headingDiff(0,roverHeading );


        if (angleDiff > 0 ||abs(angleDiff) > 175 ){ //turn left

            PWM1_DIR = 0; //left            NOTE: 0 is forward, 1 is reverse
            PWM2_DIR = 1; //right
        } else{ // turn right

            PWM1_DIR = 1;
            PWM2_DIR = 0;
        }
        if (abs(angleDiff) < angleTolerance){
            motorDuty = 0;
            //break;
        }else{
            //motorDuty =4;
            motorDuty =2;
        }   
        delayMs(13);
        updateHeading();
    }*/
    
    //hardcoded gps for tcpip test
    
    
     /*while(1){
//        PORTDbits.RD5 = 1;
//        for (a = 0; a < (100/33); a++) {}
//        PORTDbits.RD5 = 0;
//        for (a = 0; a < (100/33); a++) {}
        ct = 0;
        //TMR2 = 0;//Timer Starts
        delayMs(60);
        PORTEbits.RE4 = 1;                  //TRIGGER HIGH
        PORTDbits.RD5 = 1; 
        delay_us(15);
                           //10uS Delay 
        PORTEbits.RE4 = 0;                  //TRIGGER LOW
        PORTDbits.RD5 = 0; 
        while (!PORTDbits.RD4){              //Waiting for Echo
            ct++;
        }
            //T2CONbits.TON = 1;
        while(PORTDbits.RD4) {
            ct++;
        }// {
        //T2CONbits.TON = 0;
        sprintf(outputBuf,"%lld", ct); 
        //a = TMR2;
        //a = a / 58.82;
        
        //long int p;
        //for(p = 0; p <100000; p++);
        
    }*/
    //tim1_init();
    //while ( 1 );
    //UART_Initialize();
    
    /* Infinite Loop */
    /*
     long int i;
    while ( 1 )
    {//test for delay ms configuration
        //PORTDbits.RD1 = 1;
        delayMs(10);
        PORTDbits.RD12 = 1;
        //for (i = 0; i < 1000; i++);
        //PORTDbits.RD1 = 0;
        delayMs(10);
        PORTDbits.RD12 = 0;
        //for (i = 0; i < 1000; i++);
    }*/
    //IEC0bits.T1IE = 0;
    
    //IEC0bits.T1IE = 1;
    //motorDuty =2;
    motorStopFlag = 0; //ready to go
    char tempBuf1[50];
    int wapointsVisited;
    double desiredHeading = 0;
    double dToWaypoint = 99999.9;
    double angleTolerance = 6.0;
    for (wapointsVisited =0; wapointsVisited<numGPSpoints;wapointsVisited++ )
    {
        dToWaypoint = 99999.9;
        while (1)
        {

            int f;
            roverLog = 0;
            roverLat = 0;
            for(f = 0; f < ROVER_LEN; f++){
                roverLog+=roverlog[f]/ROVER_LEN_D;
                roverLat+=roverlat[f]/ROVER_LEN_D;
            }
            
            
            dToWaypoint = dist(convertGPSToDeg(roverLat),convertGPSToDeg(roverLog),convertGPSToDeg(gpsLat[wapointsVisited]),convertGPSToDeg(gpsLonge[wapointsVisited]));
            if(dToWaypoint <= 3.0){break;} //go to next waypoint

            desiredHeading = 330.0;
            desiredHeading = bearing(convertGPSToDeg(roverLat),convertGPSToDeg(roverLog),convertGPSToDeg(gpsLat[wapointsVisited]),convertGPSToDeg(gpsLonge[wapointsVisited]));
            
            updateHeading();
            
                
            if (!(abs(headingDiff(desiredHeading,roverHeading )) < angleTolerance))
            {
                motorDuty = 0;  //stop
                delayMs(300);
                while (1) //ADJUSTMENT LOOP
                {
                   
                    double angleDiff = headingDiff(desiredHeading,roverHeading );

                    //double dist = ultraSonicPing();
                    /*sprintf(tempBuf1,"%f",dist);
                    lcd_clear();
                    print_lcd(tempBuf1);*/
                     if (abs(angleDiff) < angleTolerance){
                        motorDuty = 0;
                        /*sprintf(tempBuf1,"%f",roverHeading);
                        IEC0bits.T1IE = 0;
                        print_lcd(tempBuf1);
                        IEC0bits.T1IE = 1;*/
                        break;
                    }
                    if (angleDiff > 0 || abs(angleDiff) > 175 ){ //turn right
                        /*PORTDbits.RD4 = 1; //right 0 is forwards, 1 i backwards
                        PORTDbits.RD2 = 1;
                        PORTDbits.RD8 = 0; //left*/
                        PWM1_DIR = 0; //left            NOTE: 0 is forward, 1 is reverse
                        PWM2_DIR = 1; //right
                    } else{ // turn left
                        /*PORTDbits.RD4 = 0; //right 0 is forwards, 1 i backwards
                        PORTDbits.RD2 = 0;
                        PORTDbits.RD8 = 1; //left*/
                        PWM1_DIR = 1;
                        PWM2_DIR = 0;
                    }
                   
                       
                    motorDuty =3;
                     
                    delayMs(15);
                    updateHeading();
        //        sprintf(tempBuf1,"%f",roverHeading);
        //        IEC0bits.T1IE = 0;
        //        lcd_clear();
        //        print_lcd(tempBuf1);
        //        IEC0bits.T1IE = 1;
                //delayMs(1000);
                //for(p = 0; p <100000; p++);
                }
            }
            PWM1_DIR = 0; //left            NOTE: 0 is forward, 1 is reverse
            PWM2_DIR = 0;

            motorDuty = 5;
            ultraSonicDelayEnable = 1;
            //frequency is around 20kHz
            while (ultraSonicDelayCount < 60000){ //for 4 seconds poll ultrasonic and check for obsticles
                long double x;
                //PORTEbits.RE4 = 1;                  //TRIGGER HIGH
                PORTDbits.RD5 = 1; 
                delay_us(10);                     //10uS Delay 
                lcd_clear();
                ultraSonicEn = 1;
                ultraSonicCount = 0;

                //PORTEbits.RE4 = 0;                  //TRIGGER LOW
                PORTDbits.RD5 = 0; 


                while (!PORTDbits.RD4);              //Waiting for Echo
               IEC0bits.T2IE = 1; //enable timer
                while(PORTDbits.RD4);// 
                IEC0bits.T2IE = 0; //disable timer
                ultraSonicEn = 0;
                x = ultraSonicCount/TICKS_PER_METER;
                if (x <= 1.4){
                    motorDuty = 0;
                }else{
                    motorDuty = 5;
                }
                delayMs(200);
            }
            ultraSonicDelayEnable = 0;
            ultraSonicDelayCount = 0;
        }
        
        motorDuty = 0;
        delayMs(1000);
        //IEC0bits.T1IE = 0;
        lcd_clear();
        char buf3[40];
        sprintf(buf3, "reached %d", wapointsVisited);
        print_lcd(buf3);
        delayMs(3000);
        //IEC0bits.T1IE = 1;
        
    }
    //IEC0bits.T1IE = 0;
    lcd_clear();
    print_lcd("ARRIVED!!!");
    //IEC0bits.T1IE = 1;
    while (1);
}
Ejemplo n.º 7
0
void change_config_state(state *my_states, byte direction, DWORD *delay)
{
	if ((millis() - *delay) > STATE_CHANGE_DELAY)
	{
		if (direction)
		{
			switch (my_states->config)
			{
			case OVERVIEW:
			case CHOOSE_INTERVAL:
			case CHOOSE_FOCUS:
				my_states->config++;
				break;

			case SET_DELAY:
				if (my_states->interval)
				{
					my_states->config++;
				}
				else
				{
					my_states->focus ? my_states->config = SET_FOCUS_STYLE
							: my_states->config = OVERVIEW;
				}
				break;
			case SET_INTERVAL:
				my_states->config++;
				break;
			case SET_AMOUNT:
				my_states->focus ? my_states->config = SET_FOCUS_STYLE
						: my_states->config = OVERVIEW;
				break;
			case SET_FOCUS_STYLE:
			case SET_FOCUS_TIME:
			default:
				my_states->config = 0;
				break;
			}
		}
		else //direction==0==down
		{
			switch (my_states->config)
			{
			case OVERVIEW:
				if (my_states->focus)
				{
					my_states->config--;
				}
				else
				{
					my_states->interval ? my_states->config = SET_AMOUNT
							: my_states->config = SET_DELAY;
				}
				break;

			case CHOOSE_INTERVAL:
			case CHOOSE_FOCUS:
			case SET_DELAY:
			case SET_INTERVAL:
			case SET_AMOUNT:
				my_states->config--;
				break;
			case SET_FOCUS_STYLE:
				my_states->interval ? my_states->config = SET_AMOUNT
											: my_states->config = SET_DELAY;
			case SET_FOCUS_TIME:
				my_states->config--;
				break;
			default:
				my_states->config = 0;
				break;
			}
		}
		print_lcd();
	}
}
Ejemplo n.º 8
0
//=============================================================================
//Het hoofdprogramma
int main(void)
{
	//variabelen
	uint8_t blok;
	uint8_t arr[10];
	
	poorten_init();

	
	//init twi
	twi_init();
	
	//init lcd
	lcd_init();
	schrijftekst();
	
	sei();
	arr[0] = 0x00;
	arr[1] = 0x57;
	arr[0] = 0xFF;
	twi_mt_zendboodschap(0x38, 0x03,arr);
		//print resultaten interrupts
		if (MT_B.klaar == 1)
		{
			print_lcd();
		}
	twi_mt_zendboodschap(0x39, 0x03,arr);
		//print resultaten interrupts
		if (MT_B.klaar == 1)
		{
			print_lcd();
		}
	twi_mt_zendboodschap(0x3A, 0x0,arr);
			//print resultaten interrupts
			if (MT_B.klaar == 1)
			{
				print_lcd();
			}
	twi_mt_zendboodschap(0x3B, 0x03,arr);
		//print resultaten interrupts
		if (MT_B.klaar == 1)
		{
			print_lcd();
		}
				
    while(1)
    {
		//print resultaten interrupts
		if (MT_B.klaar == 1)
		{
			print_lcd();
		}
		
		//als knop is ingedrukt : zend boodschap
		if ((bit_is_set(PINB,4)) )		//knop 
		{
			//knop is los
			// schakelen mogelijk
			blok = 0;
			//wacht op denderen
			_delay_ms(D_TIJD);
			//zet led uit
			PORTD |= _BV(7);

		}
		if (!bit_is_set(PINB,4) )
		{
			//knop is ingedrukt
			//blokkeer herhaling
			blok = 1;
			//wacht op denderen
			_delay_ms(D_TIJD);
			//zet led aan
			PORTD &= ~_BV(7);
			//maak vorige resultaten schoon
			lcd_clear();
			lcd_gotoxy(0,0);
			schrijftekst();
			//we zenden een Boodschap
			MT_B.data[0] = 0x00;
			MT_B.data[1] = 0x57;
			MT_B.data[0] = 0x77;
			MT_B.data[1] = 0x77;
			MT_B.data[1] = 0x77;
			MT_B.data[0] = 0x77;									
		//	twi_mt_zendboodschap(0x38, 0x06);
				//knop is ingedrukt
				//blokkeer herhaling
				blok = 1;
				//wacht op denderen
				_delay_ms(D_TIJD);
				//zet led aan
				PORTD &= ~_BV(7);
				//maak vorige resultaten schoon
				lcd_clear();
				lcd_gotoxy(0,0);
				schrijftekst();
				//we zenden een Boodschap
				MT_B.data[0] = 0x00;
				MT_B.data[1] = 0x57;
				MT_B.data[0] = 0x77;
				MT_B.data[1] = 0x77;
				MT_B.data[1] = 0x77;
				MT_B.data[0] = 0x77;
		//		twi_mt_zendboodschap(0x39, 0x06);
					//knop is ingedrukt
					//blokkeer herhaling
					blok = 1;
					//wacht op denderen
					_delay_ms(D_TIJD);
					//zet led aan
					PORTD &= ~_BV(7);
					//maak vorige resultaten schoon
					lcd_clear();
					lcd_gotoxy(0,0);
					schrijftekst();
					//we zenden een Boodschap
					MT_B.data[0] = 0x00;
					MT_B.data[1] = 0x57;
					MT_B.data[0] = 0x77;
					MT_B.data[1] = 0x77;
					MT_B.data[1] = 0x77;
					MT_B.data[0] = 0x77;
	//				twi_mt_zendboodschap(0x3B, 0x06);
		}
    }
}
Ejemplo n.º 9
0
void kumpul(){
	clr_all_pannal();
	uint8_t hasiluart[8];
	while(key==1){
       	DrvGPIO_ClrBit(E_GPC,12);
       	DrvSYS_Delay(10000);
       	DrvGPIO_ClrBit(E_GPB,0);
       	print_lcd(0,"Tap Kartu Anda");
       	print_lcd(1,"Pada Reader");
       	print_lcd(2,"Tekan Button");
       	print_lcd(3,"untuk Kembali");
       	if(DrvGPIO_GetBit(E_GPB,15)==0){
       	       		main();}
       	bacarfid();
		DrvUART_Read(UART_PORT0,hasiluart,1);
		if(hasiluart[0]=='B'){
						DrvGPIO_ClrBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		DrvGPIO_SetBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		DrvGPIO_ClrBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		DrvGPIO_SetBit(E_GPB,11);
			       		DrvSYS_Delay(100000);
			       		clr_all_pannal();
			       		goto benar;
		}
		if(hasiluart[0]!='B'){
			SYSCLK->PWRCON.XTL12M_EN = 1;//Enable 12MHz Crystal
			       		       							SYSCLK->CLKSEL0.HCLK_S = 0;
			       		       						LOCKREG();
			       		clr_all_pannal();
			       		print_lcd(0,"Maaf :(");
			       		print_lcd(1,"Nama kamu gak");
			       		print_lcd(2,"Ada di Basis Data");
			       		print_lcd(3,"COBA LAGI !!!");
			       		DrvGPIO_ClrBit(E_GPB,11);
			       						DrvGPIO_ClrBit(E_GPB,11);
			       			       		DrvSYS_Delay(500000);
			       			       		DrvGPIO_SetBit(E_GPB,11);
			       			       		DrvSYS_Delay(100000);
			       			       		DrvGPIO_ClrBit(E_GPB,11);
			       			       		DrvSYS_Delay(500000);
			       			       		DrvGPIO_SetBit(E_GPB,11);
			       			       		DrvSYS_Delay(100000);
			       			       		DrvGPIO_ClrBit(E_GPB,11);
			       			       		delay(5000000);
			       		kumpul();
			       	}
       	//key2=Scankey();
       	/*if(key2==2){
       		DrvGPIO_ClrBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		DrvGPIO_SetBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		DrvGPIO_ClrBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		DrvGPIO_SetBit(E_GPB,11);
       		DrvSYS_Delay(100000);
       		clr_all_pannal();
       	}*/
       	//mennu harus diubah klo uart dah jadi
		benar:
       	while(hasiluart[0]=='B'){
       		print_lcd(0,"Silakan Masukkan");
       		print_lcd(1,"Borang Kamu");
       		SYSCLK->PWRCON.XTL12M_EN = 1;//Enable 12MHz Crystal
       		       							SYSCLK->CLKSEL0.HCLK_S = 0;
       		       						LOCKREG();
       		       				        servo_buka();
       		       				        DrvSYS_Delay(10);
       		Scankey();
       		if(DrvGPIO_GetBit(E_GPA,0)==0){
       		    clr_all_pannal();
       		    print_lcd(0,"Terima Kasih :)");
       		    print_lcd(1,"Tito Alvi");
       		    hitung++;
       		 DrvGPIO_ClrBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       		DrvGPIO_SetBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       		DrvGPIO_ClrBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       		DrvGPIO_SetBit(E_GPB,11);
       		 			       		DrvSYS_Delay(100000);
       		 			       	DrvGPIO_ClrBit(E_GPB,11);
       		 			       	DrvSYS_Delay(100000);
       		 			       	DrvGPIO_SetBit(E_GPB,11);
       		 			       	DrvSYS_Delay(100000);
       		    print_lcd(0,"Terima Kasih :)");
       			DrvSYS_Delay(2000000);
       			main();
       		       	}
       		while(DrvGPIO_GetBit(E_GPA,0)==0){ //sensor cahaya = GPA0 - SIG
       			       				         			       		main();}
       		}

       	}


       	       	}