Хотелось бы упростить код, если это возможно и привести его так сказать к общему правильному виду. Видел где то статью: "Как упростить скетч" или что то в этом роде и никак не могу ее найти(( Поделитесь информацией пожалуйста. Спойлер: Код Код (C++): #include <Bounce.h> #include <LiquidCrystal.h> LiquidCrystal lcd(4, 5, 10, 11, 12, 13); Bounce bouncer = Bounce(7,5); byte errCnt = 0; byte SEC = 0; byte MIN = 0; unsigned long prMillis = 0; unsigned long startTime; unsigned long elapsedTime; int analogPin = A0; int chargePin = 9; int dischargePin = 8; int resistorValue = 10000; float microFarads; float nanoFarads; void setup() { pinMode(2, OUTPUT); pinMode(chargePin, OUTPUT); digitalWrite(chargePin, LOW); lcd.begin(16, 2); Serial.begin(9600); } void capacitor() { digitalWrite(chargePin, HIGH); startTime = millis(); while(analogRead(analogPin) < 648) { // Ничего не делает до тех пор, пока конденсатор не достигнет 63.2% суммарного напряжения } elapsedTime= millis() - startTime; microFarads = ((float)elapsedTime / resistorValue) * 1000; Serial.print(elapsedTime); Serial.print(" mS "); if (microFarads > 1) { Serial.print((long)microFarads); Serial.println(" microFarads"); } else { nanoFarads = microFarads * 1000.0; Serial.print((long)nanoFarads); Serial.println(" nanoFarads"); delay(500); } digitalWrite(chargePin, LOW); pinMode(dischargePin, OUTPUT); digitalWrite(dischargePin, LOW); while(analogRead(analogPin) > 0) { // Ничего не делать до тех пор, пока конденсатор разряжается } pinMode(dischargePin, INPUT); } void contactClosure() { if (microFarads > 50) { digitalWrite(2, HIGH); delay (500); } else { digitalWrite(2, LOW); } } int Errors() { if (microFarads > 50) errCnt++; } void showError() { lcd.setCursor(2,2); lcd.print(" Errors: "); lcd.print(errCnt); } void tickClock() { if (millis() - prMillis > 1000) { prMillis = millis(); SEC++; if (SEC > 59) { SEC = 0; MIN++; if (MIN > 59) { MIN = 0; } } } } void showClock() { lcd.setCursor(1,0); if (MIN<10) { lcd.print("0"); } lcd.print(MIN); lcd.print("\xBC\xB8\xBD"); lcd.print(" : "); if (SEC<10) { lcd.print("0"); } lcd.print(SEC); lcd.print("ce\xBA "); } void runClock() { tickClock(); showClock(); } void loop() { capacitor(); runClock(); if (Errors()) { showError(); contactClosure(); } }
он и так довольно оптимален. Единственное - вот это: Код (C++): int analogPin = A0; int chargePin = 9; int dischargePin = 8; заменить на Код (C++): const byte analogPin = A0; const byte chargePin = 9; const byte dischargePin = 8; или на Код (C++): #define analogPin A0 #define chargePin 9 #define dischargePin 8