101

Re: attiny13

Уважаемый liman324 что в скетче для ATtiny13 + 4-х разрядный 7-сегментный индикатор на MAX7219 0,56′ изменить чтобы не отображался не значущий ноль в десятках градусов

102

Re: attiny13

Опубликуйте скетч

103

Re: attiny13

Karl2233 пишет:

Ага. Самое сложное - это программа с графиком. Интересно ж видеть пики и реальный ток.
Учитывая что длительность тока низкая, вот тут мне кажется проблемы, вплоть до невозможности на имеющихся МК.
Надо что б измерения и вывод информации были быстрее 0,1сек (0,1 - это минимальное время импульса).
Сможете помочь с этим? Интересно ли это Вам?
Если, конечно, это вообще возможно на lgt8f328p.
P. S. Что подумал. Ведь можно измерять не 24/7 а после упрааляющего сигнала. Например, пришёл сигнал - начали измерение и делаем его в течении 2-5 сек. Потом в график.


Я подумаю над этим вопросом

104

Re: attiny13

А как опубликовать код? вот ссылка-Термометр DS18B20-http://rcl-radio.ru/?p=132443

105

Re: attiny13

WriteBit16(3, temp/10%10+0xf0);
  WriteBit16(4, temp%10);

>>>

  WriteBit16(3, temp/10%10);
  WriteBit16(4, 10);

106

Re: attiny13

Доброго время суток, liman324 С наступившим 2025 годом   Не могли бы вы подсказать что исправить в скетче Термометр на Attiny13+DS18B20 и OLED ссылка http://rcl-radio.ru/?p=112955 чтобы и минусовую температуру показывал. Заранее благодарю

107

Re: attiny13

Karl2233 пишет:
Ага. Самое сложное - это программа с графиком. Интересно ж видеть пики и реальный ток.
Учитывая что длительность тока низкая, вот тут мне кажется проблемы, вплоть до невозможности на имеющихся МК.
Надо что б измерения и вывод информации были быстрее 0,1сек (0,1 - это минимальное время импульса).
Сможете помочь с этим? Интересно ли это Вам?
Если, конечно, это вообще возможно на lgt8f328p.
P. S. Что подумал. Ведь можно измерять не 24/7 а после упрааляющего сигнала. Например, пришёл сигнал - начали измерение и делаем его в течении 2-5 сек. Потом в график.

Пока просто тест, измерение с интервалом 0,1 с, с выводом графика

#include <Wire.h> 
#include <U8glib.h>            // https://github.com/olikraus/u8glib/


 // U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  

int analogRead_A0,i1,z;
int data_arr[128],data_arr1[128];
bool c=0;


void setup() {
  delay(200);
  Wire.begin();
  analogReadResolution(10);
  analogReference(DEFAULT);
  pinMode(A0,INPUT);
  u8g.setFont(u8g_font_profont12r);
  }

void loop() {
     
     analogRead_A0 = map(analogRead(A0), 0, 1023, 0, 48);// ограничение по высоте
     
     i1++;
     if(i1<128){data_arr[i1]= analogRead_A0;}
     if(i1>=127){data_arr[127]=analogRead_A0;

     for(int i=0;i<=127;i++){data_arr1[i-1]=data_arr[i];}  
     for(int i=0;i<=127;i++){data_arr[i]= data_arr1[i];}
     }
  
  u8g.firstPage();  
   do {
   u8g.drawStr(0,12,"I");u8g.setPrintPos(12, 12);u8g.print(float(analogRead_A0)/10.0,1);u8g.drawStr(40,12,"A");
   for(int i=0;i<128;i++){
  u8g.drawLine(i, 63, i, 63-data_arr[i]);
   }
   } while( u8g.nextPage() );

  delay(100);

}

108

Re: attiny13

Измеритель тока и напряжение с выводом графика тока.
Измерение напряжения - вывод на дисплей среднее значение 10 измерений

// LGT8F328

#define INPUT_I  A0
#define INPUT_U  A2

#define KALL_I   0.98  // калибровка тока (множитель)
#define KALL_U   225   // калибровка напряжения (делитель)

