funcionando
Dependencies: EPD_GDE021A1 mbed reScale
Fork of DISCO-L053C8_ePD_demo by
Diff: main.cpp
- Revision:
- 5:03c1a5788923
- Parent:
- 4:38ce0cfb14e2
- Child:
- 6:f36e6f7b67a1
diff -r 38ce0cfb14e2 -r 03c1a5788923 main.cpp --- a/main.cpp Wed Sep 05 19:51:12 2018 +0000 +++ b/main.cpp Tue Oct 23 17:53:54 2018 +0000 @@ -56,8 +56,6 @@ DigitalOut led1(LED1); DigitalIn button(PA_0); Ticker flipper; -PwmOut myservo(D10); -AnalogIn CONTROL(PA_1); reScale _scale(0,1,0.05,0.1); Serial pc(USBTX, USBRX); // tx, rx @@ -98,21 +96,13 @@ led1=!led1; } -float p=0.05, k; -uint8_t x=0, y=0, i=0; -uint16_t l = 0; -char c; +uint16_t x=0, y=0, i=0; +char c, c1, c2; char s[100]; -bool flag_init = 0; + + int main() { -//-----As linhas abaixo configuram e ligam o ESC-------- - myservo.period(0.02f); //configura o periodo para o padrão PPM - myservo = 0.1; //pulso mais longo 2mS - wait(1); - myservo = OFF; //pulso mais curto 1mS - wait(1); -//fim das configs do ESC flipper.attach(&flip, 0.1);//interrupção para piscar o led, debug para saber se o uC travou @@ -130,121 +120,52 @@ epd.RefreshDisplay(); epd.Clear(EPD_COLOR_WHITE); - flag_init = 1; - myservo = OFF; + epd.SetFont(&Font16); while(1) { -//---------------------MENU PRINCIPAL--------------------------------------- - if(flag_init == 1) - { - pc.printf("\nOla, escolha uma opcao abaixo:"); - pc.printf("\nA. Selecionar fonte"); - pc.printf("\nB. Limpar o Epaper"); - pc.printf("\nC. Escreve texto no Epaper"); - pc.printf("\nD. Para usar o brushless"); - pc.printf("\nE. Para reiniciar\n\n"); - flag_init = 0; - }//FIM DO MENU PRINCIPAL - - c = pc.getc(); - -//--------------------MENU DE FONTES----------------------------------------- - if(c == 'A') - { - pc.printf("\n1. para a fonte pequena"); - pc.printf("\n2. para a fonte media"); - pc.printf("\n3. para a fonte grande"); - c = pc.getc(); - - //FONTE PEQUENA - if(c == '1') - { - epd.SetFont(&Font8); - pc.printf("\nFonte pequena selecionada"); - c = 0x00; - } - - //FONTE MEDIA - if(c == '2') - { - epd.SetFont(&Font12); - pc.printf("\nFonte media selecionada"); - c = 0x00; - } - - //FONTE GRANDE - if(c == '3') - { - epd.SetFont(&Font16); - pc.printf("\nFonte grande selecionada"); - c = 0x00; - } + +//----------ROTINA PARA ESCREVER NO EPAPER------------------------ - }//FIM DO MENU DE FONTES + pc.printf("\nEscolha a linha Y, de 0 a 3:"); + c = pc.getc(); + switch (c) + { + case '3': y = 0;break; + case '2': y = 4;break; + case '1': y = 8;break; + case '0': y = 12;break; + } + pc.printf("\n%u",y); -//--------------LIMPAR EPAPER------------------------------------ - if(c == 'B') - { - epd.Clear(EPD_COLOR_WHITE); - epd.RefreshDisplay();; - pc.printf("\nEpaper limpo\n"); - c = 0x00; - }//FIM DA ROTINA DE LIMPEZA DO EPAPER - -//----------ROTINA PARA ESCREVER NO EPAPER------------------------ - if(c == 'C') - { - if(epd.GetFont() == &Font8) // Fonte numero 8 podemos ter 9 linhas no display!!!!!!!!!!!!!! - { - pc.printf("\nEscolha a linha, de 0 a 8:"); - c = pc.getc(); - switch (c) + pc.printf("\nEscolha a coluna X, de 00 a 19:"); + c1 = pc.getc(); + c2 = pc.getc(); + switch (c2) { - case '0': l = 0;break; - case '1': l = 1;break; - case '2': l = 2;break; - case '3': l = 3;break; - case '4': l = 4;break; - case '5': l = 5;break; - case '6': l = 6;break; - case '7': l = 7;break; - case '8': l = 8;break; - } - } - c = 0x00; + case '0': x = 0;break; + case '1': x = 1;break; + case '2': x = 2;break; + case '3': x = 3;break; + case '4': x = 4;break; + case '5': x = 5;break; + case '6': x = 6;break; + case '7': x = 7;break; + case '8': x = 8;break; + case '9': x = 9;break; + } + + switch (c1) + { + case '0': x = x + 0;break; + case '1': x = x + 10;break; + + } + + x = x * 10; + pc.printf("\n%u",x); - if(epd.GetFont() == &Font12) // Fonte numero 12 podemos ter 6 linhas no display!!!!!!!!!!!!!! - { - pc.printf("\nEscolha a linha, de 0 a 5:"); - c = pc.getc(); - switch (c) - { - case '0': l = 0;break; - case '1': l = 1;break; - case '2': l = 2;break; - case '3': l = 3;break; - case '4': l = 4;break; - case '5': l = 5;break; - } - } - c = 0x00; - - if(epd.GetFont() == &Font16) // Fonte numero 16 podemos ter 4 linhas no display!!!!!!!!!!!!!! - { - pc.printf("\nEscolha a linha, de 0 a 3:"); - c = pc.getc(); - switch (c) - { - case '0': l = 0;break; - case '1': l = 1;break; - case '2': l = 2;break; - case '3': l = 3;break; - } - } - c = 0x00; - - pc.printf("\nEntre com seu texto (com line feed - LF):"); + pc.printf("\nEntre com seu texto (com # no final):"); do { @@ -252,51 +173,20 @@ s[i] = c; ++i; } - while(c!='\n'); //entra em loop, coletando os caracteres até achar o \n, e então sai do loop + while(c!='#'); //entra em loop, coletando os caracteres até achar o \n, e então sai do loop s[i-1] = '\0'; //elimina o caracter terminador de strings pc.printf("%s", s); - epd.DisplayStringAtLine(l, (uint8_t*)s, CENTER_MODE); + for(int o = 0; o < i - 1; o++) + { + epd.DisplayChar(x, y,s[o]); + x = x + 10; + } + //epd.DisplayStringAt(x, y, (uint8_t*)s, CENTER_MODE); epd.RefreshDisplay(); i=0; - }//FIM DA ROTINA PARA ESCREVER NO EPAPER - -//----------ROTINA PARA CONTROLAR O MOTOR BRUSHLESS- PULSOS PPM---------------- - if(c == 'D') - { - pc.printf("\nP para parar"); - while(1) - { - k = CONTROL; - p =_scale.from(k); //converte o valor do ADC (0.0 - 1.0) para valor compativel do PPM (1 - 2 mS) - myservo = p; - pc.printf("control %f\n\r",p); - wait(0.2); - if(pc.readable()) - { - c = pc.getc(); - } - if(c == 'P') - { - break; - } - if(button == 1) - { - wait(0.1); //Debounce - if(button == 1) - { - break; - } - } - } - myservo = OFF; - pc.printf("\nSaindo da funcao brushless"); - }//FIM DA ROTINA DO MOTOR BRUSHLESS - -//-------ROTINA PARA EXIBIR NOVAMENTE O MENU PRINCIPAL------------- - if(c == 'E') - flag_init = 1; + //FIM DA ROTINA PARA ESCREVER NO EPAPER }//FIM DA WHILE }//FIM DO PROGRAMA \ No newline at end of file