Jhonatan Serafim

Respostas no Fórum

Visualizando 15 posts - 16 até 30 (de 548 do total)
  • Autor
    Posts
    • 01/02/2023 às 15:30 #40003396272

      Olá, Éderson, tudo ótimo!

      Essa sua pergunta está não está na questão correta. Poderia por gentiliza adicionar ela no tópico correto.

      Fico no seu aguardo.

        01/02/2023 às 06:47 #40003396220

        Olá, Éderson!

        É recomendado a utilização de uma variável do tipo char, para armazenar caracteres ou dados alfanuméricos. O tipo char é usado para armazenar um único caractere, como letras, números, símbolos, entre outros. Em algumas implementações. Por exemplo:

        char letra = ‘A’;

        Neste exemplo, a variável “letra” é do tipo char e armazena o caractere ‘A’.

        ———————————

        char escola = ‘CTA’;

        Neste exemplo, a variável “escola” é do tipo char e armazena o caractere ‘CTA’.

        ———————————-

        Espero que essa mensagem possa te ajudar.

          01/02/2023 às 06:41 #40003396219

          Olá, Éderson!

          Em linguagem C, as aspas simples são usadas para denotar uma constante do tipo “char”. Quando você usa aspas simples para delimitar um caractere, ele é armazenado como um único byte na memória. Por exemplo:

          char c = ‘A’;

          Neste exemplo, o caractere ‘A’ é armazenado como uma constante do tipo char e atribuído à variável “c”.

          Espero que essa mensagem possa te ajudar.

            30/01/2023 às 16:30 #40003396057

            Olá Éderson!

            O Timer, oscilador e conversor analógico digital são alguns dos periféricos internos que podem ser encontrados nos microcontroladores PIC 8 bits. Espero que isso ajude! Se precisar de mais informações, por favor, não hesite em perguntar.

              05/07/2021 às 09:56 #40003362143

              Fala Derlei,
              Observe que em sua análise, o Sr. utilizou 20MHz no cálculo da frequência interna (dividido por 4, para resultar em 5MHz).
              Acontece que a pergunta em questão cita explicitamente o uso no kit didático. E no kit didático, como pode ver nos cabeçalhos de todos programas que fizemos durante o curso, utiliza-se a frequência de 48MHz. Frequência essa que quando dividida internamente por 4, gera 12MHz.
              Obs: lembrando que esse processo, denominado pipeline, fora explicado durante a aula de estrutura interna do microcontrolador. Caso ainda restem dúvidas, fique a vontade para nos procurar.

              Dando prosseguimento a sua análise, no seu cálculo o Sr. ainda utilizou o complemento de carga do TMR0 (256 – TMR0). Entretanto, lembre-se que esse complemento é utilizado para análise do ESTOURO do timer. Acontece que a questão cita um INCREMENTO. Logo, esse complemento todo, deve ser substituído apenas pelo número 1.
              Em resumo, iremos encontrar o período da frequência e multiplicar por 1 (evidentemente não é necessário a multiplicação por 1, justamente porque todo valor multiplicado por 1 resulta nele próprio. Apenas foi citado como registro didático da expressão matemática utilizada).

              Sendo assim, teríamos:

              T = 1/(f/4) * (256 – TMR0)
              T = 1/(48M/4) * (256 – 255)
              T = 1/12M * 1
              T = 83,3 ns.

              Espero ter ajudado.
              Bons estudos e até breve!

                05/04/2021 às 20:29 #40003360846

                Fala Derlei, nesse caso como você já tem uma mensagem no display LCD é interessante que você limpe o display para inserir a nova mensagem, que tem até um tempo determinado para ser exibida.

                  05/04/2021 às 18:44 #40003360843

                  Fala Derlei!

                  Sua dúvida não ficou muito clara, mas vou tentar ajudar com base no que entendi do seu código.

                  1 – botões de Pagar
                  Essa etapa do projeto deve ocorrer apenas após todas as outras estarem funcionais. Pois bem, o botão pg apenas simula um sistema de pagamento. A grosso modo basta adicionar um botão que ira simular a entrada de notas ou outro meio de pagamento. Sendo assim você pode criar uma função que monitora o botão pg e adicionar essa função apenas no local onde é solicitado o pagamento.

                  2 – retirar o produto
                  Essa mensagem pode estar inclusa na função que monitora o pagamento.

                  3 – botão CANCELA
                  Está deve ser uma função que monitora o botão cancelar que pode ser requisitada a qualquer momento do código. Sendo assim crie uma função que monitora um botão e que quando ele for acionado apresenta a mensagem solicitada e reinicia o sistema. Obs.: Faça a chamada dela em todos os locais do código assim poderá cancelar a qualquer operação.

                  Se a dúvida ainda persistir deixe uma mensagem aqui.

                  Grande abraço.

                    10/03/2021 às 16:18 #40003360428

                    Fala Lucas.

                    Pois bem creio que já tenha finalizado a aula 5 e viu o uso dessa instrução output, deve ter aprendido que podemos usar ela para se referir a um pino como também a um port inteiro do Microcontrolador. Sendo assim já está claro que as questões se relacionam a um port. Agora falta entender o que é esse valor dentro do parâmetro da instrução, certo?
                    Então vamos lá, para essa instrução você precisa saber que podemos definir valores em hexadecimal usando 0x’VALOR’, binário 0b’VALOR’ e em decimal atribuindo o valor direto.
                    Para responder essas questões basta saber o valor dos parâmetros e associar com os pinos.

                    Exemplo:
                    output_b(0xFF) é o mesmo que 0b1111111. Sendo assim estaríamos atribuindo nível lógico alto para todos os pinos do port b, supondo que no port b tenhamos leds todos eles acenderiam.

                      10/03/2021 às 16:15 #40003360427

                      Pois bem creio que já tenha finalizado a aula 5 e viu o uso dessa instrução output, deve ter aprendido que podemos usar ela para se referir a um pino como também a um port inteiro do Microcontrolador. Sendo assim já está claro que as questões se relacionam a um port. Agora falta entender o que é esse valor dentro do parâmetro da instrução, certo?
                      Então vamos lá, para essa instrução você precisa saber que podemos definir valores em hexadecimal usando 0x’VALOR’, binário 0b’VALOR’ e em decimal atribuindo o valor direto.
                      Para responder essas questões basta saber o valor dos parâmetros e associar com os pinos.

                        10/03/2021 às 16:04 #40003360426

                        Boa tarde, Derlei!

                        Segue aqui uma breve resposta elaborada pelo nosso Professor Ricardo no gupo.

                        Pois bem, é compreensível que tenhamos que passar um valor para a instrução de controle de ports (além de várias outras).
                        Também é compreensível que esse valor deve ser o número do pino que se deseja controlar.
                        Mas aí vem o primeiro questionamento:
                        “por que não passamos simplesmente um número no formato decimal então, não é muito mais fácil escrever apenas pino 1, pino 2, pino 3…”

                        Resposta: Sem dúvidas é mais fácil sim!!

                        Entretanto, na maior parte das vezes não vamos acionar um único pino.
                        Aí vem o nosso primeiro problema, imagine que tenhamos que acionar o pino 1 e 2 de um determinado Port. O que você faria nessa situação??

                        Resposta: Posso usar uma instrução para ligar o pino 1 e OUTRA instrução para ligar o pino 2.

                        Porém, veja que estamos gastando duas instrução aqui…
                        Nada errado nisso!!

                        Entretanto, e se precisarmos ligar três, quatro, cinco pinos simultâneos de um Port. Vamos usar três, quatro, cinco instruções separadas para fazer a mesma coisa (ligar pino)????

                        Resposta: não!!!
                        Iremos usar uma instrução só. Entretanto, qual valor vou passar como parâmetro para indicar a ligação de dois ou mais pinos simultâneos??

                        Veja que para ligar o pino 1 eu posso passar para função o número 1 (em decimal mesmo).
                        Agora, se eu for ligar o pino 1 e o 2. Eu não posso passar 12 (doze), correto?

                        É aí que vem a necessidade de se utilizar notações que permitam o agrupamento de valores de forma compreensível ao microcontrolador.

                        Utilizando a notação Hexadecimal, além de permitir uma redução do tamanho da sintaxe da expressão (veja que com dois dígitos FF, por exemplo, eu escrevo um valor equivalente a três dígitos, pois FF equivale a 255.

                        Para o microcontrolador o Hexadecimal é uma notação excelente. Já é natural para o mesmo a sua compreensão.
                        Suas conversões são mais difíceis para nós, humanos. Porém, muito mais simples para os controladores, que aliás, nativamente já as utilizam em seus registradores.

                        Por esse motivo, passar parâmetros em Hexadecimal é sempre mais “elegante” e supostamente mais otimizado.

                        Nada os impede de passar os valores em decimal (quando possível) ou binário. Porém, nesses casos será mais simples para você fazer a conversão. Mas mais complicado para o microcontrolador.

                        Repito, nada errado em se utilizar decimal e binário vez ou outra. Mas é bom se acostumar a passar valores em hexa, pois projetos maiores serão beneficiados com essa simples prática.

                          10/03/2021 às 15:58 #40003360424

                          Boa tarde, Thiago!

                          Olá Thiago a questão se refere aos pinos de entrada e saída, os i/o (input/output). Os pinos quem tem mais de uma função. Na página 3 do pdf do datasheet você pode encontrar uma tabela que com o resumo dos periféricos dessa família de microcontroladores. Sendo assim podemos na ultima linha dessa tabeça na coluna i/o localizar a quantidade de pins que tem essa função.
                          DataSheet
                          Grande abraço.

                            25/11/2020 às 00:00 #40003305936

                            Olá Luiz, só por esse trecho de código não é possível lhe ajudar.
                            Pelo output da IDE localize a linha que informa erro e informe o erro.
                            Também pode encaminhar a pasta do projeto por e-mail para serafim@ctaeletronica.com.br assim poderei analisar o projeto por completo.

                              25/11/2020 às 00:00 #40003305937

                              Olá Luiz!

                              Para essa atividade podemos analisar o código afim de descobrir o tempo que o Led inverte, e confrontar com o kit na prática.
                              Vamos lá!
                              Primeiro, nós temos que calcular a resolução de cada estourou do Timer0.
                              Para isso devemos usar a seguinte fórmula:

                              R = 1/(fosc/4)*(256 – Tmr0)*prescaler

                              Calculando:

                              R = 1/(20×10^6/4)(256-0)(256)
                              R = 4/(20×10^6)*(256²)
                              R ≈ 13,11ms

                              Então o tempo de cada estourou será de aproximadamente 13ms.

                              Nós vemos que a cada estouro do Timer0, vai ocorrer uma interrupção e será incrementado um valor na variável conta que se inicializa com 0 e dentro do while(TRUE) fica fazendo o pooling dessa variável, sempre testando se essa

                              Agora para saber o tempo em que o LED se inverterá, é só multiplicar a resolução por 153:

                              T = resolução*153
                              T = 13,11×10^-3 * 153
                              T ≈ 2s.

                              Bons estudos.

                                28/07/2020 às 00:00 #40003305795

                                Fala Luiz!

                                Creio que ele não reconheça pois na sua biblioteca tenha outra forma de escrita
                                Por exemplo LCD_comando ou LCD_texto.

                                Também fiz o ajuste na questão onde precisava ter sido passado o tipo das variáveis. (correção realizada)

                                int num = 65;   
                                char letra= 'A'; 
                                
                                	while(TRUE)
                                		{
                                		LCDcomando(Linha_1);
                                		printf(LCDtexto,"Numero %c", num);
                                		delay_ms(500);
                                		LCDcomando(Linha_2);
                                		printf(LCDtexto,"Letra %u", letra);
                                		delay_ms(2500);
                                		LCDcomando(LimpaLCD);
                                		delay_ms(700);
                                		}
                                

                                Lembre-se sempre que cada um pode criar sua biblioteca como deseja, o que importa é a sintaxe do código.

                                Grande abraço.

                                  02/07/2020 às 00:00 #40003305753

                                  Fala João!

                                  Recebi a pasta do seu projeto por e-mail e percebi que diverge do encaminhado aqui no fórum de ajuda. Ao compilar e gravar no kit constatei que o código agora funciona corretamente.

                                  As mudanças que você mesmo fez foi apenas nos valores dos cálculos. Permita-me apresentar aqui:

                                  1° Calculo de distancia:
                                  Assim apresentando o valor em centímetros -> distancia2=((tempo2*0.6666)/58);
                                  Assim apresentando o valor em metro -> distancia=((tempo*0.6666)/5882);

                                  2° Calculo da área
                                  Assim apresentando o valor em centímetros -> area=((distancia*distancia2)/100);
                                  Assim apresentando o valor em metro -> area=distancia*distancia2;

                                  Como a atividade solicita que seja apresentado os valores em metro quadrado nada melhor que já coletar em metro, parabéns, você pode até criar um carácter especial para o simbolo ² deixaria mais elegante a apresentação.

                                  Vou apresentar uma sugestão para cálculos dentro do printf o calculo da área você poderia ter poupado espaço para seu código e dispensando a função calcula aplicando a multiplicação das duas variáveis dentro do printf.
                                  Exemplo:

                                          LCD_comando(Linha_1);
                                  	printf(LCD_texto, "  Area Quadrada   ");
                                  	LCD_comando(Linha_2);
                                  	printf(LCD_texto, "   %5.2f m2", (distanciax*distanciay));
                                          

                                  Optando por essa forma simplifica o código. Mas ressalto isso é só mais um recurso da linguagem C, e cada programador pode fazer do jeito que optar e necessitar no projeto.

                                Visualizando 15 posts - 16 até 30 (de 548 do total)