#include <Wire.h> 
#include <U8glib.h>            // https://github.com/olikraus/u8glib/


 // U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  

int analogRead_A0,i1,ind_i,ind_u;
int data_arr[128],data_arr1[128];
unsigned long times1;
int m;
long u_sum;
float u_iz;



void setup() {
  Serial.begin(9600);
  delay(200);
  Wire.begin();
  analogReadResolution(10);
  analogReference(DEFAULT);
  pinMode(INPUT_I,INPUT);
  pinMode(INPUT_U,INPUT);
  u8g.setFont(u8g_font_profont12r);
  }

void loop() {
     ind_i = analogRead(INPUT_I);
     
     ind_u = analogRead(INPUT_U);
     u_sum = u_sum+ind_u;
     m++;if(m>9){m=0;u_iz=u_sum/10;u_sum=0;}
     
     analogRead_A0 = map(ind_i, 0, 1023, 0, 48);
     
     i1++;
     if(i1<128){data_arr[i1]= analogRead_A0;}
     if(i1>=127){data_arr[127]=analogRead_A0;

     for(int i=0;i<=127;i++){data_arr1[i-1]=data_arr[i];}  
     for(int i=0;i<=127;i++){data_arr[i]= data_arr1[i];}
     }
  
  u8g.firstPage();  
   do {
   u8g.drawStr(0,12,"I");u8g.setPrintPos(15, 12);u8g.print(ind_i*KALL_I,0);u8g.drawStr(40,12,"A");
   u8g.drawStr(65,12,"U");u8g.setPrintPos(80, 12);u8g.print(float(u_iz)/KALL_U,2);u8g.drawStr(115,12,"V");
   for(int i=0;i<128;i++){
  u8g.drawLine(i, 63, i, 63-data_arr[i]);
   }
   } while( u8g.nextPage() );
  delay(50); // интервал измерений
}

109

Re: attiny13

// LGT8F328

#define INPUT_I  A0
#define INPUT_U  A2

#define KALL_I   0.98  // калибровка тока (множитель)
#define KALL_U   225   // калибровка напряжения (делитель)

#include <Wire.h> 
#include <U8glib.h>            // https://github.com/olikraus/u8glib/


 // U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  

int analogRead_A0,i1,ind_i,ind_u;
int data_arr[128],data_arr1[128];
unsigned long times1;
int m;
long u_sum;
float u_iz;



void setup() {
  Serial.begin(9600);
  delay(200);
  Wire.begin();
  analogReadResolution(10);
  analogReference(DEFAULT);
  pinMode(INPUT_I,INPUT);
  pinMode(INPUT_U,INPUT);
  u8g.setFont(u8g_font_profont12r);
  }

void loop() {
     ind_i = analogRead(INPUT_I);
     
     ind_u = analogRead(INPUT_U);
     u_sum = u_sum+ind_u;
     m++;if(m>9){m=0;u_iz=u_sum/10;u_sum=0;}
     
     analogRead_A0 = map(ind_i, 0, 1023, 0, 48);
     
     i1++;
     i1=200;
     if(i1<128){data_arr[i1]= analogRead_A0;}
     if(i1>=127){data_arr[127]=analogRead_A0;

     for(int i=0;i<=127;i++){data_arr1[i-1]=data_arr[i];}  
     for(int i=0;i<=127;i++){data_arr[i]= data_arr1[i];}
     }
  
  u8g.firstPage();  
   do {
   u8g.drawStr(0,12,"I");u8g.setPrintPos(15, 12);u8g.print(ind_i*KALL_I,0);u8g.drawStr(40,12,"A");
   u8g.drawStr(65,12,"U");u8g.setPrintPos(80, 12);u8g.print(float(u_iz)/KALL_U,2);u8g.drawStr(115,12,"V");
   for(int i=0;i<128;i++){
  u8g.drawLine(i, 63, i, 63-data_arr[i]);
   }
   } while( u8g.nextPage() );
  delay(50); // интервал измерений
}

110

Re: attiny13

Движение графика в другую сторону

// LGT8F328

#define INPUT_I  A0
#define INPUT_U  A2

