Здравствуйте помогите преобразовать для чтения в flprog
OneWire oneWire(15); // A1 вход датчиков 18b20DallasTemperature ds(&oneWire);LiquidCrystal lcd(8, 9, 4, 5, 6, 7);const byte OUT[5] = {13, 12, 11, 3, 2}; // номера выходов
byte pos;byte tempOUTon[5]; // массив с температурой включения выходаfloat tempSensor[5]; // массив куда читается температураbyte qty; // количество градусников на шине.// адреса градусников.DeviceAddress sensor1 = {0x28, 0xA8, 0x3E, 0xF9, 0x05, 0x0, 0x0, 0x12};DeviceAddress sensor2 = {0x28, 0xE6, 0xBD, 0x3B, 0x05, 0x0, 0x0, 0xCF};DeviceAddress sensor3 = {0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};DeviceAddress sensor4 = {0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};DeviceAddress sensor5 = {0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};byte gradus[8] = { 0b00110,
0b01001,
0b01001,
0b00110,
0b00000,
0b00000,
0b00000,
0b00000
};
byte on[8] = { 0b00110,
0b01111,
0b11111,
0b11111,
0b11111,
0b11111,
0b11110,
0b01100
};
void readSet(){ for (byte i = 0; i < qty; i++) tempOUTon = EEPROM.read(i);}
void outOff(){ // выключает выходы for (byte i = 0; i < qty; i++) digitalWrite(OUT, LOW);}
void erorr(){ // останавливает работу программы и сигнализирует ошибку outOff(); // выключаем выходы lcd.clear(); lcd.print("sensor error"); while(1){ // крутим бесконечный цикл analogWrite(10, 100); delay(500); analogWrite(10, 255); delay(500); }
}
////byte key(){ //// для кнопок ЛСДшилда int val = analogRead(0); if (val < 50) return 5; else if (val < 150) return 3; else if (val < 350) return 4; else if (val < 500) return 2; else if (val < 800) return 1; else return 0; }
//// void setMenu(byte pos){ // установка температуры outOff();
lcd.clear();
while(1){ // крутим бесконечный цикл byte KEY = key(); // читаем состояние кнопок
lcd.setCursor(2, 0); // выводим на экран lcd.print("Out:"); lcd.print(pos+1); lcd.setCursor(9, 0); lcd.print("Pin:"); lcd.print(OUT[pos]); lcd.print(" ");
lcd.setCursor(0, 1); lcd.print(" PinON: "); lcd.print(tempOUTon[pos]); lcd.write(1); lcd.print("C <>");
if (KEY == 2) { // если нажата кнопка tempOUTon[pos]--; // изменяем значение if (tempOUTon [pos]> 125) tempOUTon [pos]= 0; EEPROM.write(pos, tempOUTon[pos]); // сохраняем в еепром }
else if (KEY == 5){ tempOUTon[pos]++;
if (tempOUTon [pos]> 125) tempOUTon [pos]= 0; EEPROM.write(pos, tempOUTon[pos]); }
delay(200); }///// }//void getTemp(){ // читаем температуру и заполняем массив ds.requestTemperatures();
tempSensor[0] = ds.getTempC(sensor1); // немного китайского кода tempSensor[1] = ds.getTempC(sensor2); tempSensor[2] = ds.getTempC(sensor3); tempSensor[3] = ds.getTempC(sensor4); tempSensor[4] = ds.getTempC(sensor5);}
void sensorTest(){ // ищим датчики на шине, если количество изменилось, останавливаем работу ds.begin(); if(ds.getDeviceCount() != qty) erorr();}
void setup() { // Serial.begin(9600); ds.begin(); qty = ds.getDeviceCount(); // при включении, сохраняем количество градусников, // можно и лучше количество указать руками.
for (int i = 0; i < qty; i++) pinMode(OUT, OUTPUT); for (int i = 0; i < qty; i++) digitalWrite(OUT, LOW);
lcd.createChar(1, gradus); lcd.createChar(2, on); lcd.begin(16, 2); lcd.clear();
readSet(); // читаем настройки из еепром }
void loop() { if (key() == 1) setMenu(pos); // если нажата селект, уходим в настройки
else if (key() == 4 && pos < qty-1) pos++; // крутим позицию else if (key() == 3 && pos != 0) pos--;
sensorTest(); // тест наличия градусников на шине getTemp(); // читаем температуру с датчиков
//// сверяем температуру и управляем выходами for (int i = 0; i < qty; i++) { if (tempSensor < tempOUTon) digitalWrite(OUT, HIGH); else digitalWrite(OUT, LOW); }
/////// вывод инфы на экран lcd.setCursor(0, 0); lcd.print(pos+1); lcd.print(". "); lcd.print(tempSensor[pos], 1); // показываем температуру с датчика lcd.write(1); lcd.print("C "); lcd.setCursor(2, 1); lcd.print(tempOUTon[pos]); // показываем установленную температуру lcd.write(1); lcd.print("C ");
lcd.setCursor(11, 0); // рисуем статус выхода for (int i = 0; i < qty; i++){ if (digitalRead(OUT)) lcd.write(2); else lcd.print(" "); }
lcd.setCursor(11, 1); // рисуем номера выходов for (int i = 0; i < qty; i++) lcd.print(i+1); // delay(500); // необязательная задержка}