Термометр 0/999 градусов на Attiny13

в общий провод ТМ резистор?

не вариант, яркость будет прыгать.

Тогда ждать ТСа

ТСа - это что?

Автора проекта, может напряжение снизить, контроллер позволяет

В скетче нашел ссылку в "Инициализация дисплея TM1650… " - там есть описание, как менять яркость. Попробую.

ты о таблице?

// адреса регистров управления и данных ТМ1650
// 1-0х24
// 2-0х25
// 3-0х26
// 4-0х27
// *********инициализация дисплея************
//___________________________________________
//b7 b6 b5 b4 b3 b2 b1 b0 IФункция   I опис. I
//___________________________________________
//x  0  0  0      x  x    I          I   8   I
//x  0  0  1      x  x    I          I   1   I
//x  0  1  0      x  x    I          I   2   I
//x  0  1  1      x  x    I яркость  I   3   I
//x  1  0  0      x  x    I          I   4   I
//x  1  0  1      x  x    I          I   5   I
//x  1  1  0      x  x    I          I   6   I
//x  1  1  1      x  x    I          I   7   I
//____________________________________________
//x           0   x  x    I  режим   I 8ceгм I
//x           1   x  x    I 7/8 bit  I 7ceгм I
//____________________________________________
//x               x  x  0 Ibit ON/OFFI  OFF  I
//x               x  x  1 I  дисплея I   ON  I
//____________________________________________

Да, о ней.

по умолчанию яркость =8 дисплей 7 сегментный?

I2CWrite(B00010001);
яркость = 1, 8 сегм. отображение ON - так вроде?

Восьмой сегмент это точка. В народе эти дисплеи зовут - семисегментными

это я взял из скетча по ссылке

034 // *********инициализация дисплея************

035 //___________________________________________

036 //b7 b6 b5 b4 b3 b2 b1 b0 IФункция I опис. I

037 //___________________________________________

038 //x 0 0 0 x x I I 8 I

039 //x 0 0 1 x x I I 1 I

040 //x 0 1 0 x x I I 2 I

041 //x 0 1 1 x x I яркость I 3 I

042 //x 1 0 0 x x I I 4 I

043 //x 1 0 1 x x I I 5 I

044 //x 1 1 0 x x I I 6 I

045 //x 1 1 1 x x I I 7 I

046 //____________________________________________

047 //x 0 x x I режим I 8ceгм I

048 //x 1 x x I 7/8 bit I 7ceгм I

049 //____________________________________________

050 //x x x 0 Ibit ON/OFFI OFF I

051 //x x x 1 I дисплея I ON I

052 //____________________________________________

053

054

055 Wire.beginTransmission(0x24); //обращаемся к любому порту 0х24-0х27

056 Wire.write(0b01000001); //включаем:яркость 4,8 битный режим, отображение ON

057 Wire.endTransmission(); // закрываем сессию

Пришли индикаторы с общим катодом, все заработало. Яркость пришлось даже добавить из-за светофильтра (сделал пока 4, как в примере выше, в оригинале 1).
// I2CWrite(B00010001); // яркость 1
I2CWrite(B01000001); // яркость 4

Код замечательный. На ATTiny13 работает отлично. Но без правки на ATmega328 не работает.
Вот поправленный код под ATmega328 + добавлен гистерезис в 1 градус, чтобы не скакали показания + добавлена сигнализация о превышении заданной температуры (постоянный сигнал на светодиоде или пищалке на ноге 13) и об обрыве термопары (прерывистый сигнал). На ATmega328 занимает 808 байт памяти. (Скетч использует 808 байт (2%) памяти устройства. Всего доступно 32768 байт.
Глобальные переменные используют 0 байт (0%) динамической памяти, оставляя 2048 байт для локальных переменных. Максимум: 2048 байт.)

// Точный термометр до 1000 градусов на attiny13 с max6675 и TM1637
// с фильтрацией дребезга - гистерезис - 1 градус
// с индикацией на 13 пине превышения температуры и обрыва датчика


#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>

// Контрольная температура, при превышении которой, будет сигнализация
#define MAX_TEMP  220 // Граничная температура для сигнализации - при её достижении срабатывает сигнализация


// Настройка пинов
#define MISO_PIN  PB0 // D8
#define CS_PIN    PB1 // D9
#define SCK_PIN   PB2 // D10
#define CLK_TM    PB3 // D11
#define DIO_TM    PB4 // D12
#define BEEP_PIN  PB5 // D13

#define TM_DELAY() _delay_us(2)

#define DIO_H()    (PORTB |=  (1 << DIO_TM))
#define DIO_L()    (PORTB &= ~(1 << DIO_TM))
#define DIO_OUT()  (DDRB  |=  (1 << DIO_TM))
#define DIO_IN()   (DDRB  &= ~(1 << DIO_TM))
#define DIO_RD()   ((PINB & (1 << DIO_TM)) ? 1 : 0)
#define CLK_H()    (PORTB |=  (1 << CLK_TM))
#define CLK_L()    (PORTB &= ~(1 << CLK_TM))
#define BEEP_ON()  (PORTB |=  (1 << BEEP_PIN))
#define BEEP_OFF() (PORTB &= ~(1 << BEEP_PIN))

//------------- ¤ркость свечени¤ индикатора ----------
#define Bright0 0x88
#define Bright1 0x89
#define Bright2 0x8A
#define Bright3 0x8B
#define Bright4 0x8C
#define Bright5 0x8D
#define Bright6 0x8E
#define Bright7 0x8F
#define SetBright Bright5 //сюда прописать ¤ркость от 0 до 7
//------------------------------------------------------------------