#define KALL_I   0.98  // калибровка тока (множитель)
#define KALL_U   225   // калибровка напряжения (делитель)

#include <Wire.h> 
#include <U8glib.h>            // https://github.com/olikraus/u8glib/


 // U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);  

int analogRead_A0,i1,ind_i,ind_u;
int data_arr[128],data_arr1[128];
unsigned long times1;
int m;
long u_sum;
float u_iz;



void setup() {
  Serial.begin(9600);
  delay(200);
  Wire.begin();
  analogReadResolution(10);
  analogReference(DEFAULT);
  pinMode(INPUT_I,INPUT);
  pinMode(INPUT_U,INPUT);
  u8g.setFont(u8g_font_profont12r);
  }

void loop() {
     ind_i = analogRead(INPUT_I);
     
     ind_u = analogRead(INPUT_U);
     u_sum = u_sum+ind_u;
     m++;if(m>9){m=0;u_iz=u_sum/10;u_sum=0;}
     
     analogRead_A0 = map(ind_i, 0, 1023, 0, 48);
     
     
     data_arr[0]=analogRead_A0;

     for(int i=0;i<=127;i++){data_arr1[i+1]=data_arr[i];}  
     for(int i=0;i<=127;i++){data_arr[i]= data_arr1[i];}
     
  
  u8g.firstPage();  
   do {
   u8g.drawStr(0,12,"I");u8g.setPrintPos(15, 12);u8g.print(ind_i*KALL_I,0);u8g.drawStr(40,12,"A");
   u8g.drawStr(65,12,"U");u8g.setPrintPos(80, 12);u8g.print(float(u_iz)/KALL_U,2);u8g.drawStr(115,12,"V");
   for(int i=0;i<128;i++){
  u8g.drawLine(i, 63, i, 63-data_arr[i]);
   }
   } while( u8g.nextPage() );
  delay(50); // интервал измерений
}

111

Re: attiny13

Доброго время суток, liman324 С наступившим 2025 годом   Не могли бы вы подсказать что исправить в скетче Термометр на Attiny13+DS18B20 и OLED ссылка http://rcl-radio.ru/?p=112955 чтобы и минусовую температуру показывал. Заранее благодарю

112

Re: attiny13

#include <avr/io.h>
#include <util/delay.h>
 
// Project Files (Github):  https://github.com/wagiminator/ATtiny13-TinyOLEDdemo
// License: http://creativecommons.org/licenses/by-sa/3.0/
 
#define I2C_SDA         PB3                   
#define I2C_SCL         PB4                  
#define TEMP            PB0
#define BUTTON          PB2
 
#define I2C_SDA_HIGH()  DDRB &= ~(1<<I2C_SDA) 
#define I2C_SDA_LOW()   DDRB |=  (1<<I2C_SDA) 
#define I2C_SCL_HIGH()  DDRB &= ~(1<<I2C_SCL) 
#define I2C_SCL_LOW()   DDRB |=  (1<<I2C_SCL) 
 
const char Message1[] PROGMEM = "TEMPERATURE";


 
int main(void) {
  PORTB |=(1 << BUTTON);
  OLED_init();                           
 // OLED_clear(); 
 
  while(1) { 
    if(((PINB >> BUTTON) & 1) == 0){
    int temp = read_temp();
    OLED_cursor(28, 0);                  
    OLED_printP(Message1);  
    OLED_cursor(45, 2); 
    if(temp<0){temp=abs(temp);OLED_num(-3);}
    byte a0 = temp/100;
    OLED_num(a0);
    a0 = temp/10%10;
    OLED_num(a0);
    OLED_num(-2);
    a0 = temp%10;
    OLED_num(((PINB >> BUTTON) & 1));
    OLED_num(-9);
    OLED_num(19);
    _delay_ms(10000);}
    OLED_clear();                   
}}
 
///// I2C ///////////////////////////////////////////////////////
void I2C_init(void) {DDRB  &= ~((1<<I2C_SDA)|(1<<I2C_SCL)); PORTB &= ~((1<<I2C_SDA)|(1<<I2C_SCL));}
void I2C_write(uint8_t data) {
  for(uint8_t i = 8; i; i--) {I2C_SDA_LOW();                        
    if (data & 0x80) I2C_SDA_HIGH();I2C_SCL_HIGH();data<<=1;I2C_SCL_LOW();}
  I2C_SDA_HIGH();I2C_SCL_HIGH();asm("nop");I2C_SCL_LOW();                         
}
void I2C_start(uint8_t addr) {I2C_SDA_LOW();I2C_SCL_LOW();I2C_write(addr);}
void I2C_stop(void) {I2C_SDA_LOW();I2C_SCL_HIGH();I2C_SDA_HIGH();}
 
///// OLED ///////////////////////////////////
#define OLED_ADDR       0x78                  
#define OLED_CMD_MODE   0x00                  
#define OLED_DAT_MODE   0x40                  
#define OLED_INIT_LEN   12                 
 
// OLED init settings
const uint8_t OLED_INIT_CMD[] PROGMEM = {
  0xA8, 0x1F,       //  0x1F for 128x32, 0x3F for 128x64 
  0x22, 0x00, 0x03, 
  0x20, 0x00,       
  0xDA, 0x02,       
  0x8D, 0x14,       
  0xAF,             
  0xA1, 0xC8 
};
 
// Standard ASCII 5x8 font (adapted from Neven Boyanov and Stephen Denne)
const uint8_t OLED_FONT[] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00, //   0  
  0x00, 0x1c, 0x22, 0x41, 0x00, // ( 8 
  0x00, 0x41, 0x22, 0x1c, 0x00, // ) 9 
  0x14, 0x08, 0x3E, 0x08, 0x14, // * 10
  0x08, 0x08, 0x3E, 0x08, 0x08, // + 11
  0x00, 0x00, 0xA0, 0x60, 0x00, // , 12
  0x08, 0x08, 0x08, 0x08, 0x08, // - 13
  0x00, 0x60, 0x60, 0x00, 0x00, // . 14
  0x20, 0x10, 0x08, 0x04, 0x02, // / 15
  0x3E, 0x51, 0x49, 0x45, 0x3E, // 0 16
  0x00, 0x42, 0x7F, 0x40, 0x00, // 1 17
  0x42, 0x61, 0x51, 0x49, 0x46, // 2 18
  0x21, 0x41, 0x45, 0x4B, 0x31, // 3 19
  0x18, 0x14, 0x12, 0x7F, 0x10, // 4 20
  0x27, 0x45, 0x45, 0x45, 0x39, // 5 21
  0x3C, 0x4A, 0x49, 0x49, 0x30, // 6 22
  0x01, 0x71, 0x09, 0x05, 0x03, // 7 23
  0x36, 0x49, 0x49, 0x49, 0x36, // 8 24
  0x06, 0x49, 0x49, 0x29, 0x1E, // 9 25
  0x00, 0x36, 0x36, 0x00, 0x00, // : 26
  0x00, 0x56, 0x36, 0x00, 0x00, // ; 27
  0x08, 0x14, 0x22, 0x41, 0x00, // < 28
  0x14, 0x14, 0x14, 0x14, 0x14, // = 29
  0x00, 0x41, 0x22, 0x14, 0x08, // > 30
  0x02, 0x01, 0x51, 0x09, 0x06, // ? 31
  0x32, 0x49, 0x59, 0x51, 0x3E, // @ 32
  0x7C, 0x12, 0x11, 0x12, 0x7C, // A 33
  0x7F, 0x49, 0x49, 0x49, 0x36, // B 34
  0x3E, 0x41, 0x41, 0x41, 0x22, // C 35
  0x7F, 0x41, 0x41, 0x22, 0x1C, // D 36
  0x7F, 0x49, 0x49, 0x49, 0x41, // E 37
  0x7F, 0x09, 0x09, 0x09, 0x01, // F 38
  0x3E, 0x41, 0x49, 0x49, 0x7A, // G 39
  0x7F, 0x08, 0x08, 0x08, 0x7F, // H 40
  0x00, 0x41, 0x7F, 0x41, 0x00, // I 41
  0x20, 0x40, 0x41, 0x3F, 0x01, // J 42
  0x7F, 0x08, 0x14, 0x22, 0x41, // K 43
  0x7F, 0x40, 0x40, 0x40, 0x40, // L 44
  0x7F, 0x02, 0x0C, 0x02, 0x7F, // M 45
  0x7F, 0x04, 0x08, 0x10, 0x7F, // N 46
  0x3E, 0x41, 0x41, 0x41, 0x3E, // O 47
  0x7F, 0x09, 0x09, 0x09, 0x06, // P 48
  0x3E, 0x41, 0x51, 0x21, 0x5E, // Q 49
  0x7F, 0x09, 0x19, 0x29, 0x46, // R 50
  0x46, 0x49, 0x49, 0x49, 0x31, // S 51
  0x01, 0x01, 0x7F, 0x01, 0x01, // T 52
  0x3F, 0x40, 0x40, 0x40, 0x3F, // U 53
  0x1F, 0x20, 0x40, 0x20, 0x1F, // V 54
  0x3F, 0x40, 0x38, 0x40, 0x3F, // W 55
  0x63, 0x14, 0x08, 0x14, 0x63, // X 56
  0x07, 0x08, 0x70, 0x08, 0x07, // Y 57
  0x61, 0x51, 0x49, 0x45, 0x43, // Z 58
};
 
