Gleydson Vasconcelos
/
mbedbreakingout
Breakout mbed
Revision 0:aa30225d7ed5, committed 2016-12-10
- Comitter:
- gleydsonn
- Date:
- Sat Dec 10 13:51:24 2016 +0000
- Commit message:
- Inicial Commit
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.gitignore Sat Dec 10 13:51:24 2016 +0000 @@ -0,0 +1,4 @@ +.build +.mbed +projectfiles +*.py*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Sat Dec 10 13:51:24 2016 +0000 @@ -0,0 +1,89 @@ +# Getting started with Blinky on mbed OS + +This is a very simple guide, reviewing the steps required to get Blinky working on an mbed OS platform. + +Please install [mbed CLI](https://github.com/ARMmbed/mbed-cli#installing-mbed-cli). + +## Get the example application! + +From the command line, import the example: + +``` +mbed import mbed-os-example-blinky +cd mbed-os-example-blinky +``` + +### Now compile + +Invoke `mbed compile` specifying the name of your platform and your favorite toolchain (`GCC_ARM`, `ARM`, `IAR`). For example, for the ARM Compiler 5: + +``` +mbed compile -m K64F -t ARM +``` + +Your PC may take a few minutes to compile your code. At the end you should get the following result: + +``` +[snip] ++----------------------------+-------+-------+------+ +| Module | .text | .data | .bss | ++----------------------------+-------+-------+------+ +| Misc | 13939 | 24 | 1372 | +| core/hal | 16993 | 96 | 296 | +| core/rtos | 7384 | 92 | 4204 | +| features/FEATURE_IPV4 | 80 | 0 | 176 | +| frameworks/greentea-client | 1830 | 60 | 44 | +| frameworks/utest | 2392 | 512 | 292 | +| Subtotals | 42618 | 784 | 6384 | ++----------------------------+-------+-------+------+ +Allocated Heap: unknown +Allocated Stack: unknown +Total Static RAM memory (data + bss): 7168 bytes +Total RAM memory (data + bss + heap + stack): 7168 bytes +Total Flash memory (text + data + misc): 43402 bytes +Image: .\.build\K64F\ARM\mbed-os-example-blinky.bin +``` + +### Program your board + +1. Connect your mbed device to the computer over USB. +1. Copy the binary file to the mbed device . +1. Press the reset button to start the program. + +You should see the LED of your platform turning on and off. + +Congratulations if you managed to complete this test! + +## Export the project to Keil MDK and debug your application + +From the command line, run the following command: + +``` +mbed export -m K64F -i uvision +``` + +To debug the application: + +1. Start uVision. +1. Import the uVision project generated earlier. +1. Compile your application and generate an `.axf` file. +1. Make sure uVision is configured to debug over CMSIS-DAP (From the Project menu > Options for Target '...' > Debug tab > Use CMSIS-DAP Debugger). +1. Set breakpoints and start a debug session. + +![Image of uVision](img/uvision.png) + +## Troubleshooting + +1. Make sure `mbed-cli` is working correctly and its version is greater than `0.8.9` + + ``` + mbed --version + ``` + + If not, you can update it easily: + + ``` + pip install mbed-cli --upgrade + ``` + +2. If using Keil MDK, make sure you have a license installed. [MDK-Lite](http://www.keil.com/arm/mdk.asp) has a 32KB restriction on code size.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TermControl.lib Sat Dec 10 13:51:24 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/earlz/code/TermControl/#ef410bacf0e5
Binary file img/uvision.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sat Dec 10 13:51:24 2016 +0000 @@ -0,0 +1,190 @@ +#include "mbed.h" +#include "string" +#include "stdlib.h" +#include "TermControl.h" + +using namespace std; + +DigitalOut led1(LED1); +Serial pcEstagio(USBTX, USBRX); +Serial pcBola(USBTX, USBRX); +Serial pcPlataforma(USBTX, USBRX); +AnalogIn controle(A0); +AnalogIn controleY(A1); + +const int linhas = 30; +const int colunas = 70; + +int NumBlocos = 18; +int velocidade = 250; + +int blocos[linhas][colunas]; + +int bolaY = linhas-3; +int bolaX = colunas/2; + +int direcaoX = 1; +int direcaoY = -1; + +int linhaPlataforma = linhas-2; +int colunaPlataforma = (colunas/2)-4; + +void desenhaBlocos(){ + TermControl ctrl; + + ctrl.SetTerminal(&pcEstagio); + for(int i=5;i<=11;i+=3){ + for(int j=5;j<=70;j+=11) + { + for(int k = 0;k<6;k++){ + ctrl.PrintAt(j+k, i,"\x1B[31m▒"); + blocos[i][j+k]=1; + } + } + } + NumBlocos = 18; +} + + +void desenhaEstagio(){ + TermControl ctrl; + ctrl.SetTerminal(&pcEstagio); + ctrl.Reset(); + ctrl.Clear(); + + + string linhaSuperior = "┌"; + + for(int i=1;i<colunas-1;i++){ + linhaSuperior += "─"; + } + + linhaSuperior+= "┐"; + + ctrl.PrintAt(0,0,linhaSuperior); + + for(int i=2;i<linhas-1;i++){ + ctrl.PrintAt(0, i, "│"); + ctrl.PrintAt(colunas, i, "│"); + } + + bolaY = linhas-3; + bolaX = colunas/2; + + ctrl.SetCursor(0, linhaPlataforma); + ctrl.EraseLine (); + + ctrl.PrintAt(colunaPlataforma, linhaPlataforma,"┌──────┐"); + desenhaBlocos(); +} + +void moverBola(){ + Thread::wait(velocidade); + + TermControl ctrl; + ctrl.SetTerminal(&pcBola); + + + ctrl.PrintAt(bolaX, bolaY, " "); + + if(bolaY==2) + direcaoY*=-1; + if(bolaX==2 || bolaX==colunas-2) + direcaoX*=-1; + + if(bolaY==linhas-3) + if(bolaX>=colunaPlataforma && bolaX<=colunaPlataforma+8){ + direcaoY=-1; + } + + if(bolaY==linhas-2){ + direcaoY=-1; + direcaoX=1; + bolaY = linhas-3; + bolaX = colunas/2; + + } + else{ + if(blocos[bolaY+direcaoY][bolaX+direcaoX] == 1){ + NumBlocos--; + int i; + + for(i=0;blocos[bolaY+direcaoY][bolaX+direcaoX+i]!=0;i++){ + ctrl.PrintAt(bolaX+direcaoX+i,bolaY+direcaoY," "); + blocos[bolaY+direcaoY][bolaX+direcaoX+i]=0; + } + + for(i=-1;blocos[bolaY+direcaoY][bolaX+direcaoX+i]!=0;i--){ + ctrl.PrintAt(bolaX+direcaoX+i,bolaY+direcaoY," "); + blocos[bolaY+direcaoY][bolaX+direcaoX+i]=0; + } + + direcaoY*=-1; + } + + bolaY += direcaoY; + bolaX += direcaoX; + } + + ctrl.PrintAt(bolaX, bolaY, "O"); +} + +static void moverPlataforma(){ + + int direcao; + float seta; + float setaY; + + TermControl ctrl; + ctrl.SetTerminal(&pcPlataforma); + + + while(true){ + direcao=0; + Thread::wait(50); + seta = controle.read(); + + + if(seta < 0.2f) { + direcao=-1; + } else + if(seta > 0.8f){ + direcao=1; + } + + /* + if(seta=='a'){ + direcao=-1; + }else if(seta=='d'){ + direcao=1; + }*/ + + if(direcao!=0){ + if((colunaPlataforma+direcao)<colunas-7 && (colunaPlataforma+direcao)>1){ + ctrl.SetCursor(0, linhaPlataforma); + ctrl.EraseLine (); + colunaPlataforma+=direcao; + ctrl.PrintAt(colunaPlataforma, linhaPlataforma,"┌──────┐"); + } + } + } + +} + + +int main() { + memset(blocos, 0, sizeof(int)*linhas*colunas); + + pcEstagio.baud(115200); + desenhaEstagio(); + Thread t2(moverPlataforma); + + while(true){ + if(NumBlocos==0){ + desenhaEstagio(); + velocidade = 250*0.5; + } + moverBola(); + } + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Sat Dec 10 13:51:24 2016 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#a1c0840b3d69060e5eb708edb18358e424a40f51