/*controle manual via joystick e botoes*/ void manualControl(){ int x, y, digital, b1, b2, end1, end2; while(1){ x = posicaoJoystick('x'); y = posicaoJoystick('y'); digital = readJSButton(); b1 = readButtons('1'); b2 = readButtons('2'); end1 = readEnd('x'); end2 = readEnd('y'); if(end1||end2){ TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "FIM DE CURSO"); TM_HD44780_Puts(0, 1, "RESETE A MESA"); return; } if(x == 1||x == -1||y == 1||y == -1){ if(x==1){ runClockwise2(1, 'x'); }else if(x==-1){ runCounterclockwise2(1, 'x'); } if(y==1){ runClockwise2(1, 'y'); }else if(y==-1){ runCounterclockwise2(1, 'y'); } } if(digital==1){ TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "MARCAR"); setFura(); } if(b1==1){ TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "DESCER DRILL"); runCaneta(1, '+'); } if(b2==1){ TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "SUBIR DRILL"); runCaneta(1, '-'); } } }
/*recebe um .drill interpretado em txt via semihosting e perfura os pontos*/ void modoPerfuracao(void){ TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "Aguardando dados"); float x[100], y[100]; int n = 0, i = 0; char str[10]; readStringSH(str); while(str[0] != '\0'){ x[i] = UB_String_DezStringToFloat(str); readStringSH(str); y[i] = UB_String_DezStringToFloat(str); readStringSH(str); i++; } for(;n<i;n++){ ftoa(str, x[n], 4, 0); SH_SendString(str); SH_SendString("\n\r"); ftoa(str, y[n], 4, 0); SH_SendString(str); SH_SendString("\n\r"); } setPerfura(y, x, n); return; }
void TM_HD44780_Init(uint8_t cols, uint8_t rows) { /* Initialize delay */ //TM_DELAY_Init(); //MD - Remove TM delay HD44780_RW_LOW; /* Init pinout */ TM_HD44780_InitPins(); /* At least 40ms */ HD44780_Delay(450); /* Set LCD width and height */ HD44780_Opts.Rows = rows; HD44780_Opts.Cols = cols; /* Set cursor pointer to beginning for LCD */ HD44780_Opts.currentX = 0; HD44780_Opts.currentY = 0; HD44780_Opts.DisplayFunction = HD44780_4BITMODE | HD44780_5x8DOTS | HD44780_1LINE; if (rows > 1) { HD44780_Opts.DisplayFunction |= HD44780_2LINE; } /* Try to set 4bit mode */ TM_HD44780_Cmd4bit(0x03); HD44780_Delay(450); /* Second try */ TM_HD44780_Cmd4bit(0x03); HD44780_Delay(450); /* Third goo! */ TM_HD44780_Cmd4bit(0x03); HD44780_Delay(450); /* Set 4-bit interface */ TM_HD44780_Cmd4bit(0x02); HD44780_Delay(100); /* Set # lines, font size, etc. */ TM_HD44780_Cmd(HD44780_FUNCTIONSET | HD44780_Opts.DisplayFunction); /* Turn the display on with no cursor or blinking default */ HD44780_Opts.DisplayControl = HD44780_DISPLAYON; TM_HD44780_DisplayOn(); /* Clear lcd */ TM_HD44780_Clear(); /* Default font directions */ HD44780_Opts.DisplayMode = HD44780_ENTRYLEFT | HD44780_ENTRYSHIFTDECREMENT; TM_HD44780_Cmd(HD44780_ENTRYMODESET | HD44780_Opts.DisplayMode); /* Delay */ HD44780_Delay(450); }
/*ajusta altura da caneta/drill manualmente*/ void calibraCaneta(void){ int b1, b2, digital=0; TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "CALIBRE EIXO Z"); TM_HD44780_Puts(0, 1, "Digital = OK"); while(!digital){ digital = readJSButton(); b1 = readButtons('1'); b2 = readButtons('2'); if(b1){ runCaneta(1, '+'); }else if(b2){ runCaneta(1, '-'); } } TM_HD44780_Clear(); runCaneta(300, '-'); }
int main(void) { /* Rectangle for custom character */ /* xxx means doesn't care, lower 5 bits are important for LCD */ uint8_t customChar[] = { 0x1F, /* xxx 11111 */ 0x11, /* xxx 10001 */ 0x11, /* xxx 10001 */ 0x11, /* xxx 10001 */ 0x11, /* xxx 10001 */ 0x11, /* xxx 10001 */ 0x11, /* xxx 10001 */ 0x1F /* xxx 11111 */ }; /* Initialize system */ SystemInit(); /* Initialize LCD 20 cols x 4 rows */ TM_HD44780_Init(20, 4); /* Save custom character on location 0 in LCD */ TM_HD44780_CreateChar(0, &customChar[0]); /* Put string to LCD */ TM_HD44780_Puts(0, 0, "STM32F4/29 Discovery"); TM_HD44780_Puts(2, 1, "20x4 HD44780 LCD"); TM_HD44780_Puts(0, 2, "stm32f4-\n\r discovery.com"); /* Wait a little */ Delayms(3000); /* Clear LCD */ TM_HD44780_Clear(); /* Show cursor */ TM_HD44780_CursorOn(); /* Write new text */ TM_HD44780_Puts(6, 2, "CLEARED!"); /* Wait a little */ Delayms(1000); /* Enable cursor blinking */ TM_HD44780_BlinkOn(); /* Show custom character at x = 1, y = 2 from RAM location 0 */ TM_HD44780_PutCustom(1, 2, 0); while (1) { } }
/*dado dois arrays com coordenadas x e y, perfura todos os pontos*/ void setPerfura(float x[], float y[], int n){ int i = 0; char str[20]; sprintf(str, "%d FUROS", n-i); TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, str); TM_HD44780_Puts(0, 1, "RESTANTES"); for(; i<n; i++){ moveParaXY(x[i], y[i], 'm'); setFura(); sprintf(str, "%d FUROS", n-i); TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, str); TM_HD44780_Puts(0, 1, "RESTANTES"); } TM_HD44780_Clear(); TM_HD44780_Puts(3, 0, "PERFURACAO"); TM_HD44780_Puts(5, 1, "COMPLETA"); }
/*atualiza no display lcd a posição absoluta em mm*/ void atualizaDisplayDistancia(void){ char px_mm[10], py_mm[10]; ftoa(px_mm, posit_x*0.02125, 2, 0); ftoa(py_mm, posit_y*0.02125, 2, 0); TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "x:"); TM_HD44780_Puts(0, 1, "y:"); TM_HD44780_Puts(9, 0, "mm"); TM_HD44780_Puts(9, 1, "mm"); TM_HD44780_Puts(3, 0, px_mm); TM_HD44780_Puts(3, 1, py_mm); }
/*APRIMORAR E TESTAR*/ void menu(void){ int b1, b2, digital = 0; int menu = 0; while(!digital){ digital = readJSButton(); b1 = readButtons('1'); b2 = readButtons('2'); if(b1||b2){ menu++; menu %= 2; } if(menu == 0){ TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "MODO AUTONOMO"); TM_HD44780_PutCustom(15, 0, 0); TM_HD44780_Puts(0, 1, "MODO MANUAL"); Delayms(50); }else if(menu == 1){ TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "MODO AUTONOMO"); TM_HD44780_Puts(0, 1, "MODO MANUAL"); TM_HD44780_PutCustom(15, 1, 0); Delayms(50); } TM_HD44780_Clear(); } if(menu == 0){ modoPerfuracao(); //setDesenhaQuadrado(); }else if(menu == 1){ manualControl(); } }
/*ajusta a posicao zero da mesa xy*/ void calibraZero(){ //move a mesa ate atingir as duas chaves de fim de curso int i; TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "Calibrando..."); while(!(readEnd('x')&&readEnd('y'))){ if(!readEnd('x')){ counterclockwise('x'); } if(!readEnd('y')){ counterclockwise('y'); } } //apos o ajuste de zero, volta um pouco para liberar as chaves for(i=15; i--;){ clockwise('x'); clockwise('y'); } TM_HD44780_Clear(); TM_HD44780_Puts(0, 0, "Mesa calibrada"); Delayms(250); posit_x=0; posit_y=0; }
void HDStartSeq(void) { TM_HD44780_CreateChar(0, &customChar[0]); TM_HD44780_Puts(0, 0, "Servo Driver\n\rSTM32F4"); Delayms(3000); TM_HD44780_Clear(); TM_HD44780_Puts(3, 0, "MANY FUN!"); TM_HD44780_Puts(6, 1, "WOW!"); Delayms(1000); TM_HD44780_PutCustom(0, 0, 0); TM_HD44780_PutCustom(14, 0, 0); TM_HD44780_PutCustom(1, 1, 0); TM_HD44780_PutCustom(15, 1, 0); Delayms(1000); TM_HD44780_Clear(); }
int main(void) { char str[100]; // char buffer1[100]; // /* Free and total space */ // uint32_t total, free; /* Initialize system */ SystemInit(); /* Initialize delays */ TM_DELAY_Init(); /* Enable watchdog, 4 seconds before timeout */ if (TM_WATCHDOG_Init(TM_WATCHDOG_Timeout_8s)) { /* Report to user */ //printf("Reset occured because of Watchdog\n"); } /* Reset counter to 0 */ TM_DELAY_SetTime(0); /* init DTMF*/ TM_GPIO_Init(DTMF_BIT0_PORT, DTMF_BIT0_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_Low); TM_GPIO_Init(DTMF_BIT1_PORT, DTMF_BIT1_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_Low); TM_GPIO_Init(DTMF_BIT2_PORT, DTMF_BIT2_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_Low); TM_GPIO_Init(DTMF_BIT3_PORT, DTMF_BIT3_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_Low); /* DTMF*/ if (TM_EXTI_Attach(DFMF_BIT4_PORT, DTMF_BIT4_PIN, TM_EXTI_Trigger_Rising) == TM_EXTI_Result_Ok) { TM_USART_Puts(USART3, "khoi tao ngat DFMF_BIT4\n"); } /*init interrup INPUT*/ if (TM_EXTI_Attach(W1_D0_PORT, W1_D0_PIN, TM_EXTI_Trigger_Rising) == TM_EXTI_Result_Ok) { TM_USART_Puts(USART3, "khoi tao ngat W1_D0\n"); } if (TM_EXTI_Attach(W1_D1_PORT, W1_D1_PIN, TM_EXTI_Trigger_Rising) == TM_EXTI_Result_Ok) { TM_USART_Puts(USART3, "khoi tao ngat W1_D1\n"); } if (TM_EXTI_Attach(W2_D1_PORT, W2_D1_PIN, TM_EXTI_Trigger_Falling) == TM_EXTI_Result_Ok) { TM_USART_Puts(USART3, "khoi tao ngat W2_D1\n"); } if (TM_EXTI_Attach(W2_D0_PORT, W2_D0_PIN, TM_EXTI_Trigger_Falling) == TM_EXTI_Result_Ok) { TM_USART_Puts(USART3, "khoi tao ngat W2_D0\n"); // W2D0 } /*init SWADD*/ TM_GPIO_Init(ADD_BIT0_PORT, ADD_BIT0_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); TM_GPIO_Init(ADD_BIT1_PORT, ADD_BIT1_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); TM_GPIO_Init(ADD_BIT2_PORT, ADD_BIT2_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); TM_GPIO_Init(ADD_BIT3_PORT, ADD_BIT3_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); TM_GPIO_Init(ADD_BIT4_PORT, ADD_BIT4_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); TM_GPIO_Init(ADD_BIT5_PORT, ADD_BIT5_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); TM_GPIO_Init(ADD_BIT6_PORT, ADD_BIT6_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); TM_GPIO_Init(ADD_BIT7_PORT, ADD_BIT7_PIN, TM_GPIO_Mode_IN, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_Medium); /* init OUTPUT*/ TM_GPIO_Init(RELAY_DK1_PORT, RELAY_DK1_PIN, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_High); TM_GPIO_Init(RELAY_DK2_PORT, RELAY_DK2_PIN, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_High); TM_GPIO_Init(RELAY_DK3_PORT, RELAY_DK3_PIN, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_High); TM_GPIO_Init(RELAY_DK4_PORT, RELAY_DK4_PIN, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_High); /* Initialize USART6 at 115200 baud, TX: PC6, RX: PC7 , COM 1 - RFID1 gan cong tac nguon*/ TM_USART_Init(USART6, TM_USART_PinsPack_1, 115200); /* Initialize USART3 at 115200 baud, TX: PD8, RX: PD9 , COM 2 -RFID 2 gan ethernet*/ TM_USART_Init(USART3, TM_USART_PinsPack_3, 115200); /* Initialize USART1 at 115200 baud, TX: PA9, RX: PA10, CONG 485 */ TM_USART_Init(USART1, TM_USART_PinsPack_1, 9600); /* Initialize USART2, with custom pins */ // COM 3 extension PC //TM_USART_Init(USART2, TM_USART_PinsPack_Custom,9600); TM_USART_Init(USART2, TM_USART_PinsPack_2,9600); /* int DIR 485 set = send , reset = recvice*/ TM_GPIO_Init(CCU_DIR_PORT, CCU_DIR_PIN, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High); TM_GPIO_SetPinHigh(CCU_DIR_PORT,CCU_DIR_PIN); /* Init 2 custom timers */ /* Timer1 has reload value each 500ms, enabled auto reload feature and timer is enabled */ CustomTimer1 = TM_DELAY_TimerCreate(500, 1, 1, CustomTIMER1_Task, NULL); /* Timer1 has reload value each 1000ms, enabled auto reload feature and timer is enabled */ CustomTimer2 = TM_DELAY_TimerCreate(100, 1, 1, CustomTIMER2_Task, NULL); /* Init LCD*/ TM_GPIO_Init(HD44780_RW_PORT, HD44780_RW_PIN, TM_GPIO_Mode_OUT, TM_GPIO_OType_PP, TM_GPIO_PuPd_NOPULL, TM_GPIO_Speed_High); TM_GPIO_SetPinLow(HD44780_RW_PORT,HD44780_RW_PIN); read_sw_add(); timeout = value_dip; memset(str,'\0',0); //Initialize LCD 20 cols x 4 rows TM_HD44780_Init(16, 4); //Save custom character on location 0 in LCD TM_HD44780_CreateChar(0, &customChar[0]); //Put string to LCD TM_HD44780_Puts(0, 0, "STM32F407VET\n\rCreartbyR&D-TIS"); /* 0 dong 1, 1 dong 2*/ TM_HD44780_Puts(0, 2, "Welcome"); Delayms(1000); TM_HD44780_Clear(); sprintf(str,"Timer out %d", timeout); TM_HD44780_Puts(0, 0,str); Delayms(1000); TM_HD44780_Clear(); TM_HD44780_Puts(0, 0,"----TIS8 PRO----"); //TM_USART_Puts(USART3, "Welcome2"); /*creat by duc*/ TM_WATCHDOG_Reset(); // TM_USART_BufferEmpty(USART3); // TM_USART_BufferEmpty(USART6); flag_RFID2=0; flag_RFID1=0; /*end by duc*/ while (1) { /*process 485*/ if(flag_485){ flag_485=0; if(LEDStatus==0) TM_USART_Puts(USART1, "/LED000>\r\n"); if(LEDStatus==1) TM_USART_Puts(USART1, "/LED001>\r\n"); if(LEDStatus==2) TM_USART_Puts(USART1, "/LED002>\r\n"); } /* xu li W1D0 - dk1*/ if(flag_W1D0){ turn_on_dk1(); //flag_W1D0=0; } /* xu li W1D1 - dk2*/ if(flag_W1D1){ turn_on_dk2(); //flag_W1D1=0; } //TM_WATCHDOG_Reset(); // /*end*/ if(Process!=1) TM_HD44780_Puts(0, 2,"Wait for Card"); /* 0 dong 1, 1 dong 2*/ if(flag_RFID1==1) { Process=1; IDCAR1[0]=BufferCom1[4]; IDCAR1[1]=BufferCom1[5]; IDCAR1[2]=BufferCom1[6]; IDCAR1[3]=BufferCom1[7]; IDCAR1[4]=BufferCom1[8]; IDCAR1[5]=BufferCom1[9]; IDCAR1[6]=BufferCom1[10]; if(BufferCom1[1]==0x08) { sprintf(UID1,"%02x %02x %02x %02x,1",IDCAR1[0],IDCAR1[1],IDCAR1[2],IDCAR1[3]); } if(BufferCom1[1]==0x0B) { sprintf(UID1,"%02x %02x %02x %02x %02x %02x %02x,1",IDCAR1[0],IDCAR1[1],IDCAR1[2],IDCAR1[3],IDCAR1[4],IDCAR1[5],IDCAR1[6]); } TM_HD44780_Puts(0, 2,"Waiting PC..."); /* 0 dong 1, 1 dong 2*/ if(check_vip(UID1)){ flag_PC=1; flag_R11=1; timerdk1 =0; Process=0; } else{ if(Process)TM_USART_Puts(USART2,UID1); } WaitPC(200); flag_RFID1=0; if(flag_PC) { TM_HD44780_Puts(0, 2,"Door opened.."); /* 0 dong 1, 1 dong 2*/ flag_PC=0; ProcessAction(); } else Process=0; flag_RFID1=0; } if(flag_RFID2==1) { Process=1; IDCAR2[0]=BufferCom2[4]; IDCAR2[1]=BufferCom2[5]; IDCAR2[2]=BufferCom2[6]; IDCAR2[3]=BufferCom2[7]; IDCAR2[4]=BufferCom2[8]; IDCAR2[5]=BufferCom2[9]; IDCAR2[6]=BufferCom2[10]; if(BufferCom2[1]==0x08) { sprintf(UID2,"%02x %02x %02x %02x ,2",IDCAR2[0],IDCAR2[1],IDCAR2[2],IDCAR2[3]); } if(BufferCom2[1]==0x0B) { sprintf(UID2,"%02x %02x %02x %02x %02x %02x %02x ,2",IDCAR2[0],IDCAR2[1],IDCAR2[2],IDCAR2[3],IDCAR2[4],IDCAR2[5],IDCAR2[6]); } TM_HD44780_Puts(0, 2,"Waiting PC..."); /* 0 dong 1, 1 dong 2*/ if(check_vip(UID2)){ flag_PC=1; flag_R31=1; timerdk2 =0; Process=0; } else{ if(Process)TM_USART_Puts(USART2,UID2);} WaitPC(200); flag_RFID2=0; if(flag_PC) { TM_HD44780_Puts(0, 2,"Door opened.."); /* 0 dong 1, 1 dong 2*/ flag_PC=0; ProcessAction(); } else Process=0; flag_RFID2=0; } /**/ timer_dk1 = timerdk1/2; if (timer_dk1 >= timeout){ turn_off_dk1(); flag_R11 =0; flag_W1D0=0; timerdk1=0; timer_dk1=0; flag_RFID1=0; flag_RFID2=0; Process=0; // if(LEDStatus==0) TM_USART_Puts(USART3, "/LED000>\r\n"); } timer_dk2 = timerdk2/2; if (timer_dk2 >= timeout){ turn_off_dk2(); //flag_R21 =0; flag_R31 =0; flag_W1D1=0; timerdk2=0; timer_dk2=0; //flag_RFID1=0; Process=0; // if(LEDStatus==0) TM_USART_Puts(USART3, "/LED000>\r\n"); } timer_dk3 = timerdk3; if (timer_dk3 >= 1){ turn_off_dk3(); flag_R12 =0; timerdk3=0; timer_dk3=0; } timer_dk4 = timerdk4; if (timer_dk4 >= 1){ turn_off_dk4(); flag_R22 =0; timer_dk4=0; timerdk4=0; } TM_WATCHDOG_Reset(); } }