void OLED_init(void) {
  I2C_init();                             
  I2C_start(OLED_ADDR);                   
  I2C_write(OLED_CMD_MODE);               
  for (uint8_t i = 0; i < OLED_INIT_LEN; i++) I2C_write(pgm_read_byte(&OLED_INIT_CMD[i])); 
  I2C_stop();                            
}
 
void OLED_printC(char ch) {
  uint16_t offset = ch - 32 -7;              
  offset += offset << 2;                  
  I2C_write(0x00);                       
  for(uint8_t i=5; i; i--) I2C_write(pgm_read_byte(&OLED_FONT[offset++])); 
}
 
void OLED_printP(const char* p) {
  I2C_start(OLED_ADDR);                   
  I2C_write(OLED_DAT_MODE);               
  char ch = pgm_read_byte(p);            
  while (ch != 0){OLED_printC(ch);ch = pgm_read_byte(++p);}
  I2C_stop();                   
}
 
void OLED_cursor(uint8_t xpos, uint8_t ypos) {
  I2C_start(OLED_ADDR);                   
  I2C_write(OLED_CMD_MODE);               
  I2C_write(xpos & 0x0F);                 
  I2C_write(0x10 | (xpos >> 4));     
  I2C_write(0xB0 | (ypos & 0x07));    
  I2C_stop();                           
}
 
void OLED_clear(void) {
  OLED_cursor(0, 0);                      
  I2C_start(OLED_ADDR);                   
  I2C_write(OLED_DAT_MODE);              
  for(uint16_t i=512; i; i--) I2C_write(0x00); 
  I2C_stop();  
}
 
void OLED_num(byte num){
  I2C_start(OLED_ADDR);                 
  I2C_write(OLED_DAT_MODE);    
  OLED_printC(num+48); 
  I2C_stop();    
  }
 
//// DS18B20 //////////////////////////////////////
uint8_t therm_reset(){
    uint8_t i;
    PORTB &= ~(1 << TEMP);
    DDRB |= (1 << TEMP);
    _delay_us(480);  
    DDRB &= ~(1 << TEMP);
    _delay_us(60);
    i=((PINB >> TEMP) & 1);
    _delay_us(420);
    return i;
}
void therm_write_bit(uint8_t bit){
    DDRB |= (1 << TEMP);
    if(bit) DDRB &= ~(1 << TEMP);
    _delay_us(60);
    DDRB &= ~(1 << TEMP);
}
uint8_t therm_read_bit(void){
    uint8_t bit=0;
    DDRB |= (1 << TEMP);
    DDRB &= ~(1 << TEMP);
    _delay_us(14);
    if(PINB & (1 << TEMP)) bit=1;
    _delay_us(45);
    return bit;
}
uint8_t therm_read_byte(void){
    uint8_t i=8, n=0;
    while(i--){n>>=1;n|=(therm_read_bit()<<7);}
    return n;
}
void therm_write_byte(uint8_t byte){
    uint8_t i=8;
    while(i--){therm_write_bit(byte&1);byte >>= 1;
    }}
int read_temp(){
    uint8_t temperature[2];
    int temper;
    therm_reset();
    therm_write_byte(0xCC);
    therm_write_byte(0x44);
    while(!therm_read_bit());
    therm_reset();
    therm_write_byte(0xCC);
    therm_write_byte(0xBE);
    temperature[0]=therm_read_byte();
    temperature[1]=therm_read_byte();
    therm_reset();
    return temper = (temperature[1] << 8 | temperature[0])*10/16;
}

113

Re: attiny13

Доброе время суток liman324, все супер СПАСИБО за отрицательные температуры, но извините за назойливость, я  скетчи  только пытаюсь освоить, можно бы убрать не значущий ноль при температурах меньше 10.

114

Re: attiny13

http://forum.rcl-radio.ru/uploads/images/2025/01/bda106f570045779f2628c6a4387d8e2.png

115

Re: attiny13

byte a0 = temp/100;
OLED_num(a0);

>>>


byte a0 = temp/100;
if(a0>0){OLED_num(a0);}

116

Re: attiny13

liman324 что-то не получаетсяhttp://forum.rcl-radio.ru/uploads/images/2025/01/50423aa35a95d637733ffb7fa75e4ec1.png

117

Re: attiny13

http://forum.rcl-radio.ru/uploads/images/2025/01/f7b7e9766c9a9c49e85f772be38f83c1.png

118

Re: attiny13

http://forum.rcl-radio.ru/uploads/images/2025/01/ea0027333d9067eb1119c05114f8539c.png

119

Re: attiny13

liman324 Спасибо, я почему то так и думал.http://forum.rcl-radio.ru/uploads/images/2025/01/5312042cd864b4bf644f5d2925f84f9c.png

120

Re: attiny13

В коде вроде как ошибка

замените
    OLED_num(((PINB >> BUTTON) & 1));
на
OLED_num(a0);

121

Re: attiny13

liman324  Заменил, плюсовые точь в точь, а минусовые на 0.1 меньшеhttp://forum.rcl-radio.ru/uploads/images/2025/01/6b9ad6a0d14dea2d177e9344188a312a.png
http://forum.rcl-radio.ru/uploads/images/2025/01/dde6696da63f85a82e0a1ed194142216.png

122 (2025-01-07 05:20:55 отредактировано Karl2233)

Re: attiny13

Александр спасибо!
Скетч из сообщения 109 работает как надо.
http://forum.rcl-radio.ru/uploads/images/2025/01/40cdf1c2d9cfb76f4a6a81cb60d8cfa9.jpg
Это я пальцем наводки создаю.

Жалко нет 1,3 двухцветных.
Пара вопросов -  в какой строке можно изменить интервал измерения?
И я ж буду переменку мерять, как-то надо вычислять RMS? Если не сложно, можете учесть этот нюанс?
Вот что подумал. Напряжения очень маленькие будут: 0-5В. В случае с делителем и диодом, точность очень низкая будет. Конечно, в данном применении точность напряжения не так и важна но...
Может есть смысл внешний АЦП или что-то подобное использовать?
Вот, наткнулся     http://easyelectronics.ru/zamer-set … eniya.html на модуль для Ардуино.


з.ы. заказал ТТ. Соберу сварочник, отпишусь.

123

Re: attiny13

Для OLED1.3

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);



delay(50); // интервал измерений

124

Re: attiny13

Да, я заметил универсальность в коде.
Спасибо за предусмотрительность.
Я про двухцветность: если б 1,3 были двухцветные - размер больше и верхняя строка другим цветом.

Александр, про измерение переменки - нет ли мыслей?
На крайний случай поставлю диод и в программе коэффициент подберу.

125

Re: attiny13

На крайний случай поставлю диод и в программе коэффициент подберу.

Если к точности нет особых требований, то можно просто диод и фильтрующий конденсатор поставить.