Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
alvaro 123456
alvaro 123456
Mensagens : 476
Data de inscrição : 27/04/2019
Idade : 17

Exercício 4.06 Help! Empty Exercício 4.06 Help!

Ter Ago 02, 2022 1:32 pm
/*

*CURSO DE ROBOTICA 2020
*
* Exercicio: 4.6
* Tema: Texto terminal para display
* Atividade: Utilizando as strings receber o texto do terminal e enviar para o display
* Descrição: Declarar duas strings de 16 bytes, uma para cada linha do display e usar uma terceira de 32 bytes para receber o texto do terminal
* Hardware: Montar o display e a porta serial para as entradas e saídas de dados
* Comandos: Serial.avaiable(); Serial.read(); lcd.print(); if(); while(); for()
* Dica1: string é uma cadeia de caracteres, podemos até mesmo dizer um vetor de caracteres. Trás a linguagem C a capacidade de lidar com frases e palavras.
* Dica2: Quando declaramos string com s minusculo refere-se a uma variável, e quando String está com S maiusculo refere-se a objeto
* Dica3: Declaração da variavel string char nome_vetor[tamanho]{'a','b','c'}; tipo dos dados, sempre char. Nome do vetor identifica a variável. Entre conchetes vai o tamanho do vetor, depois
* Dica4: Lembrando que na linguagem C caractere é colocado entre ' ' (aspas simples), frases podem ser declaradas usando " " (aspas duplas)
* Dica5: Toda string termina com um caractere nulo no final(código ASCII 0), por isso na declaração deve considerar um elemento a mais no tamanho,
* * Resolução do Exercício
* Dica6: Receber o caractere na porta serial e guardar em uma string na posição 0
* Dica7: Testar se esse caractere é alphanumerico, se não for descartar, sinalizar erro e recomeçar a coleta dos dados
* Dica8: A primeira letra deve ser maiúscula, se não for converter para maiusculo, se for número ignorar a conversão.
* Dica9: Para apresentar o texto no display dividir a string recebida em duas strings de 16 caracteres e escrever cada uma em uma linha do terminal
* Dica10: o último caractere recebido pelo terminal deverá ser um \n , indicando nova linha ou enter.
*/

//EFINICOES INICIAIS
#include //biblioteca do display

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,11,10,9,8,7);
char string1[16];//string pra mostrar no display
char string2[16];//string pra mostrar no display
char string3[32];//string pra receber
int i;//contador
byte controle = 0;//controle do programa
byte cont = 0;//contador

//INICIALIZAÇÃO DO HARDWARE
void setup() {
lcd.begin(16, 2);//inicializa o display
Serial.begin(9600);//inicializa a porta serial
}

//FUNÇÕES COMPLEMENTARES


