Помогите с кодом
- Войдите на сайт для отправки комментариев
Вс, 05/02/2017 - 21:17
Помогите понять в чем проблема, не заходит в меню вообще не реагирует на пульт, коды пульта прописаны, вот код может кто увидит где ошибка
#include <DS1302.h>
DS1302 rtc(6, 5, 4); // (RST, DAT, CLK)
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h> // датчики температуры
#define ONE_WIRE_BUS 8 // следующая остановка автобуса
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);// стартуем датчик температуры
#include <EEPROM.h> // для записи данных во внутреннию память процессора
#include <IRremote.h>// обработка дистанционного пульта
int RECV_PIN = 10 ;
IRrecv irrecv(RECV_PIN);
decode_results results;
#include <LCD_1602_RUS.h> // Библиотека работы с экраном
LCD_1602_RUS lcd(0x27, 16, 2);
#define MQ_PIN A0 // датчик mq9
// объявим датчики температуры
//barrel1_temp-температура 1 ферментера
// barrel2_temp - температура второго ферментара
// room_temp - температура в помещении
DeviceAddress barrel1_temp, barrel2_temp, room_temp;
// Режимы работы биогазовой установки
#define mix_button 12 // порт кнопки на вызов принудительного перемешивания
#define mix 11 // порт управления термореле на перемешивание по расписанию
const int alarm=9; // порт включения сигнала аварии
float mix_period = 90; // интервал между перемешиваниями, мин
float mix_time = 10; // время перемешивания в секундах 180
boolean mix_status = false; // состояние перемешивания
int Sound_control = 1; // работа контроллера со звуковым сигналом
// контроль налива объема биомассы в бочках
float v1=0.0;
float v2=0.0;
float v1_correct=1; //корректирующие коэффициенты налива 1 емкости
float v2_correct=1; //корректирующие коэффициенты налива 2 емкости
int mix_count=0; // количество циклов перемешивания
long previousMillis = 0; // стек переменной времени
int parameters_show=3; // время показа на экране информации,с
int count_IR = 0; // счетчик для вывода на экран параметров при настройке
int ch4_volume=10; // значение датчика утечек метана
float mqValue;// переменная для хранения значения, полученного с датчика MQ9
float ch4; // переменная для хранения уровня газа в процентах
void setup() {
Serial.begin(9600); // открываем порт на вывод информации
// перемешивание
pinMode(mix_button, INPUT_PULLUP); // Инициируем порт кнопки перемешивания
pinMode(mix, OUTPUT); // термореле на включение насосов перемешивания
pinMode (MQ_PIN, INPUT);// порт датчика газа (MQ9)
//Установка часов для запуска-
rtc.halt(false);
rtc.writeProtect(false);
//rtc.setTime(18, 00, 00); // ставим время
//rtc.setDate(05, 02, 2017); // ставим дату
// инициируем экран
lcd.init(); // инициализируем экран
lcd.backlight();
// Приветствие
lcd.clear();
lcd.setCursor(1, 1);
lcd.print("UMIUM BCS-01");
delay (1000);
lcd.clear();// очищаем экран
// инициируем температурные датчики с высоким разрешением
sensors.begin(); // стартуем библиотеку ДАЛЛАС
// присвоим соответствующие адреса температурным датчикам
sensors.getAddress(barrel1_temp, 0); // ? УТОЧНИТЬ!!!
sensors.getAddress(barrel2_temp, 2); // ?
sensors.getAddress(room_temp, 1); // ?
// установим максимальную точность снятия температуры 12 бит
sensors.setResolution(barrel1_temp, 12);
sensors.setResolution(barrel2_temp, 12);
sensors.setResolution(room_temp, 12); // Для комнатной температуры 9 бит
EEPROM.write(2,int(mix_period));// период перемешивания
delay(50);
EEPROM.write(3,int(mix_time)); // время перемешивания
delay(50);
EEPROM.write(4,int(parameters_show));// период показа данных на экран
delay(50);
EEPROM.write(5,int(Sound_control));// звуковой сигнал
delay(50);
if(EEPROM.read(10)==90){
mix_period=EEPROM.read(2); // период перемешивания
delay(100);
mix_time=EEPROM.read(3); // время перемешивания
delay(100);
parameters_show=EEPROM.read(4); // время показа данных на экране
delay(100);
Sound_control=EEPROM.read(5); //звуковой сигнал
delay(100);
v1_correct=EEPROM.read(6)/100; // корректирующий коэффициент первого ферментера
delay(100);
v2_correct=EEPROM.read(7)/100; // корректирующий коэффициент второго ферментера
delay(100);
ch4_volume=EEPROM.read(8); // предельное значение датчика утечек газа
}
// инициируем пульт дистанционного управления
irrecv.enableIRIn(); // Start the receiver
}
//++++++++++++++++Обработка аварий
//+++++++++++++++++++++++Программа управления перемешиванием+++++++
void mix_process(float time_mixing, float period_mixing){
unsigned long currentMillis = millis(); // промежуточная переменная для фиксации времени работы программы с
// начала старта работы контроллера
if(currentMillis - previousMillis > period_mixing*60*1000) {
previousMillis = currentMillis; //
// вызываем процесс перемешивания
digitalWrite(mix, HIGH);// включаем перемешивание
mix_status = true;// статус перемешивания - включено
lcd.clear();// очищаем экран
lcd.setCursor(4, 1);
lcd.print("MIX PROCESS!");
delay(time_mixing*1000); // перемешиваем установленное время
mix_count++; // прибавляем счетчик числа процессов перемешивания
digitalWrite(mix, LOW);// выключаем перемешивание
mix_status = false; // статус перемешивания - выключено
lcd.clear();
previousMillis = millis(); // Важно! Скорректируем время, так как перемешивание скрадывает время!
}
// Принудительное перемешивание
if(digitalRead(mix_button)==LOW){
digitalWrite(mix, HIGH);// включаем перемешивание
mix_status = true;// статус перемешивания - включено
lcd.clear();// очищаем экран
lcd.setCursor(4, 1);
lcd.print("MIX PROCESS!");
delay(time_mixing*1000); // перемешиваем в установленное время
digitalWrite(mix, LOW);// выключаем перемешивание
mix_count++; // прибавляем счетчик числа процессов перемешивания
mix_status = false; // статус перемешивания - выключено
lcd.clear();
previousMillis = millis(); // Важно! Скорректируем время, так как перемешивание скрадывает время!
}
}
// Обработка данных по заполнению ферментеров
void volume_barrels(){
}
// ++++++++++++обработка дистанционного пульта
void IR_setup(boolean volume_save){
digitalWrite(mix, LOW);// выключаем принудительно и перемешивание
do { // зацикливаемся в режиме
lcd.clear();// очищаем экран
// накапливаем счетчик позиции на вывод на экран
Serial.println(results.value, DEC);
Serial.println("Ок");
if(results.value == 16736925) {count_IR++;} // прибавляем счетчик на единицу
if(results.value == 16754775) {count_IR--;} // уменьшаем счетчик на единицу
if(count_IR<=0) {count_IR=1;} // если счетчик меньше нуля, присваиваем 1
if(count_IR<=0) {count_IR>7;} // если счетчик больше семи, присваиваем 1
Serial.println(String(count_IR));
//++++++++++++++++++++++++++++++++++++ начинаем обработку
switch (count_IR) {
case 1:
//Температура биогазового процесса
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Biogas temperature");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Biogas temperature");
delay(100);
do
{
irrecv.resume();
lcd.setCursor(5, 2);
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=1);
break;
//++++++++++++++++++++++++++++++++++++
case 2:
//Температура котла предельная
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Heating boller, C");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Heat temperature");
delay(100);
do
{
irrecv.resume();
lcd.setCursor(5, 2);
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=2);
break;
//++++++++++++++++++++++++++++++++++++
case 3:
//Интервал перемешивания, мин mix_period
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Mix period, min");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Mix period");
delay(100);
do
{
irrecv.resume();
if(results.value == 16761405) {mix_period=+5;} // шаг - пять минут
if(results.value == 16720605) {mix_period=-5;}
if(mix_period>240) {mix_period=240;} //зададим пределы параметра
if(mix_period<15) {mix_period=15;}
lcd.setCursor(5, 2);
lcd.print(mix_period);
Serial.println("Mix period"+ String(mix_period,4));
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=3);
break;
//+++++++++++++++++++++++++++++++++++++
case 4:
// Время перемешивания, сек mix_time
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Mix time, s");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Mix period");
delay(100);
do
{
irrecv.resume();
if(results.value == 16761405) {mix_time=+5;} // шаг - пять секунд
if(results.value == 16720605) {mix_time=-5;}
if(mix_time>240) {mix_time=240;} //зададим пределы параметра
if(mix_time<15) {mix_time=15;}
lcd.setCursor(5, 2);
lcd.print(mix_time);
Serial.println("Mix time"+ String(mix_time,4));
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=4);
break;
//++++++++++++++++++++++++++++++++++++++
case 5:
//Время вывода на экран информации, parameters_show
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("LCD show, s");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("LCD Show");
delay(100);
do
{
irrecv.resume();
if(results.value == 16761405) {parameters_show=+1;} // шаг - секунда
if(results.value == 16720605) {parameters_show=-1;}
if(parameters_show>5) {parameters_show=5;} //зададим пределы параметра
if(parameters_show<1) {parameters_show=1;}
lcd.setCursor(5, 2);
lcd.print(parameters_show);
Serial.println("Mix show"+ String(parameters_show));
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=5);
break;
//++++++++++++++++++++++++++++++
case 6:
//Сигнал звуковой АВАРИЯ
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Sound control");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Sound");
delay(100);
do
{
irrecv.resume();
if(results.value == 16761405) {Sound_control=+1;} // 0 - нет 1 - есть
if(results.value == 16720605) {Sound_control=-1;}
if(Sound_control>1) {Sound_control=1;} //зададим пределы параметра
if(Sound_control<1) {Sound_control=0;}
lcd.setCursor(5, 2);
if(Sound_control=1){lcd.print("ON");}
if(Sound_control=0){lcd.print("OFF");}
Serial.println("Sound control"+ String(Sound_control));
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
}
while (count_IR=6);
break;
case 7:
//Сохранение результатов в память
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Save & Exit ");
lcd.setCursor(1, 3);
lcd.print("Press OK for save");
lcd.setCursor(1, 3);
lcd.print("For Exit press #");
Serial.println("Save parameters?");
delay(100);
do
{
irrecv.resume();
if(results.value == 16712445) { // нажата кнопка ОК пишем в память
EEPROM.write(2,int(mix_period));// период перемешивания
delay(50);
EEPROM.write(3,int(mix_time)); // время перемешивания
delay(50);
EEPROM.write(4,int(parameters_show));// период показа данных на экран
delay(50);
EEPROM.write(5,int(Sound_control));// звуковой сигнал
delay(50);
EEPROM.write(6,int(v1_correct*100));// коэффициенты коррекции объема ферментера 0..100 (от 0.01...1)
delay(50);
EEPROM.write(7,int(v2_correct*100));// коэффициенты коррекции объема ферментера 0..100 (от 0.01...1)
delay(50);
EEPROM.write(8, ch4_volume); // значение датчика утечек газа
EEPROM.write(10 , 90); // установим в десятой ячейке значение 90, чтобы можно
// было бы загрузить значения из памяти при послебующем включении контроллера
lcd.setCursor(1, 3);
lcd.print("Save - ok!");
delay(3000);
volume_save=false;
count_IR=0;
break; ///????
}
if(results.value == 16732845) { // если нажата решетка отменям все и выходим
lcd.clear();// очищаем экран
lcd.setCursor(4, 2);
lcd.print("Not save in memory!");
// устанавливаем заводские настройки параметров
mix_period = 90; // интервал между перемешиваниями, мин
mix_time = 180; // время перемешивания в секундах
Sound_control = 1;// звуковой сигнал
parameters_show=2; // время показа на экране информации,с
ch4_volume=10; // значение датчика утечек газа
// корректирующие коэффициенты налива биомассы
v1_correct=1;
v2_correct=1;
delay(2000);
volume_save=false;
count_IR=0;
break; ///????
}
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=7);
break;
case 8:
//корректирующий коэффициент первого ферментера
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Correct V1");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Correct V1");
delay(100);
do
{
irrecv.resume();
if(results.value == 16761405) {v1_correct=+0.01;} // шаг - сотая
if(results.value == 16720605) {v1_correct=-0.01;}
if(v1_correct>1) {v1_correct=1;} //зададим пределы параметра
if(v1_correct<0.01) {v1_correct=0.01;}
lcd.setCursor(5, 2);
lcd.print(v1_correct);
Serial.println("V сорресt"+ String(v1_correct));
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=8);
break;
case 9:
//корректирующий коэффициент второго ферментера
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Correct V2");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Correct V2");
delay(100);
do
{
irrecv.resume();
if(results.value == 16761405) {v2_correct=+0.01;} // шаг - сотая
if(results.value == 16720605) {v2_correct=-0.01;}
if(v2_correct>1) {v2_correct=1;} //зададим пределы параметра
if(v2_correct<0.01) {v2_correct=0.01;}
lcd.setCursor(5, 2);
lcd.print(v2_correct);
Serial.println("V2 сорресt"+ String(v2_correct));
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=9);
break;
case 10:
//Значение датчика утечек газа
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("CH4 control");
lcd.setCursor(1, 4);
lcd.print("Press < > for correct");
Serial.println("Correct V2");
delay(100);
do
{
irrecv.resume();
if(results.value == 16761405) {ch4_volume++;} // шаг - сотая
if(results.value == 16720605) {ch4_volume--;}
if(ch4_volume>50) {ch4_volume=50;} //зададим пределы параметра
if(ch4_volume<1) {ch4_volume=1;}
lcd.setCursor(5, 2);
lcd.print(ch4_volume);
Serial.println("CH4 volume"+ String(v2_correct));
delay(200);
if(results.value == 16736925) {count_IR++;}
if(results.value == 16754775) {count_IR--;}
} while (count_IR=10);
break;
default:
lcd.setCursor(1, 1);
lcd.print("SETUP Parameters");
lcd.setCursor(1, 2);
lcd.print("Press ^ or v for list");
delay(100);
break;
}
} while(volume_save=true);
irrecv.resume();// запросим значение кнопки
delay(300);
}
void loop() {
irrecv.resume();// запросим значение кнопки на пульте управления
// если нажали * то переходим в меню настроек
if (results.value, DEC)
if(results.value == 16728765){
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print("Please, wait");
delay(1000);
IR_setup(true);
}
// проверяем, не пора ли перемешивать
mix_process(mix_time, mix_period); // проверяем, не пора ли перемешивать
// вызываем на экран информацию
//выводим время
lcd.setCursor(3, 0); // отступ первой строки слева 0 .
lcd.print(rtc.getTimeStr()); // Время в формате час:минуты:секунды
lcd.setCursor(3, 2);
lcd.print( rtc.getDateStr());
delay(parameters_show*1000);
//выводим температуру
lcd.setCursor(2, 2);
lcd.print(L"Температура:");
delay(parameters_show*1000);
lcd.clear();
// температура помещения
sensors.requestTemperatures();
float tem=sensors.getTempC(barrel1_temp);
lcd.setCursor(1, 1);
lcd.print(L"В помещении");
lcd.setCursor(2, 2);
lcd.print(String(tem,4));
lcd.print(" C");
delay(parameters_show*1000);
lcd.clear();// очищаем экран
// температура 1 ферментера
lcd.setCursor(1, 1);
lcd.print(L"1 ферментер");
lcd.setCursor(2, 2);
float fer1=sensors.getTempC(barrel2_temp);
lcd.print(String(fer1,4));
lcd.print(" C");
delay(parameters_show*1000);
lcd.clear();
// температура 2 ферментера
lcd.clear();// очищаем экран
lcd.setCursor(1, 1);
lcd.print(L"2 ферментер");
lcd.setCursor(2, 2);
float fer2=sensors.getTempC(room_temp);
lcd.print(String(fer2,4));
lcd.print(" C");
delay(parameters_show*1000);
lcd.clear();
// время до перемешивания
lcd.setCursor(1, 1);
lcd.print("Time before mix");
lcd.setCursor(2, 2);
float time_before_mix=(mix_period*60*1000+previousMillis-millis())/60000; //?
Serial.println(int(time_before_mix)); // посмотрим в порту
lcd.print(String(int(time_before_mix)) + " min.");
lcd.setCursor(1, 4);
lcd.print("Mix count is " + String(mix_count));
delay(parameters_show*1000);
lcd.clear();
// выведем объемы ферментеров
lcd.setCursor(1, 1);
lcd.print("Volume of barrels");
lcd.setCursor(2, 2);
volume_barrels(); // посмотрим объемы ферментеров
lcd.print("V1=" + String(int(v1)) + " l " + String(int((v1/5000)*100)) + " %");
lcd.setCursor(1, 3);
lcd.print("V2=" + String(int(v2)) + " l " + String(int((v2/5000)*100)) + " %");
delay(parameters_show*1000);
lcd.clear();
// выведем показания датчика утечек газа
mqValue = analogRead(MQ_PIN);
ch4 = mqValue/1024 * 100;
lcd.setCursor(1, 1);
lcd.print(L"CH4 Контроль");
lcd.setCursor(2, 2);
lcd.print(L"Volume ");
lcd.setCursor(10, 2);
lcd.print(ch4);
Serial.println ((ch4));
lcd.print(" %");
lcd.setCursor(1, 4);
if(ch4<ch4_volume){
lcd.print("CH4 low. All OK!");
}
else {lcd.print("CH4 HIGH!!!!!");
}
delay(parameters_show*1000);
lcd.clear();
}
без обид, но вряд ли кто захочет в такой длинной простыне разбираться...
Блин, новичков пускать на форум под подпись кровью, что с темой о вставке кода ознакомлен.
Приостите,но от куда же я мог знать?
И все же кто нить может подсказать?
Приостите,но от куда же я мог знать?
Как откуда? Эта тема просто прикреплена сверху. Читать надо, прежде, чем писать.
И все же кто нить может подсказать?
Да ты прав код писал не я,а другой человек,понимаю не все в этом новичек, но все же как я понял то в EEPROM
пишется чтоб потом можно было востоновить настройки по умолчанию,в 114 строке не могу объяснить зачем там эта скопка, а строки 636 вообще не вижу здесь
да и вообще я прошу понять в чем может быть причина,а не переделывать за меня. Спасибо
а строки 636 вообще не вижу здесь
Виноват, 528.
да и вообще я прошу понять в чем может быть причина,а не переделывать за меня. Спасибо
Так в том и причина, что Вы взяли недоделанный код, смысла которого не понимаете.
Вы лучше бы начали писать сами. Не такие большие коды для начала, понемножку. по шажочку, и научитесь.
почему это он не доделанный? он работал, и в меню заходил и настройки менял, но было это 3 года назад, потом от туда выдернули датчик который газ мерил и от пульта эту лампочку которая сигнал принимает, щас поставили ее обратно точно такой же пульт и коды теже, так же датчик газа щас стоит другой, да и вообще с этого кода планируется еще много что поубирать, но прежде хотел бы с пультом разобраться, потому что по странной причине он просто перестал работать.
в 528 строке насколько я понял это в какой кодировке код с пульта должен быть, но не нашел ни одного кода в интернете где что то подобное было бы написано
почему это он не доделанный? он работал
Даже, если так, он всё равно недоделанный. Там торча ошмётки задумок, которые так и не доведены до ума и причём не одна и не две. А то, что работал - ну имеет право недоделанный код работать.
а вот исходник кода , не менялось еще ни чего здесь, но пульт все равно не работает
и здесь тоже ошметки торчат????
в 528 строке насколько я понял это в какой кодировке код с пульта должен быть, но не нашел ни одного кода в интернете где что то подобное было бы написано
Ну. что-то подобное я и предполагал. В этой строке написан бред сивой кобылы, но Вы этого не понимаете потому, что не знаете языка, на котором он написан. Точно так же Вы не понимаете, что написано в тех строках, что мы обсуждали раньше. И не надо писать:
да и вообще я прошу понять в чем может быть причина,а не переделывать за меня
Понять книгу на китайском может человек, знающий китайский. Также и здесь. Что Вы можете понять, если Вы не знаете языка на котором это написано?
Помогать Вам исправлять код бесполезно, т.к. Вы не знаете языка и никакие подсказки и советы не сработают - Вы не сможете их "воплотить в исправления". Можно только сделать всё за Вас. Но с этим обращайтесь в раздел "Ищу исполнителя".
ну так и не писал бы ни чего больше раз сам ни чего не можешь сделать, а просто подсказать от чего от талкиваться мог бы, а на счет 528 строки, я тебе и написал что ни чего подобного ни где не смог найти
и это еще не значит что это бред, так как человек писавший этот код подправил библиотеку IRremote.h, и вот как раз там то эта строчка встречается и не раз, спасибо за зря потраченное время
1. Строка "
if
(results.value, DEC)"
является бредом вре зависимости от того где и сколько раз она встречается.2. Не припомню, чтобы мы с Вам пили на брудершафт.
3. Я дал Вам самый лучший совет который Вам только можно дать (см. пост №9). Благодарность - как всегда на этом форуме.
Код в сообщении 3 - набор бессмыслецы.
Код в сообщении 13 - скорее всего рабочий. Нужно подключить монитор порта и прочитать диагностику.
Нужно дополнительно вывести диагностику из loop().
Автор кода выводит диагностические сообщения. Там вы найдете свое счастье! Если, конечно, поняли, что я написал.
==============
Кстати, то, на что указал Евгений, это бессмыслеца - обломок диагностического сообщения, после того, как в коде кто-то покопался.
И Вопрос про строки с 91 по 114. В версии, опубликованной в сообщении 13 эта часть закомментирована, что и требуется. Версия в сообщении 3 - это же праздник какой-то!
---------------------
Мнение такое ТС - жадное ......, которое поругалось с автором кода и не хочет платить.
Расчитывая, что добрые дяди с форума ща на раз все решат.
Не, не раешат. Ибо с хрена ль? Цеховая солидарность. Пусть долечивает тот доктор, кто начал. ;) ;) ;)
Благодарность - как всегда на этом форуме.
благодарность - знаковая переменная.
Спасибо, в том то и дело что в монитор порта ничего не выводится кроме как оставшегося времени до начала перемешивания, а так спасибо за наводку буду пробовать дальше
начните с простого, залейте скетч определяющий коды вашего пульта, то-есть коды всех кнопок, без этого никуда дальше вы не двинитесь
Код в сообщении 3 - набор бессмыслецы.
Код в сообщении 13 - скорее всего рабочий. Нужно подключить монитор порта и прочитать диагностику.
Нужно дополнительно вывести диагностику из loop().
Автор кода выводит диагностические сообщения. Там вы найдете свое счастье! Если, конечно, поняли, что я написал.
==============
Кстати, то, на что указал Евгений, это бессмыслеца - обломок диагностического сообщения, после того, как в коде кто-то покопался.
И Вопрос про строки с 91 по 114. В версии, опубликованной в сообщении 13 эта часть закомментирована, что и требуется. Версия в сообщении 3 - это же праздник какой-то!
---------------------
Мнение такое ТС - жадное ......, которое поругалось с автором кода и не хочет платить.
Расчитывая, что добрые дяди с форума ща на раз все решат.
Не, не раешат. Ибо с хрена ль? Цеховая солидарность. Пусть долечивает тот доктор, кто начал. ;) ;) ;)
692 строки исходного кода это не доктор, это профессор )))
Автору кода пока не до этого, чтоб переделывать этот или писать новый,пробую я пока что, код из сообщении 13,
точно так же работает как и код выше указанный проблемма одна перестал работать пульт, хотел услышать мнение почему или может кто ошибку увидит, а не то чтоб мне тут вес расписали и зделали все за меня, я и сам могу
только знать нужно хоть примерно "куда тыкать", а в монитор порта выводит только отсчет времени таймера и не более того, все остальное находится в той части кода которую я и не могу включить, а именно в меню настроек в которые заходить и нужно с пульта.
коды проверял, они одинаковые он не риагирует на пульт вообще ни как в этом коде, пытался в монитор порта вывести, просто из примера воткнул Serial.println(results.value, DEC); , но и так же ни какой реакции не было((
коды проверял, они одинаковые он не риагирует на пульт вообще ни как в этом коде, пытался в монитор порта вывести, просто из примера воткнул Serial.println(results.value, DEC); , но и так же ни какой реакции не было((
Этого не может быть, дайте скрин с экрана кодов пульта и что за пульт покажите
692 строки тока из за того что, надо было следить за котлом, щас это не нужно, температура мерилась с котла и 2 реакторов и выводилась одна средняя, щас же нужно чтоб просто с 2 реакторов была температура, первый код который я сюда выложил это уже я начал там менять, но запарился с этим пультом, а так там много что уже не надо, и еще в планах подрубить 2 дальномера и с их помощью высчитывать колличество жидкости в реакторах, уже пробовал это делать но пока что разбираюсь как их 2 дальномера подключить.
692 строки тока из за того что, надо было следить за котлом, щас это не нужно, температура мерилась с котла и 2 реакторов и выводилась одна средняя, щас же нужно чтоб просто с 2 реакторов была температура, первый код который я сюда выложил это уже я начал там менять, но запарился с этим пультом, а так там много что уже не надо, и еще в планах подрубить 2 дальномера и с их помощью высчитывать колличество жидкости в реакторах, уже пробовал это делать но пока что разбираюсь как их 2 дальномера подключить.
"Тихо сам с собою я веду беседу..."???
Попросил дать дамп кодов пульта
KEYES могу фотку пульта выложить
https://yadi.sk/i/kU4Q9_173DMZBf
Небоскребы, небоскребы , а я маленький такой. (Блин не то)
Чем больше шкаф (зачеркнуто) программа, тем больше она глючит. Зачем писать такую длиную программу. или вы думаете, что ошибки испугаюся размера программы и сбегут.
ПС: Лучше переписать программу, да стуктуру вменяемую сделать.
KEYES могу фотку пульта выложить
Ну и откуда в KEYES коды, что в скетче используются?
Там такие кстати
Небоскребы, небоскребы , а я маленький такой. (Блин не то)
Чем больше шкаф (зачеркнуто) программа, тем больше она глючит. Зачем писать такую длиную программу. или вы думаете, что ошибки испугаюся размера программы и сбегут.
ПС: Лучше переписать программу, да стуктуру вменяемую сделать.
Он скульптор, взял глыбу и отсекает всё ненужное
Тогда я наверно "дровосек". Я бы ее под самый пенек отсек, что бы глаза не видели.
Тогда я наверно "дровосек". Я бы ее под самый пенек отсек, что бы глаза не видели.
я вообще удивляюсь, как вы можете смотреть чужие коды более 10 строк )))
я б так не смог
Ну я сразу код кидаю в среду и начинаю с Ctrl+T когда регистр Английский. А дальше начинаю формировать под свой стиль. Но здесь с этим do{}while() кривизна зашкаливает
ну да а если HEX изминить на DEC то как раз такие как та коды будут
Верно! Ане нужного там много.За котлом следить не надо, температуру надо отдельно выводить, а датчик газа вообще другой теперь,и в меню настроек вообще ничего не надо кроме как время перемешивания настроить.
Я пытался в таком виде "HEX" коды туда подставлять,но тогда ошибка, в разных видах пробовал ивсе равно ноль эфекта
пробовал так чтоб сразу в меню зашел, просто посмотреть ,но он заходит и виснет, не могу понять ведь работало из начально все и пульт с такими вот кадами
do{}while() вот и я так подумал, поэтому и решил что надо вырезать по полной от туда
И еще возможно такое что пока весь цикл программы не пройдет реакции на кнопку пульта не будет? Подумал так потому что кнопка
на принудительное перемешивание работает ,но как раз таким образом нажал и держишь пока вся инфа на дисплее не прокрутится и
не начнется с начала. В даный момент все работает на UNO щас же хочу поставить туда NANO.
а вы уверены, что функция IRREMOTE отдает вам коды в десятичном виде?
Отпечатайте в консоль
Я что то не понял, IRREMOTE что за функция? Вернее где она?
вот в таком виде коды совпадают на пульте,а если я просто этот кусок вставляю в этот код то опять тишина в монитор порта ни чего не показывает кроме таймера
даже еслиб были коды другие то все равно же должен впорт выводить те что с пульта приходят,а их нет
вот так же должен в монитор порта выводить если с пульта хоть что то приходит, или я не прав и что то не так?
Если должен, значит проблема где то в этой части irrecv.enableIRIn(); ??
Проблема может быть в библиотеке IR, качайте свежую версию
в первую очередь с библиотек начал пробовать, все равно тоже самое, да ипримеры то все работают нормально