Realmente um excelente vídeo, e como sempre, uma explicação detalhada e elucidativa do tópico abordado. Obrigado por compartilhar conosco esses conhecimentos.
Show de bola agregou conhecimento, comprei o curso arduíno básico, está sendo legal o conhecimento que estou tendo acesso e sobre o avançado, quando sai, fico aguardando.
E no caso de faltar pinos de interrupção externa, tbm tem a opção do circuito com buffer pra dois botões ocupando apenas uma porta que o próprio WR publicou anos atrás. Tenho que recomendar essa pq serviu muito bem aos meus projetos!
Olá professor, faço eng elétrica e semestre passado trabalhei com o ATMEGA328P, eu utilizava ponteiros para configurar os registradores e carregar valores, da seguinde maneira(o exemplo abaixo é apenas para ilustração): unsigned char *p_ddrd = (unsigned char*)0x2A; *p_ddrd = *p_ddrd | 0xFE; Essa maneira é mais efetiva comparada ao método que você mostrou utilzando shiftleft e bitwise? Lembrando que temos o problema de eu ter que buscar o endereço de cada registrador no manual do fabricante. Eu fazia dessa maneira pois o foco era realmente ganhar espaço de memória e acho que com ponteiros é bem efetivo. Desde já, agradeço pela aula!
Excelente aula por demonstrar formas diferentes de se chegar (aparentemente) no mesmo resultado funcional. Sugiro uma aula complementar para evidenciar o que coloquei como "aparentemente", processando outras coisas no loop. E também mostrar como ficaria no Mega, que tem outro processador.
Top tô gostando muito disso estava muito interessado nas técnicas de programação do Atmega através dos registradores, torcendo para um curso de PIC pela Hotmart focado para desenvolvimento ou um curso de Arduino com Atmel Studio. 👏👏 Como sempre parabéns pela dedicação.
video muito bom. amigo com eu poderia eviar uma letra para o displayquando acionar o botao usando esse codigo abaixo; #include #include #include LiquidCrystal_I2C lcd(0x27,16,2);
#define botao_F 3 //define o botão no pino 3 #define led_F 8 //define o led no pino 8 void setup(){ pinMode(led_F, OUTPUT); pinMode(botao_F, INPUT_PULLUP); lcd.begin (16,2); //inicia o display 16x2 lcd.init(); lcd.backlight();
Pode parecer uma dúvida boba, mas sou iniciante na área. Se eu colocar o Arduino na bateria e configurar o botão como pull up, a bateria se esgotará mais rápido do que se o botão estivesse como pull down?
Em geral o consumo não se modifica, a menos que mude o valor do resistor de PU/PD. Mas, como em geral utiliza-se 10k, o consumo por si só já é bem baixo.
É para isso que eu pago a internet! Esse recuso é útil demais da conta! Poupar memória no Arduíno Uno é tudo pois ele estoura o limite de memória com muita facilidade, obrigando a galera partir para o Mega, que é bem mais caro...
Se eu utilziar o arduino mega2560, os registradores são os mesmos, já que é feito pelo mesmo fabricante o integrado? Este vídeo pode ser aplicado facilmente ou terei que consutlar todo o datasheet do microcontrolador?
Rambo, existe um flag no gcc que otimiza desempenho do código, mas gera um código maior. O flag é o -O2 (vai até -O3), o default do arduino eh -Os (você consegue ver no momento da compilação). Nunca fiz nenhum benchmark, mas em códigos que não ocupam toda a memória, vale mesmo usar -O2? Abraço.
Mestre, na substituição de um capacitor 10uf / 35v com a ESR alta em uma fonte chaveada ! eu posso substituir por um com voltagem maior tipo "10uf / 50v"? isso vai dar diferença na oscilação?
Show de demostração! :-) parabéns. Só fiquei com uma dúvida: E quanto ao tempo de atuação entre o click e o ligar ou desligar o led, é igual em ambos os códigos?
Pode-se combinar as duas técnicas para leitura de mais botões. Experimente criar um algoritmo para teclado matricial com 2 linha e N colunas. As linhas são as entradas de interrupção externa e as colunas serão varridas por interrupção do TIMER.
Valeu Paulo! Já tentei instalar mas não funcionou, aí devido a correria acabei deixando pra outro dia. Uma hora dessas eu tento novamente para ver o que ocorreu de errado.
@@canalwrkits Ah tranquilo. Realmente compensa muito. Utilizo o Linux e rodou redondo agora não sei no Windows. Parabéns pelo ótimo trabalho aqui na plataforma. Acompanho faz anos.
Parabéns pelo vídeo, excelente qualidade! Uma dúvida: com relação ao bouncing, ele existe? Precisa ser tratado via capacitor ou podemos aplicar soluções via software? Pois ter bouncing em uma interrupção pode prejudicar o que estiver no looping. Neste caso, não tinha nada, mas em uma aplicação real, qual a melhor alternativa?
Obrigado Nelio! Sim, existe o bouncing uma vez que os botões são contatos mecânicos. Pode-se realizar a filtragem digital por software ou aplicar capacitores externos. Melhor alternativa não existe, depende muito do contexto.
Com AVR não. Apenas poderá expandir a memória de dados (variáveis, vetores, etc) através de uma RAM externa ou mesmo uma EEPROM. No caso de um microcontrolador 8051 trabalhando em modo processador, pode-se expandir a memória de programa sim.
@@canalwrkits muito obrigado tenho grande curiosidade sobre esta expansão de memórias, se possível poderia trazer este experimento e tbm os dual core dsPIC tratando audio com filtros e reverb, desde já grato
bom dia o curso é nota 1000 ótimo mas estou com um problema no curso de Microcontrolador estou esando o mikloC pro for pic v.6.0.0 quando eu compilo o código aparece erro 357 e 102 como faso para resolver isso quem pode mim ajuda
Olá Jorge, tem que verificar se a versão está instalada corretamente. Interprete os erros que ocorrem, o que eles informam. Eu sempre utilizo a versão 4.15
Recomendo o curso de Linguagem C. Lá ensinamos desde o básico com riqueza de detalhes: go.hotmart.com/N48026554Y O canal tem mais de 3600 vídeos e é repleto de conteúdos para iniciantes.
Cara, que código horrível de se ler. Engenheiros também deveriam aderir ao clean code. Isso de deixar o código ilegível para parecer mais difícil é uma bobagem sem tamanho. Entre dois códigos que executam a mesma tarefa, com a mesma eficiência o melhor é o mais simples. Essa cabeça de criar um código que só você entende é muito ultrapassada.
Não é o que os nossos mais de 290 MIL alunos falam sobre meus códigos. Faz assim, cria um canal, escreve os seus maravilhosos códigos e compartilhe de GRAÇA. Se é capaz de fazer melhor ótimo, quanto mais conhecimento compartilhado melhor.
Só é ilegível para quem não estudou os registradores do microcontrolador. Entre dois códigos que um vou precisar de uma placa com mais memória e portanto mais cara e o outro para a placa mais barata por ter menos memória, vou preferir a que tem o custo menor
Dica de nível sênior em sistemas embarcados. Obrigado pela aula, me deu uma visão ampla pra explorar mais.
Muito obrigado Thalles! Isso aí, vamos com tudo neste ano para ajudar vocês ao máximo.
Realmente um excelente vídeo, e como sempre, uma explicação detalhada e elucidativa do tópico abordado. Obrigado por compartilhar conosco esses conhecimentos.
Show de bola agregou conhecimento, comprei o curso arduíno básico, está sendo legal o conhecimento que estou tendo acesso e sobre o avançado, quando sai, fico aguardando.
Excelente Marcelo, bons estudos e fique atento ao canal para novidades!
E no caso de faltar pinos de interrupção externa, tbm tem a opção do circuito com buffer pra dois botões ocupando apenas uma porta que o próprio WR publicou anos atrás. Tenho que recomendar essa pq serviu muito bem aos meus projetos!
Olá professor, faço eng elétrica e semestre passado trabalhei com o ATMEGA328P, eu utilizava ponteiros para configurar os registradores e carregar valores, da seguinde maneira(o exemplo abaixo é apenas para ilustração):
unsigned char *p_ddrd = (unsigned char*)0x2A;
*p_ddrd = *p_ddrd | 0xFE;
Essa maneira é mais efetiva comparada ao método que você mostrou utilzando shiftleft e bitwise? Lembrando que temos o problema de eu ter que buscar o endereço de cada registrador no manual do fabricante. Eu fazia dessa maneira pois o foco era realmente ganhar espaço de memória e acho que com ponteiros é bem efetivo.
Desde já, agradeço pela aula!
Gosto muito de programação com registradores. Parabéns
Muito obrigado José! Continue nos acompanhando!
Excelente aula por demonstrar formas diferentes de se chegar (aparentemente) no mesmo resultado funcional. Sugiro uma aula complementar para evidenciar o que coloquei como "aparentemente", processando outras coisas no loop. E também mostrar como ficaria no Mega, que tem outro processador.
Valeu Silvio, sugestões anotadas.
"Funções fofinhas da IDE do Arduino" kkkkkkkk
Valeu por nos presentear com esses vídeos top no WR Kits!
Top tô gostando muito disso estava muito interessado nas técnicas de programação do Atmega através dos registradores, torcendo para um curso de PIC pela Hotmart focado para desenvolvimento ou um curso de Arduino com Atmel Studio. 👏👏 Como sempre parabéns pela dedicação.
Muito obrigado Flavio!
Olá Wagner boa aula
Quase um Assembler! kkk. Show de bola!!!!
@Eng. Wagner [WR Kits], como fica a questão do ((debounce))(mal contato inicial que gera falsos clicks) nesse caso de uso direto dos registradores ?
excelente!! parabéns mestre Rambo!!
Muito show !
Aula top como sempre.
Obrigado mestre!
video muito bom. amigo com eu poderia eviar uma letra para o displayquando acionar o botao usando esse codigo abaixo;
#include
#include
#include
LiquidCrystal_I2C lcd(0x27,16,2);
#define botao_F 3 //define o botão no pino 3
#define led_F 8 //define o led no pino 8
void setup(){
pinMode(led_F, OUTPUT);
pinMode(botao_F, INPUT_PULLUP);
lcd.begin (16,2); //inicia o display 16x2
lcd.init();
lcd.backlight();
}
void loop(){
if(digitalRead(botao_F) == LOW){
delay(100);
digitalWrite(led_F, HIGH);
} else {
digitalWrite(led_F, LOW);
}
}
Wagner, posso colocar PORTD = 0d01010101 para acender leds alternados em um só comando?
Ficou show!!
Vc poderia de agora pra frente programar só usando os registradores, assim nos abtuamos com esse processo, igual nós pics
Pretendo continuar trazendo softwares com este nível de abstração, para explorar várias dicas com vocês.
Teria condições de a cada aperto no botão. Para acionar 2 pinos?
Pode parecer uma dúvida boba, mas sou iniciante na área. Se eu colocar o Arduino na bateria e configurar o botão como pull up, a bateria se esgotará mais rápido do que se o botão estivesse como pull down?
Em geral o consumo não se modifica, a menos que mude o valor do resistor de PU/PD. Mas, como em geral utiliza-se 10k, o consumo por si só já é bem baixo.
É para isso que eu pago a internet! Esse recuso é útil demais da conta! Poupar memória no Arduíno Uno é tudo pois ele estoura o limite de memória com muita facilidade, obrigando a galera partir para o Mega, que é bem mais caro...
Exatamente Rodrigo, sempre temos que observar isso. Valeu!
Se eu utilziar o arduino mega2560, os registradores são os mesmos, já que é feito pelo mesmo fabricante o integrado? Este vídeo pode ser aplicado facilmente ou terei que consutlar todo o datasheet do microcontrolador?
Rambo, existe um flag no gcc que otimiza desempenho do código, mas gera um código maior. O flag é o -O2 (vai até -O3), o default do arduino eh -Os (você consegue ver no momento da compilação). Nunca fiz nenhum benchmark, mas em códigos que não ocupam toda a memória, vale mesmo usar -O2? Abraço.
Mestre, na substituição de um capacitor 10uf / 35v com a ESR alta em uma fonte chaveada ! eu posso substituir por um com voltagem maior tipo "10uf / 50v"? isso vai dar diferença na oscilação?
Não, pois a diferença é pequena. Uma tensão de trabalho ligeiramente superior não acarretará em problemas.
Como sempre nos passando muito conhecimento! :v
Tem curso de Arduino avançado?
Show de demostração! :-) parabéns.
Só fiquei com uma dúvida:
E quanto ao tempo de atuação entre o click e o ligar ou desligar o led, é igual em ambos os códigos?
Valeu Cesar! Quanto maior o espaço ocupado pelo programa, maior o tempo de processamento.
Vai cortar esse cabelo!!😆😆😆😆
Provavelmente esse ano eu corto. Hahah
Estou maratonando o canal e cada vídeo ele está com o cabelo diferente kkkk
Wagner, entre usar a interrupção externa e a varredura de botões por estouro dos timers, qual você recomenda?
Pode-se combinar as duas técnicas para leitura de mais botões. Experimente criar um algoritmo para teclado matricial com 2 linha e N colunas. As linhas são as entradas de interrupção externa e as colunas serão varridas por interrupção do TIMER.
@@canalwrkits show! Muito obrigado
Top, top
Uma sugestão: Já experimentou usar o VSCode com o plugin PlatformIO com IDE substituta ao Arduino? É muito melhor para a produtividade.
Valeu Paulo! Já tentei instalar mas não funcionou, aí devido a correria acabei deixando pra outro dia. Uma hora dessas eu tento novamente para ver o que ocorreu de errado.
@@canalwrkits Ah tranquilo. Realmente compensa muito. Utilizo o Linux e rodou redondo agora não sei no Windows. Parabéns pelo ótimo trabalho aqui na plataforma. Acompanho faz anos.
nota 10
Parabéns pelo vídeo, excelente qualidade! Uma dúvida: com relação ao bouncing, ele existe? Precisa ser tratado via capacitor ou podemos aplicar soluções via software?
Pois ter bouncing em uma interrupção pode prejudicar o que estiver no looping. Neste caso, não tinha nada, mas em uma aplicação real, qual a melhor alternativa?
Obrigado Nelio! Sim, existe o bouncing uma vez que os botões são contatos mecânicos. Pode-se realizar a filtragem digital por software ou aplicar capacitores externos. Melhor alternativa não existe, depende muito do contexto.
Gostaria de um vídeo explicando como acionar válvulas proporcionais por PWM.
Conseguimos aplicar uma memória externa para aumentarmos o tamanho dos códigos ?
Com AVR não. Apenas poderá expandir a memória de dados (variáveis, vetores, etc) através de uma RAM externa ou mesmo uma EEPROM. No caso de um microcontrolador 8051 trabalhando em modo processador, pode-se expandir a memória de programa sim.
@@canalwrkits muito obrigado tenho grande curiosidade sobre esta expansão de memórias, se possível poderia trazer este experimento e tbm os dual core dsPIC tratando audio com filtros e reverb, desde já grato
bom dia o curso é nota 1000 ótimo mas estou com um problema no curso de Microcontrolador estou esando o mikloC pro for pic v.6.0.0 quando eu compilo
o código aparece erro 357 e 102 como faso para resolver isso quem pode mim
ajuda
Olá Jorge, tem que verificar se a versão está instalada corretamente. Interprete os erros que ocorrem, o que eles informam. Eu sempre utilizo a versão 4.15
@@canalwrkits obrigado vou verificar e baixa está versão 4.15
eu consigo comprar em loja eletrica ou só site?
Recomendo a Filipe Flop bit.ly/filipeflop-wrkits
Like garantido...grande abraço
Ninja!
como sempre muito dificil a programação. iniciantes não tem muito lugar nesse canal infelizmente.
Recomendo o curso de Linguagem C. Lá ensinamos desde o básico com riqueza de detalhes: go.hotmart.com/N48026554Y
O canal tem mais de 3600 vídeos e é repleto de conteúdos para iniciantes.
👀👏
LIKE
like
Cara, que código horrível de se ler. Engenheiros também deveriam aderir ao clean code. Isso de deixar o código ilegível para parecer mais difícil é uma bobagem sem tamanho. Entre dois códigos que executam a mesma tarefa, com a mesma eficiência o melhor é o mais simples. Essa cabeça de criar um código que só você entende é muito ultrapassada.
Não é o que os nossos mais de 290 MIL alunos falam sobre meus códigos. Faz assim, cria um canal, escreve os seus maravilhosos códigos e compartilhe de GRAÇA. Se é capaz de fazer melhor ótimo, quanto mais conhecimento compartilhado melhor.
Só é ilegível para quem não estudou os registradores do microcontrolador. Entre dois códigos que um vou precisar de uma placa com mais memória e portanto mais cara e o outro para a placa mais barata por ter menos memória, vou preferir a que tem o custo menor