//PROGRAMA PRINCIPAL
void loop() {
while(Serial.available()){ //Enquanto tiver dados na porta serial roda o bloco abaixo
string3[cont] = Serial.read(); //Faz a leitura e guarda na string
cont ++; //Roda todas as posições pra guardar os dados
delay(10); //Tempo de 10ms
controle = 1; //Variável de controle do programa fica com o valor 1

if(cont > 31){ //Se recebeu todos os 32 digitos
break; //Sai do while
}
}
if(Serial.available()){ //Se passar de 32 digitos
Serial.println("Erro"); //Imprime o texto " ERRO " na porta-serial
Serial.flush(); //Limpa a serial
string3[0] = '\0'; //Zera a string de 32
controle = 0; //Zera o controle também
}
if(controle == 1){ //Se recebeu os digitos e leu entra
for(i = 0; i < strlen(string3); i++){ //Vai incrementando se a string for maior de que i
if(isalnum(string3[i]) != 0) { //Vê se o dado é alfanmerico
i ++; //Incrementa o contador
} else { //Senão
Serial.println("Erro no controle");//Imprime o texto " ERRO no controle " na porta-serial
string3[i] = '\0';//zera a string
}

}
if(strlen(string3) > 16){ //Se a string3 tiver mais que 16 digitos
strncat(string1,string3, 16); //Concatena a string3 para a string1 os 16 digitos
for(i = 16; i < strlen(string3); i++){ //Vai rodando os dados de 0 a 16, os outros caracteres
string2[i - 16] = string3[i]; //Transfere os 16 dados para a string2 com ajuda do for()
delay(10); //Tempo 10ms
}
}else { //Senão
strcpy(string1, string3); //copia pasando os dados para String1
}
Serial.println(string2); //Imprime o valor da string2

if(islower(string2[0]) != 0){ //Se os caracteres são letras minúsculas
string2[0] = toupper(string2[0]); //Concerte para maiúscula o primeiro dados da string2
}abcdefghijklmnopqrstuvwyzabcdefghij
if(islower(string1[0])){ //Se os caracteres são letras minúsculas
string1[0] = toupper(string1[0]); //Concerte para maiúscula o primeiro dados da string1
}
http://lcd.clear(); //Limpa o display
lcd.setCursor(0, 0); //Limpa, e seta o display linha 8 e coluna 0
lcd.print(string1); //Imprime o valor da string1 no display
lcd.setCursor(0, 1); //Limpa, e seta o display linha 8 e coluna 1
lcd.print(string2); //Imprime o valor da string2 no display

}
string3[0] = '\0'; //Zera a string de 32
string2[0] = '\0'; //Zera a string de 16
string1[0] = '\0'; //Zera a string de 16
controle = 0; //Zera também o controle
i = 0; //Zera a variável "i" também
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Ter Ago 09, 2022 9:00 pm
Oi Alvaro, Vou te ajudar a resolver o exercício.
- A principal ferramenta de desenvolvimento é o debug, permite depurar como o programa está funcionando, então precisa criar um ou mais funções que enviem as informações para o terminal para checar se o programa está funcionando adequadamente.
- No final da parte que capta o texto do terminal coloca um debug usando um for() para enviar a string3[] para o terminal e checa se está correta.
- Em seguida precisa checar o tamanho da string3[] e separá-la em duas strings de 16 posições, coloca um debug ao final ou no meio da execução para checar se o programa está fazendo o que espera.
- Manda para terminal informações como conteúdo da string e outras variáveis de controle. Vai gerar várias informações para ajudar a depurar o programa.
- Depois tem uma parte que envia as strings para o terminal, bem essa já é um debug porque já apresenta o resultado.

Então vai checando passo a passo para validar se está funcionando adequadamente e se as correções aplicadas foram efetivas. No final só remover os comandos de depuração.
alvaro 123456
alvaro 123456
Mensagens : 476
Data de inscrição : 27/04/2019
Idade : 17

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Sex Set 02, 2022 9:27 pm
/*

*CURSO DE ROBOTICA 2020
*
* Exercicio: 4.6
* Tema: Texto terminal para display
* Atividade: Utilizando as strings receber o texto do terminal e enviar para o display
* Descrição: Declarar duas strings de 16 bytes, uma para cada linha do display e usar uma terceira de 32 bytes para receber o texto do terminal
* Hardware: Montar o display e a porta serial para as entradas e saídas de dados
* Comandos: Serial.avaiable(); Serial.read(); lcd.print(); if(); while(); for()
* Dica1: string é uma cadeia de caracteres, podemos até mesmo dizer um vetor de caracteres. Trás a linguagem C a capacidade de lidar com frases e palavras.
* Dica2: Quando declaramos string com s minusculo refere-se a uma variável, e quando String está com S maiusculo refere-se a objeto
* Dica3: Declaração da variavel string char nome_vetor[tamanho]{'a','b','c'}; tipo dos dados, sempre char. Nome do vetor identifica a variável. Entre conchetes vai o tamanho do vetor, depois
* Dica4: Lembrando que na linguagem C caractere é colocado entre ' ' (aspas simples), frases podem ser declaradas usando " " (aspas duplas)
* Dica5: Toda string termina com um caractere nulo no final(código ASCII 0), por isso na declaração deve considerar um elemento a mais no tamanho,
* * Resolução do Exercício
* Dica6: Receber o caractere na porta serial e guardar em uma string na posição 0
* Dica7: Testar se esse caractere é alphanumerico, se não for descartar, sinalizar erro e recomeçar a coleta dos dados
* Dica8: A primeira letra deve ser maiúscula, se não for converter para maiusculo, se for número ignorar a conversão.
* Dica9: Para apresentar o texto no display dividir a string recebida em duas strings de 16 caracteres e escrever cada uma em uma linha do terminal
* Dica10: o último caractere recebido pelo terminal deverá ser um \n , indicando nova linha ou enter.
*/

//EFINICOES INICIAIS
#include

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(7,6,5,4,3,2);
char string1[16];//string pra mostrar no display
char string2[16];//string pra mostrar no display
char string3[32];//string pra receber
int i;//contador
byte controle = 0;//controle do programa
byte cont = 0;//contador

//INICIALIZAÇÃO DO HARDWARE
void setup() {
lcd.begin(16, 2);//inicializa o display
Serial.begin(9600);//inicializa a porta serial
}

//FUNÇÕES COMPLEMENTARES
void limpaBuffer(){
for(byte i = Serial.available(); i > 0; i--){ //Esvazia o buffer da porta serial
Serial.read();
}
}

//PROGRAMA PRINCIPAL
void loop() {
while(Serial.available()){ //Enquanto tiver dados na porta serial roda o bloco abaixo
string3[cont] = Serial.read(); //Faz a leitura e guarda na string
cont ++; //Roda todas as posições pra guardar os dados
delay(10); //Tempo de 10ms

if(cont > 31){ //Se recebeu todos os 32 digitos
Serial.print("Controle 1");
controle = 1; //Variável de controle do programa fica com o valor 1
break; //Sai do while

}
}
limpaBuffer();

if(Serial.available()){ //Se passar de 32 digitos
Serial.println("Erro passou de 32 digitos"); //Imprime o texto " ERRO " na porta-serial
string3[0] = '\0'; //Zera a string de 32
controle = 0; //Zera o controle também
}
if(controle == 1){ //Se recebeu os digitos e leu entra
Serial.print(controle);
for(i = 0; i < strlen(string3); i++){ //Vai incrementando se a string for maior de que i
if(isalnum(string3[i]) != 0) { //Vê se o dado é alfanmerico
i ++; //Incrementa o contador
} else { //Senão
Serial.println("Erro não é Alfanumerico");//Imprime o texto " ERRO no controle " na porta-serial
string3[i] = '\0';//zera a string
}

}
if(strlen(string3) > 16){ //Se a string3 tiver mais que 16 digitos
strncat(string1,string3, 16); //Concatena a string3 para a string1 os 16 digitos
for(i = 16; i < strlen(string3); i++){ //Vai rodando os dados de 0 a 16, os outros caracteres
string2[i - 16] = string3[i]; //Transfere os 16 dados para a string2 com ajuda do for()
delay(10); //Tempo 10ms
}
}else { //Senão
strcpy(string1, string3); //copia pasando os dados para String1
}
Serial.println(string2); //Imprime o valor da string2

if(islower(string2[0]) != 0){ //Se os caracteres são letras minúsculas
string2[0] = toupper(string2[0]); //Concerte para maiúscula o primeiro dados da string2
}
if(islower(string1[0])){ //Se os caracteres são letras minúsculas
string1[0] = toupper(string1[0]); //Concerte para maiúscula o primeiro dados da string1
}
http://lcd.clear(); //Limpa o display
lcd.setCursor(0, 0); //Limpa, e seta o display linha 8 e coluna 0
lcd.print(string1); //Imprime o valor da string1 no display
lcd.setCursor(0, 1); //Limpa, e seta o display linha 8 e coluna 1
lcd.print(string2); //Imprime o valor da string2 no display

}
string3[0] = '\0'; //Zera a string de 32
string2[0] = '\0'; //Zera a string de 16
string1[0] = '\0'; //Zera a string de 16
controle = 0; //Zera também o controle
i = 0; //Zera a variável "i" também
}

Funcionou com 32 dígitos
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Qua Set 07, 2022 6:27 pm
Oi Alvaro, tentando corrigir seu programa percebi quanto é mais difícil corrigir o programa dos outros do que desenvolver os próprios, rs
Fiz o teste com 32 caracteres e funcionou mesmo, então parece que falta pouco para funcionar.
Esse programa pode ser separado em duas partes, a primeira que recebe os dados e guarda na string. E a segunda que pega os dados da string e apresenta no display.
Poderia até colocar 3 etapas, uma receber os dados, outra dividir em duas strings e a terceira apresentar as strings no display.
Na primeira parte ficou um while(), depois um if() e acabou confundindo o meio de campo, não achei a lógica que poderia usar para consertar, acho que é melhor reescrever, mas se arrumar eu considero
A parte que apresenta acho que pode ser reaproveitada.

Pode também checar um detalhe, quando mandar o último caractere precisa um \n ou \r, consegue isso apertando a tecla CR no terminal, fica ali perto do texto para enviar. E no programa quando receber esse caractere encerra a primeira etapa com os dados recebidos. Talvez falta somente isso.

_________________
Paulo Augusto Batista
Tecnologia a Favor do Ensino, Educação para nossas crianças, Evolução para Nossa Sociedade
Exercício 4.06 Help! Evoluc10
alvaro 123456
alvaro 123456
Mensagens : 476
Data de inscrição : 27/04/2019
Idade : 17

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Seg Jan 23, 2023 11:07 pm
/*

*CURSO DE ROBOTICA 2020
*
* Exercicio: 4.6
* Tema: Texto terminal para display
* Atividade: Utilizando as strings receber o texto do terminal e enviar para o display
* Descrição: Declarar duas strings de 16 bytes, uma para cada linha do display e usar uma terceira de 32 bytes para receber o texto do terminal
* Hardware: Montar o display e a porta serial para as entradas e saídas de dados
* Comandos: Serial.avaiable(); Serial.read(); lcd.print(); if(); while(); for()
* Dica1: string é uma cadeia de caracteres, podemos até mesmo dizer um vetor de caracteres. Trás a linguagem C a capacidade de lidar com frases e palavras.
* Dica2: Quando declaramos string com s minusculo refere-se a uma variável, e quando String está com S maiusculo refere-se a objeto
* Dica3: Declaração da variavel string char nome_vetor[tamanho]{'a','b','c'}; tipo dos dados, sempre char. Nome do vetor identifica a variável. Entre conchetes vai o tamanho do vetor, depois
* Dica4: Lembrando que na linguagem C caractere é colocado entre ' ' (aspas simples), frases podem ser declaradas usando " " (aspas duplas)
* Dica5: Toda string termina com um caractere nulo no final(código ASCII 0), por isso na declaração deve considerar um elemento a mais no tamanho,
* * Resolução do Exercício
* Dica6: Receber o caractere na porta serial e guardar em uma string na posição 0
* Dica7: Testar se esse caractere é alphanumerico, se não for descartar, sinalizar erro e recomeçar a coleta dos dados
* Dica8: A primeira letra deve ser maiúscula, se não for converter para maiusculo, se for número ignorar a conversão.
* Dica9: Para apresentar o texto no display dividir a string recebida em duas strings de 16 caracteres e escrever cada uma em uma linha do terminal
* Dica10: o último caractere recebido pelo terminal deverá ser um \n , indicando nova linha ou enter.
*/

//EFINICOES INICIAIS
#include

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,11,10,9,8,7);
char string1[16];//string pra mostrar no display
char string2[16];//string pra mostrar no display
char string3[32];//string pra receber
int i;//contador
byte controle = 0;//controle do programa
byte cont = 0;//contador