PROGMEM const uint8_t _digit2segments[] =
{
  0x3F, // 0
  0x06, // 1
  0x5B, // 2
  0x4F, // 3
  0x66, // 4
  0x6D, // 5
  0x7D, // 6
  0x07, // 7
  0x7F, // 8
  0x6F, // 9
  0x00, // пусто
  0x63  // Значок градуса
};

// Прототипы функций
void TM1637_start();
void TM1637_stop();
uint8_t TM1637_write_byte(uint8_t value);
void send_cmd(uint8_t value);
int spiRead();

int main(void) 
{
    // Настройка портов
    DDRB |= (1 << CS_PIN) | (1 << SCK_PIN) | (1 << CLK_TM) | (1 << DIO_TM) | (1 << BEEP_PIN);
    DDRB &= ~(1 << MISO_PIN);
    
    _delay_ms(300);
    
    send_cmd(SetBright); 							// Яркость
    send_cmd(0x40); 								// Режим автоинкремента
    
    int lastDispVal = -5000;
    int filteredTemp = -5000;
    int maxTemp = MAX_TEMP;

    while(1) 
	{
        int t = spiRead();
        
        if (t == -99) 
		{
            BEEP_ON();
            if (lastDispVal != -99) 
			{
                TM1637_start();
                TM1637_write_byte(0xC0);
                TM1637_write_byte(0x79); 
				TM1637_write_byte(0x50);
                TM1637_write_byte(0x50); 
				TM1637_write_byte(0x00);
                TM1637_stop();
                lastDispVal = -99;
            }
            _delay_ms(100);
            BEEP_OFF();
        } 
        else {
            int currentTemp = t >> 2; 

            if (filteredTemp == -5000) 
				filteredTemp = currentTemp;
            else 
				filteredTemp = (filteredTemp + currentTemp) / 2;

            if (filteredTemp >= maxTemp) 
				BEEP_ON();
            else 
				BEEP_OFF();

            if (filteredTemp != lastDispVal) 
			{
                uint8_t d0, d1, d2;
                int v = filteredTemp;
                
                d0 = (v >= 100) ? pgm_read_byte(&_digit2segments[v / 100]) : 0x00;
                d1 = pgm_read_byte(&_digit2segments[(v % 100) / 10]);
                d2 = pgm_read_byte(&_digit2segments[v % 10]);

                TM1637_start();
                TM1637_write_byte(0xC0); 
                TM1637_write_byte(d0);
                TM1637_write_byte(d1);
                TM1637_write_byte(d2);
                TM1637_write_byte(pgm_read_byte(&_digit2segments[11])); // Выводим символ Градуса
                TM1637_stop();
                
                lastDispVal = filteredTemp;
            }
        }
        _delay_ms(200); 
    }
}

int spiRead() 
{
    int rawData = 0;
    PORTB &= ~(1 << CS_PIN); TM_DELAY();
    PORTB |= (1 << CS_PIN);  _delay_ms(50); 
    PORTB &= ~(1 << CS_PIN); TM_DELAY();
    for (int i = 15; i >= 0; i--) 
	{
        PORTB |= (1 << SCK_PIN); 
		TM_DELAY();
        if (PINB & (1 << MISO_PIN)) 
			rawData |= (1 << i);
        PORTB &= ~(1 << SCK_PIN); 
		TM_DELAY();
    }
    PORTB |= (1 << CS_PIN);
    if (rawData & 0x04) 
		return -99;
    return (rawData >> 3) & 0x0FFF;
}

void TM1637_start() 
{ 
	DIO_OUT(); 
	DIO_H(); 
	CLK_H(); 
	TM_DELAY(); 
	DIO_L(); 
	TM_DELAY(); 
	CLK_L(); 
}

void TM1637_stop()  
{ 
	DIO_OUT(); 
	CLK_L(); 
	DIO_L(); 
	TM_DELAY(); 
	CLK_H(); 
	TM_DELAY(); 
	DIO_H(); 
}

uint8_t TM1637_write_byte(uint8_t value) 
{
    for (uint8_t i = 0; i < 8; i++, value >>= 1) 
	{
        CLK_L(); 
		if (value & 0x01) 
			DIO_H(); 
		else 
			DIO_L();
        TM_DELAY(); 
		CLK_H(); 
		TM_DELAY();
    }
    CLK_L(); 
	DIO_IN(); 
	DIO_H(); 
	TM_DELAY(); 
	CLK_H(); 
	TM_DELAY();
    uint8_t ack = DIO_RD(); 
	CLK_L(); 
	DIO_OUT();
    return ack;
}

void send_cmd(uint8_t value) 
{
    TM1637_start();
    TM1637_write_byte(value);
    TM1637_stop();
}

Схема из Протеуса

Простите за, возможно, глупый вопрос… но всё же: Нахуа?

Странный вопрос. )) Автор дал код, о котором написал, что он подойдёт для ATmega328, на которой код реально не стартанёт. Я дал правку проверенного в Протеусе варианта, чтобы не мучались желающие использовать код на ATmega328, на которой можно дополнить решение кучей доработок для управления или сигнализации устройств с MAX6675 и термопарой. Например управление порогом срабатывания сигнализации, плавным разогревом до нужной температуры, поддержанием заданной температуры и т.д. Места для дополнительного кода просто море.

В каком посте он это писал? Если не сложно - напиши. Я что-то не вижу…

Замена авторскому и дешевле и без батарейков.
https://www.ozon.ru/product/termometr-vysokoy-temperatury-nerzhaveyushchey-stali-1933768727/

Да я , вроде, прямо в своём посте цитату автора привёл.
Ну могу ещё раз картинкой продублировать.

И где там точночть до градуса?