O circuito básico de um oscilador astável com o temporizador LM-555 todo mundo já conhece, é o da figura abaixo.
Fonte: https://commons.wikimedia.org/wiki/File:555_Astable_Diagram.svg
A frequência de saída desse oscilador é dada pelos valores de três componentes numa única malha: R1, R2 e C. Quando o circuito é alimentado, o pino 3 de saída está em Vcc e o capacitor C vai se carregando pela corrente que circula pelos resistores R1 e R2. Alcançado o valor de 2/3 de Vcc, um transistor interno do LM-555 conduz, e pelo pino 7 começa a descarregar o capacitor C através de R2 somente; nesse momento a saída do circuito é chaveada para um valor próximo de zero volt. Um outro transistor no pino 6 monitora a carga de C, e quando sua tensão cai para 1/3 de Vcc a saída no pino 3 volta para Vcc e todo o ciclo se repete. O que teremos da saída será uma onda quadrada pulsando entre Vcc e 0 volt. O pino 5 é conectado ao ponto de 2/3 do divisor de tensão interno, composto por 3 resistores de 5kΩ (daí o nome LM-555); normalmente deve ser desacoplado por um capacitor de 10nF.
A fórmula para determinar a frequência da onda quadrada no pino 3 desse circuito é:
F = 1,44 / [ C x (R1 + 2*R2) ]
Criando uma calculadora para o LM-555 com Python
Quais serão os widgets que devemos posicionar num container para essa nossa calculadora? Vamos lá: 1) um visor numérico onde podemos ler a frequência que foi calculada; 2) três campos para entrarmos com os valores de R1, R2 e C; 3) dois botões: um de ‘OK’ para calcular a frequência e outro para limpar os valores já inseridos; e, 4) as etiquetas (labels) de identificação desses widgets. Nosso layout poderia ser algo como mostrado na figura abaixo.