//INICIALIZAÇÃO DO HARDWARE
void setup() {
lcd.begin(16, 2);//inicializa o display
Serial.begin(9600);//inicializa a porta serial

lcd.print("oi");
}

//FUNÇÕES COMPLEMENTARES
void limpaBuffer(){
for(byte i = Serial.available(); i > 0; i--){
Serial.read();
}
}

//PROGRAMA PRINCIPAL
void loop() {

//Bloco de leitura
while(Serial.available() && cont < 32){
string3[cont] = Serial.read();
delay(100); //Tempo de 10ms
cont++;
controle = 1;
}
limpaBuffer();

//Bloco de teste
if(controle == 1){
Serial.println(controle);
for(i = 0; i < strlen(string3); i++){
if(!isalnum(string3[i])) {
Serial.println("Nao e Alfanumerico");
string3[i] = ' ';
}
}


//Bloco de divisao
if(strlen(string3) > 16){
strncat(string1,string3, 16);
for(i = 16; i < strlen(string3); i++){
string2[i - 16] = string3[i];
delay(10); //Tempo 10ms
}
}else { //Senão
strcpy(string1, string3);
}

//Bloco apresentacao
if(islower(string2[0])){
string2[0] = toupper(string2[0]);
}
if(islower(string1[0])){
string1[0] = toupper(string1[0]);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(string1);
lcd.setCursor(0, 1);
lcd.print(string2);
}
//Bloco que zera
string3[0] = '\0';
string2[0] = '\0';
string1[0] = '\0';
controle = 0;
i = 0;

}
Oi professor o programa funciona tudo certo a primeira vez, mas nas outras ele não imprime no display mas manda o valor 1 do contador para porta serial
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Sex Mar 17, 2023 8:25 pm
Oi Alvaro, vi que está procurando a propria solução para o programa, isso demonstra a evolução que está tendo. Parabens.
Sobre o programa, na primeira parte definiu um contador chamado cont, então se não reiniciar esse cotador ele só incrementa , como usa para controlar a posição da string, então precisa que reinicie do zero a cada volta.
Vou aguardar que conclua e coloque os comentários para eu dar a nota.
alvaro 123456
alvaro 123456
Mensagens : 476
Data de inscrição : 27/04/2019
Idade : 17

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Seg Ago 28, 2023 11:16 am

/*

*CURSO DE ROBOTICA 2020
*
* Exercicio: 4.6
* Tema: Texto terminal para display
* Atividade: Utilizando as strings receber o texto do terminal e enviar para o display
* Descrição: Declarar duas strings de 16 bytes, uma para cada linha do display e usar uma terceira de 32 bytes para receber o texto do terminal
* Hardware: Montar o display e a porta serial para as entradas e saídas de dados
* Comandos: Serial.avaiable(); Serial.read(); lcd.print(); if(); while(); for()
* Dica1: string é uma cadeia de caracteres, podemos até mesmo dizer um vetor de caracteres. Trás a linguagem C a capacidade de lidar com frases e palavras.
* Dica2: Quando declaramos string com s minusculo refere-se a uma variável, e quando String está com S maiusculo refere-se a objeto
* Dica3: Declaração da variavel string char nome_vetor[tamanho]{'a','b','c'}; tipo dos dados, sempre char. Nome do vetor identifica a variável. Entre conchetes vai o tamanho do vetor, depois
* Dica4: Lembrando que na linguagem C caractere é colocado entre ' ' (aspas simples), frases podem ser declaradas usando " " (aspas duplas)
* Dica5: Toda string termina com um caractere nulo no final(código ASCII 0), por isso na declaração deve considerar um elemento a mais no tamanho,
* * Resolução do Exercício
* Dica6: Receber o caractere na porta serial e guardar em uma string na posição 0
* Dica7: Testar se esse caractere é alphanumerico, se não for descartar, sinalizar erro e recomeçar a coleta dos dados
* Dica8: A primeira letra deve ser maiúscula, se não for converter para maiusculo, se for número ignorar a conversão.
* Dica9: Para apresentar o texto no display dividir a string recebida em duas strings de 16 caracteres e escrever cada uma em uma linha do terminal
* Dica10: o último caractere recebido pelo terminal deverá ser um \n , indicando nova linha ou enter.
*/

//EFINICOES INICIAIS
#include
#include // Biblioteca do display na configuração I2C

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal_I2C lcd(0x27,16,2); // Pinagem do display na conf=iguração I2C
char string1[16];//string pra mostrar no display
char string2[16];//string pra mostrar no display
char string3[32];//string pra receber
int i;//contador para passar os valores de string para string2 e string1
byte controle = 0;//controle do programa
byte cont = 0;//contador de controle, para condições

//INICIALIZAÇÃO DO HARDWARE
void setup() {
lcd.init(); // Inicializa o display
lcd.backlight(); // Acende o backlight do display
Serial.begin(9600);//inicializa a porta serial

}

//FUNÇÕES COMPLEMENTARES
void limpaBuffer(){

// Faz a limpeza do buffer
for(byte z = Serial.available(); z > 0; z--){
Serial.read();
}
}
void debug(){
//Vai imprimir na porta serial os valres de string1 e string2
Serial.println(string1);
Serial.println(string2);
}

//PROGRAMA PRINCIPAL
void loop() {

//Bloco de leitura
while(Serial.available() && cont < 32){ //Confere se tem alguma coisa na porta serial e se e menor que o valor de cont no caso string3
string3[cont] = Serial.read(); //Faz a leira dos valores
delay(10); //Tempo de 10ms
cont++; // imcrementa a posiçõa para nova leitura
controle = 1; // Já pode ir para a proxima parte do código
}
limpaBuffer(); // Limpa o buffer

/*
* Vai rodar a string3 toda para conferir se não é um alfanumerico se for imprime aviso
* e preenche com um espaço
*/
if(controle == 1){ // Se já ntrou na primeira parte roda essa a segunda
for(i = 0; i < cont; i++){
if(!isalnum(string3[i])) {
Serial.println("Nao e Alfanumerico");
string3[i] = ' ';
}
}


//Bloco de divisao
/*
* Confere se e necessário a divisão, se for passa os primeiros 16 caracteres para a string1
* e os caractes restantes guarda na string2
*/
if(strlen(string3) > 16){
strncat(string1,string3, 16);
for(i = 16; i < strlen(string3); i++){
string2[i - 16] = string3[i];
delay(10); //Tempo 10ms
}
}else { //Senão não for necessário guarda os valores apenas na string1
strcpy(string1, string3);
}

//Bloco apresentacao
/*
* Converte as primeiras letras de cada string para maiuscula
*/
if(islower(string2[0])){
string2[0] = toupper(string2[0]);
}
if(islower(string1[0])){
string1[0] = toupper(string1[0]);
}
/*
* Apresenta no display e na porta Serial
*/

lcd.clear();//limpa o display
lcd.print(string1);//printa a string1
lcd.setCursor(0,1);//seleciona a outra posição
lcd.print(string2);//printa a string2
debug();
/*
* Vai contar todas as posições e preencher com '\0' e se passar de 16 preenche com '\0' string1 e string2
*/

for (i = 0; i < cont; i++) {
string3[i] = '\0';
if (i < 16) {
string1[i] = '\0';
string2[i] = '\0';
}
}
cont = 0; // Resetar o contador
controle = 0; // Resetar o contador
delay(1000); // Reduzido para 1 segundo
}
}

Terminei e funcionou, mas meu display está queimado e os da sala também então testei na própria porta serial


Sdaqweczxdsaqwez
Xcasdads

Uytjhgvbzxcdfswe
Rweqdsa

Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Dom Set 24, 2023 3:37 pm
Ufa, que bom que funcionou. Nota 10.0

E com esse encerra o capítulo 4 cheers cheers sunny study king bounce bounce

A promoção agora vai de aspirante para prático, Parabéns !!!!

Sobre o exercício 1.20 que é o trabalho pessoal podemos usar a bengala ou a horta. Ambos muito elogiados e merecedores do 10.0
Conteúdo patrocinado

Exercício 4.06 Help! Empty Re: Exercício 4.06 Help!

Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos