1 (Вчера 20:04:02 отредактировано Okruru)

Тема: Arduino Микроконтроллеры (Измерить C)

переделал ваш код, как смог, это первая проба. Не все разобрал, но должен, далее справлюсь.
Arduino Микроконтроллеры
на LCD под включение на четыре ноги

 // взято отсюда ..h==://rcl-radio.ru/?p=43106

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.init();           // инициализация
 // lcd.backlight();      // включить подсветку
}
unsigned long time0, time1, time2;
float c, null0;
byte kn, mk, i;

void loop() {
  lcd.setCursor(15, 0);
  lcd.print("*");
  if (mk == 0) {
    pinMode(13, OUTPUT);
    pinMode(3, INPUT);
    digitalWrite(13, HIGH);
  }

  if (mk == 1) {
    pinMode(3, OUTPUT);
    pinMode(13, INPUT);
    digitalWrite(3, HIGH);
  }

  time0 = micros();
  while (analogRead(A0) < 644) {
    time2 = micros() - time0;
    if (time2 >= 1000000 && mk == 0) {
      mk = 1;
      time0 = 100000000;
      break;
    }
  }

  time1 = micros() - time0;

  while (analogRead(A0) > 0) {
    pinMode(3, OUTPUT);
    pinMode(13, OUTPUT);
    digitalWrite(3, LOW);
    digitalWrite(13, LOW);
  }

  if (mk == 1 && time1 < 1000) {
    mk = 0;
  }

  lcd.setCursor(1, 0);
  c = time1;
  c = c / 1000 - null0;
  c = abs(c);

  if (time1 >= 10000000) {
    lcd.setCursor(1, 0);
    lcd.print(" TEST uF   ");
  } else {                  // Вывод на LCD
    lcd.print(c);

    if (mk == 0) {
      lcd.print(" nF       ");
    }
    if (mk == 1) {
      lcd.print(" uF       ");
    }
  }
  if (i == 0) {              // калибровка нуля
    i++;
    null0 = c + 0.02;
  }
  delay(100);
} 

Будет время, желание или сдесь или прямо на GitHub
проверте где и что подправить.

2 (Сегодня 08:11:39 отредактировано Okruru)

Re: Arduino Микроконтроллеры (Измерить C)

Хм))
вот что нарыл из примеров с полными коментариями, если смотреть через б\хромиюум так вообще сказка, он даже операторы переводит. Сиди подправляй коментарии. Отличненько становится понятен что код делает

//Пример для подключения дисплея по шине I2C
//
//Тип подключения дисплея: 1 - по шине I2C, 2 - десятиконтактное. Обязательно указывать ДО подключения библиотеки
//Если этого не сделать, при компиляции возникнет ошибка: "LCD type connect has not been declared"
#define _LCD_TYPE 1
#include <LCD_1602_RUS_ALL.h>

//Выделим два переопределяемых символа
LCD_1602_RUS lcd(0x27, 16, 2, 2);
//                           ^^^ количество пользовательских символов

//Тип подключения дисплея: 1 - по шине I2C, 2 - десятиконтактное. Обязательно указывать ДО подключения библиотеки
//Если этого не сделать, при компиляции возникнет ошибка:

непонятен вопрос про символы, видимо их колличество на дисплее: значит так написана библиотека))
^^^ количество пользовательских символов

Другой пример отличается

//Пример для подключения дисплея по шине I2C
//
//Тип подключения дисплея: 1 - по шине I2C, 2 - десятиконтактное. Обязательно указывать ДО подключения библиотеки
//Если этого не сделать, при компиляции возникнет ошибка: "LCD type connect has not been declared"
#define _LCD_TYPE 1
#include <LCD_1602_RUS_ALL.h>

LCD_1602_RUS lcd(0x27, 16, 2);

void setup() {
  String str;
  str = ". Hexadecimal";

  lcd.init(); //Инициализация LCD (по умолчанию для ESP8266: 4 - SDA, 5 - SCL)
  //lcd.init(0, 2); //ESP8266-01 I2C: 0 - SDA, 2 - SCL
  
  // Печать сообщения на LCD
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print(1, DEC);
  lcd.print(". Десятичная");
  lcd.setCursor(0, 1);
  lcd.print(15, HEX);
  lcd.print(str);
}

void loop() {

примеры здесь

https://raw.githubusercontent.com/OKRUgit/MOI_chemi/refs/heads/Okrugit/Condensator/%D0%A4%D0%BE%D1%82%D0%BE%20cond/2.png

https://raw.githubusercontent.com/OKRUgit/MOI_chemi/refs/heads/Okrugit/Condensator/%D0%A4%D0%BE%D1%82%D0%BE%20cond/lcd1602.webp
и немого подправил графическое соединение.

Осталось все спаять(самое трудное, такие маленькие детальки)