Здравствуйте, коллеги ардуинщики, помогите начинающему с проблемой.
Дело такое делаю что то вроде термостата и требуется регулировать температуру в пределах десятых долей. Регулирую потенциометром. Что вы можете посоветовать?
Дело такое делаю что то вроде термостата и требуется регулировать температуру в пределах десятых долей. Регулирую потенциометром. Что вы можете посоветовать?
#include <LiquidCrystal.h>
#include <EEPROM.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
long potenciometr;
float stemp1;
float stemp2;
float stemp3;
float stemp4;
float rtemp1;
float rtemp2;
float rtemp3;
float rtemp4;
void load() {
stemp1 = EEPROM.read(1);
stemp2 = EEPROM.read(2);
stemp3 = EEPROM.read(3);
stemp4 = EEPROM.read(4);
}
void ranc_menu() {
potenciometr = analogRead(A1);
potenciometr = (map(potenciometr,0,1023,1,4));
}
void temp() {
lcd.setCursor(4, 0);
lcd.print(stemp1);
lcd.setCursor(4, 1);
lcd.print(stemp2);
lcd.setCursor(4, 2);
lcd.print(stemp3);
lcd.setCursor(4, 3);
lcd.print(stemp4);
delay(70);
}
void menu() {
if (potenciometr == 1) {
lcd.setCursor(0, 0);
lcd.print(">");
stemp1 = map(analogRead(A2),0,1023,0,100);
stemp1 = (map(stemp1,0,100,35,50));
EEPROM.write(1, stemp1);
}
if (potenciometr == 2) {
lcd.setCursor(0, 1);
lcd.print(">");
stemp2 = map(analogRead(A2),0,1023,0,100);
stemp2 = (map(stemp2,0,100,35,50));
EEPROM.write(2, stemp2);
}
if (potenciometr == 3) {
lcd.setCursor(0, 2);
lcd.print(">");
stemp3 = map(analogRead(A2),0,1023,0,100);
stemp3 = (map(stemp3,0,100,35,50));
EEPROM.write(3, stemp3);
}
if (potenciometr == 4) {
stemp4 = map(analogRead(A2),0,1023,0,100);
lcd.setCursor(0, 3);
lcd.print(">");
stemp4 = (map(stemp4,0,100,35,50));
EEPROM.write(4, stemp4);
}
if (stemp1 > 40) {
analogWrite(A3,130);
} else {
analogWrite(A3,0);
}
if (stemp2 > 40) {
analogWrite(A4,130);
} else {
analogWrite(A4,0);
}
}
void clear() {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void word2() {
lcd.setCursor(1, 0);
lcd.print("I1");
lcd.setCursor(1, 1);
lcd.print("I2");
lcd.setCursor(1, 2);
lcd.print("I3");
lcd.setCursor(1, 3);
lcd.print("I4");
}
void word22() {
lcd.setCursor(10, 0);
lcd.print(rtemp1);
lcd.setCursor(10, 1);
lcd.print(rtemp2);
lcd.setCursor(10, 2);
lcd.print(rtemp3);
lcd.setCursor(10, 3);
lcd.print(rtemp4);
}
void setup()
{
lcd.begin(16,4);
potenciometr = 0;
stemp1 = 35;
stemp2 = 35;
stemp3 = 35;
stemp4 = 35;
rtemp1 = 40;
rtemp2 = 40;
rtemp3 = 40;
rtemp4 = 40;
load();
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
}
void loop()
{
ranc_menu();
word2();
word22();
menu();
temp();
clear();
}
#include <EEPROM.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
long potenciometr;
float stemp1;
float stemp2;
float stemp3;
float stemp4;
float rtemp1;
float rtemp2;
float rtemp3;
float rtemp4;
void load() {
stemp1 = EEPROM.read(1);
stemp2 = EEPROM.read(2);
stemp3 = EEPROM.read(3);
stemp4 = EEPROM.read(4);
}
void ranc_menu() {
potenciometr = analogRead(A1);
potenciometr = (map(potenciometr,0,1023,1,4));
}
void temp() {
lcd.setCursor(4, 0);
lcd.print(stemp1);
lcd.setCursor(4, 1);
lcd.print(stemp2);
lcd.setCursor(4, 2);
lcd.print(stemp3);
lcd.setCursor(4, 3);
lcd.print(stemp4);
delay(70);
}
void menu() {
if (potenciometr == 1) {
lcd.setCursor(0, 0);
lcd.print(">");
stemp1 = map(analogRead(A2),0,1023,0,100);
stemp1 = (map(stemp1,0,100,35,50));
EEPROM.write(1, stemp1);
}
if (potenciometr == 2) {
lcd.setCursor(0, 1);
lcd.print(">");
stemp2 = map(analogRead(A2),0,1023,0,100);
stemp2 = (map(stemp2,0,100,35,50));
EEPROM.write(2, stemp2);
}
if (potenciometr == 3) {
lcd.setCursor(0, 2);
lcd.print(">");
stemp3 = map(analogRead(A2),0,1023,0,100);
stemp3 = (map(stemp3,0,100,35,50));
EEPROM.write(3, stemp3);
}
if (potenciometr == 4) {
stemp4 = map(analogRead(A2),0,1023,0,100);
lcd.setCursor(0, 3);
lcd.print(">");
stemp4 = (map(stemp4,0,100,35,50));
EEPROM.write(4, stemp4);
}
if (stemp1 > 40) {
analogWrite(A3,130);
} else {
analogWrite(A3,0);
}
if (stemp2 > 40) {
analogWrite(A4,130);
} else {
analogWrite(A4,0);
}
}
void clear() {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void word2() {
lcd.setCursor(1, 0);
lcd.print("I1");
lcd.setCursor(1, 1);
lcd.print("I2");
lcd.setCursor(1, 2);
lcd.print("I3");
lcd.setCursor(1, 3);
lcd.print("I4");
}
void word22() {
lcd.setCursor(10, 0);
lcd.print(rtemp1);
lcd.setCursor(10, 1);
lcd.print(rtemp2);
lcd.setCursor(10, 2);
lcd.print(rtemp3);
lcd.setCursor(10, 3);
lcd.print(rtemp4);
}
void setup()
{
lcd.begin(16,4);
potenciometr = 0;
stemp1 = 35;
stemp2 = 35;
stemp3 = 35;
stemp4 = 35;
rtemp1 = 40;
rtemp2 = 40;
rtemp3 = 40;
rtemp4 = 40;
load();
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
}
void loop()
{
ranc_menu();
word2();
word22();
menu();
temp();
clear();
}
void menu() {
if (potenciometr == 1) {
lcd.setCursor(0, 0);
lcd.print(">");
stemp1 = map(analogRead(A2),0,1023,0,400);
EEPROM.put(5, stemp1);
}
void temp() {
lcd.setCursor(4, 0);
lcd.print(float(stemp1*0.1));
if (potenciometr == 1) {
lcd.setCursor(0, 0);
lcd.print(">");
stemp1 = map(analogRead(A2),0,1023,0,400);
EEPROM.put(5, stemp1);
}
void temp() {
lcd.setCursor(4, 0);
lcd.print(float(stemp1*0.1));
Изменено: