Algumas décadas atrás, quando eu tive o meu primeiro contato prático com programação, eu queria aprender todas as linguagens a que tivesse acesso. Com o passar dos anos, fui ficando mais seletivo e passando a apresentar resistência a algumas linguagens.
De forma meio inesperada, Python é uma destas linguagens. A importância dos espaços na linguagem conflita com o meu aprendizado inicial numa época em que se afastava dos cartões perfurados e a liberdade de forma era uma vantagem apregoada por tudo que era novo. A impossibilidade de declarar o tipo das variáveis se choca com a minha forma habitual de desenvolvimento e levanta preocupações sobre a detecção de erros somente em campo (não estou sozinho nisto). E tem uma série de incômodos, entre os quais a incompatibilidade da versão 3 com a versão 2 (o fato de ainda estar falando isto 10 anos depois do lançamento da versão 3 mostra como o problema é grave).
Mas eu insisto em aprender Python. Já escrevi diversos pequenos programas (principalmente no Raspberry), mas estou longe de saber de cor a sintaxe e meu código certamente não é "pitônico". "Introducing Python" veio como parte de um monte de livros em uma oferta do Humble Bundle e é a minha tentativa mais recente.
domingo, novembro 17, 2019
Crítica: Introducing Python
domingo, outubro 27, 2019
Resenha: Understanding the Linux Kernel
Qual programador não tem o interesse em saber como funciona (por dentro) um sistema operacional? "Understanding the Linux Kernel", de Daniel Bovet e Marco Cesati se propõe a ser um passeio guiado pelas principais estruturas de dados, algorítimos e truques de programação do Linux, explicando como ele trabalha e porque "funciona tão bem em uma grande variedade de sistemas".
quarta-feira, outubro 23, 2019
Timer1 do ATmega328 - Parte 5
Para fechar esta série de posts vamos falar das interrupções que podem ser geradas pelo Timer. Lembrando, uma interrupção é algo que interrompe o fluxo normal do programa para executar uma rotina específica (de preferência curta e rápida, para não impactar o processamento normal.
quarta-feira, outubro 16, 2019
Timer1 do ATmega328 - Parte 4
Nesta quarta parte vamos examinar um uso muito comum do timer: a geração de sinais do tipo PWM (Pulse Width Modulation). Em um sinal PWM temos um pulso sendo repetido periodicamente; o tempo em que ele se repete é o seu período (cujo inverso é a frequência). A largura do pulso é o tempo que o sinal permanece em nível alto. É comum falarmos também no duty cycle, que é a relação entre a largura e o período (ou seja, a porcentagem do tempo que o sinal fica em nível alto).
Por exemplo, vamos considerar um pulso de 25 microssegundos (us) que se repete a cada 100 microssegundos. O período é 100 us, a frequência é 10KHz, a largura é 25uS e o duty cycle é 25%.
Embora os princípios sejam simples, os detalhes são complicados. Recomendo ler e reler o manual do ATmega para ver todos os detalhes da programação destes modos.
Por exemplo, vamos considerar um pulso de 25 microssegundos (us) que se repete a cada 100 microssegundos. O período é 100 us, a frequência é 10KHz, a largura é 25uS e o duty cycle é 25%.
Embora os princípios sejam simples, os detalhes são complicados. Recomendo ler e reler o manual do ATmega para ver todos os detalhes da programação destes modos.
quarta-feira, outubro 09, 2019
Timer1 do ATmega328 - Parte 3
Nesta parte vamos falar na função de Captura do Timer1. A figura abaixo (extraída do datasheet) é o diagrama de blocos da Unidade de Captura (troque "n" por "1" nos nomes dos registradores e dos pinos).
quarta-feira, outubro 02, 2019
(Mini) Avaliação: Raspberry Pi 4 Modelo B
Mais uma geração da Raspberry Pi, desta vez com algumas mudanças significativas, e mais uma mini-avaliação (como eu fiz com as Raspberry 3, 2 e 1B+). Entre a 3 e a 4 tivemos a 3B+ que eu não cheguei a colocar a mão.
Categorias:
Avaliação,
Hardware,
Linux,
Processadores,
Raspberry Pi
quarta-feira, setembro 25, 2019
Timer1 do ATmega328 - Parte 2
Continuando o nosso estudo do funcionamento e programação do Timer1, vamos examinar o modo de operação. Como vimos na primeira parte, o coração do Timer1 é um contador, que é atualizado conformes os pulsos de um clock. O modo de operação define a sequência de contagem e o que acontece com os pinos controlados pelo Timer1. Neste post vamos nos concentrar nos modos "não PWM" (que ficam para para um post específico).
quarta-feira, setembro 11, 2019
Timer1 do ATmega328 - Parte 1
A origem desta série é o meu post sobre maneiras de piscar um LED no Arduino. Os timers do ATmega, principalmente o Timer1, são muito poderosos. E, com grandes poderes, vem grandes complicações... O diagrama abaixo (extraído do manual do ATmega328) mostra os grandes blocos do Timer1 (clique para ampliar).
quarta-feira, setembro 04, 2019
De Volta ao Básico: Piscando um LED de Quatro Formas Diferentes
É um ritual obrigatório: a primeira coisa a fazer com uma placa ou microcontrolador é piscar um LED. Vamos ver aqui quatro formas diferentes de fazer isto com um Arduino Uno.
domingo, setembro 01, 2019
Crítica: Avengers Masterworks Vol 3 e 4
Eu comprei estes livros sabendo que já tinha lido o volume 2, mas ao começar a ler não lembrava nada das histórias anteriores... Nestas horas o blog é a minha extensão de memória. Realmente eu li o vol 2 - em 2009! Impressionante como 10 anos se passaram tão rápido.
quarta-feira, agosto 28, 2019
Minha Primeira Placa de Circuito Impresso
Bem, não exatamente. Na minha adolescência eu fiz várias plaquinhas, mas de forma artesanal. Esta é a primeira vez que eu faço o layout no computador e envio para fabricar.
domingo, agosto 25, 2019
Resenha: The Mold in Dr. Florey's Coat: The Story of the Penicillin Miracle
Meus conhecimentos sobre a penicilina eram poucos antes de ler este livro: uma certa ideia da sua importância para a medicina e uma lembrança de ter sido descoberta acidentalmente por um cientista chamado Fleming. Não desconfiava da importância de vários outros personagens, que são o foco deste livro, nem as circunstâncias e os dramas da comprovação da sua eficácia e do desenvolvimento das técnicas necessárias para a sua produção.
quarta-feira, agosto 21, 2019
Projeto: Contagem Regressiva
Este é mais um dos meus "projetos quase inúteis com excesso de tecnologia". Como vocês devem ter visto nos posts de aniversário do blog, eu gosto de mostrar contadores em displays. No caso eu queria mostrar uma contagem regressiva para um evento, em semanas e dias.
domingo, agosto 18, 2019
Crítica: Space Odyssey: Stanley Kubrick, Arthur C. Clarke, and the Making of a Masterpiece
O meu primeiro contato com 2001 foi o livro do Arthur C Clarke, na biblioteca do ginásio. O filme eu só vi um bom tempo depois. "Space Odyssey: Stanley Kubrick, Arthur C. Clarke, and the Making of a Masterpiece" foi a minha oportunidade de conhecer mais sobre o processo que gerou os dois.
quarta-feira, agosto 14, 2019
Obtendo a Data e Hora Atual de um Servidor NTP
De vez em quando precisamos da data e hora atual em um projeto com microcontrolador. Uma opção é incluir um relógio não volátil (como eu fiz aqui), mas quando temos conexão à internet podemos obter estas informações de um servidor NTP.
Categorias:
ESP32,
ESP8266,
Programação,
Protocolos
quinta-feira, agosto 08, 2019
Montando um Kit de Detector de Metais
O Pakéquis já comentou sobre este kit no seu blog e canal do Youtube, mas eu tenho uma certa ligação afetiva com detectores de metais e vou me arriscar a chover no molhado.
quarta-feira, julho 10, 2019
ESP32/Arduino: NVS e Preferences
No post anterior falamos na emulação de EEProm no suporte ao Arduino da ESP32, vamos ver agora as formas recomendadas pela ExpressIf para armazenamento não volátil de informações.
quarta-feira, maio 15, 2019
ESP32/Arduino: Partições da Flash e emulação de EEProm
Nos Arduinos baseados nos microcontroladores ATmega, a Flash é interna ao microcontrolador e tem uma organização bastantes simples: o bootloader e a aplicação, com tamanhos e posições definidos pelos fuses.
No ESP32 a Flash é externa (mas está dentro do módulo) e possui um esquema mais flexível que permite criar várias partições.
No ESP32 a Flash é externa (mas está dentro do módulo) e possui um esquema mais flexível que permite criar várias partições.
![]() |
| A Flash é o CI na parte de baixo - fonte: https://randomnerdtutorials.com/esp32-pinout-reference-gpios/ |
domingo, maio 12, 2019
Crítica: Thor Masterworks Vol 6
Continuando a minha leitura das histórias antigas do Thor, chego ao volume 6 com as revistas de junho de 67 a maio de 68.
domingo, maio 05, 2019
Crítica: Flag in Exile
Continuando a leitura da saga de Honor Harrington, um livro que retorna o ritmo que tinha decaído no anterior (que eu critiquei aqui).
Spoiller alert: esta crítica referencia parcialmente o desfecho do livro anterior.
Spoiller alert: esta crítica referencia parcialmente o desfecho do livro anterior.
Assinar:
Postagens (Atom)
















