Я правильно понял что ЛГБТ шники помогли - своего приметили ?
С таким подходом марихуану в горшке ты не вырастишь. Никогда.
вранье
for(int i = 0; i < 8; i ++){
Serial.print("Value at channel ");
Serial.print(i);
Serial.print("is : ");
Serial.println(readMux(i));
delay(1000);
}
что это как не чтение данных “с конкретной ножки”?
Если вы код не поняли - так и говорите, не надо наговаривать на автора
блин, а выводить на дисплей и на сериал - это такая принципиальная разница?
Или все дело в том, что вы такая ленивая Ж, которой лень хоть чуть-чуть изменить готовый пример и вы ждете, пока вам не поднесут готовое на блюде?
так кто в этом виноват, кроме вас?
вам сразу было сказано, что у нас тут ФЛПрог не уважают.
Вы можете “упростить ситуацию” тем, что откажетесь от этой мурзилки и начнете писать “вручную”. Поверьте, это в разы легче, чем адаптировать найденные коды для ФЛПрога
короче … вы бузатёр ещё тот)))
в самом вопрос мной было указано, чтобы тот кто сталкивался с подобной ситуацией сообщил - в каком месте и как добавить или изменить код
присланный вами кусок кода я тоже изучал и в таком виде без больших изменений приспособить его не получилось
опять же повторюсь - что я уже разобрался ,что нужно основательно менять код и не только в этом месте.
про ФЛПрог вы ни чего не писали
да и зря вы наговариваете!
с его помощью, подключив ножки датчиков к аналоговым входам А0 и А1 у меня сразу получилось вывести данные на LCD
в общем всё будет норм
И шо, никто не кинулся? Вот ведь злыдни злобные
меня запинали, а больше и некому, жадные однако…
Типичный непрограммист уверен, что для любой задачи где-то лежит готовый код… И нам всего-то надо ему сказать, где именно. А мы злые - готовый код показать не хотим
И это не может не радовать!
Всем добрый день,
проверил и немного доработал под свои нужды прилагаемый ниже код, который нашел на ютубе.
Задача составленного кода: вывод данных с нескольких аналоговых датчиков через два (2) мультиплексора HC4051 на LCD 2004. Дисплей подключен по шине i2c.
Количество мультиплексоров может быть увеличено.
В последующем будет еще:
2) меню (оно у меня уже частично работает но на дисплее 1602)
3) подключение матричной клавиатуры 4*5 через расширители портов HC595 и HC165 (над этим буду работать в ближайшее время).
Код составлен с помощью программы FL Prog - но для неё мне пришлось сделать дополнительный специальный Пользовательский блок HC 4051.
Возможно код громоздкий и его можно упростить, но зато он относительно понятен начинающему!
Есть еще один вариант кода, похожий по принципу на этот - но оказался “не рабочий” (что то в нём нужно дорабатывать).
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C _lcd1(0x27, 20, 4);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
int Sensor1_10069704_2;
int Sensor2_10069704_2;
int Sensor3_10069704_2;
int Sensor4_10069704_2;
int Sensor5_10069704_2;
int Sensor6_10069704_2;
int Sensor7_10069704_2;
int Sensor8_10069704_2;
int wait_10069704_2= 10;
const int A_Ports_10069704_2= A0;
const int B_Ports_10069704_2= A1;
const int Inhibit_Mux_10069704_2= 7;
int _gtv2; //Датчик влажности почвы № 1
int _gtv1; //Датчик влажности № 2, аналоговый
float _gtv10; //Данные с датчика влажности № 1, преобразование из аналога в 2-х значное число
float _gtv9; //Данные с датчика влажности № 2, преобразование аналога в двухзначное число
int _gtv3; //Датчик влажности почвы № 3
int _gtv4; //Датчик влажности № 4
float _gtv5; //Преобразование данных датчика в %
float _gtv6; //Преобразование данных датчика 4 в %
int _gtv7; //Датчик влажности почвы
int _gtv8; //Датчик влажности почвы 6
int _gtv11; //Датчик влажности 7
int _gtv12; //Датчик влажности № 8
float _gtv13; //Преобразование данных датчика 5 в %
float _gtv14; //Преобразование данных датчика 6 в %
float _gtv15; //Преобразование данных датчика 7 в %
float _gtv16; //Преобразование данных датчика 8 в %
int _disp1oldLength = 0;
int _disp5oldLength = 0;
int _disp9oldLength = 0;
int _disp2oldLength = 0;
void setup()
{
Wire.begin();
delay(10);
_lcd1.init();
_lcd1.backlight();
Serial.begin(9600);
pinMode(Inhibit_Mux_10069704_2,OUTPUT);
digitalWrite(Inhibit_Mux_10069704_2,LOW);
DDRB = 0b00000111; //PORT 8,9,10 as output
PORTB = 0b00000000; //PORT 8,9,10 set to low
pinMode(A_Ports_10069704_2,INPUT);
pinMode(B_Ports_10069704_2,INPUT);
}
void loop()
{
if (_isNeedClearDisp1)
{
_lcd1.clear();
_isNeedClearDisp1= 0;
}
//Плата:1
//Наименование:Плата подключения двух мультиплексоров HC4051
PORTB=0b00000000; //Data flow - X0
int Sensor1_10069704_2 = analogRead(A_Ports_10069704_2); //чтение канала № 1 A_Port
Serial.println(Sensor1_10069704_2);
int Sensor9 = analogRead(B_Ports_10069704_2); //чтение канала № 9 B_Port
Serial.print(" ");
Serial.println(Sensor9);
delay(2000);
PORTB=0b00000001; //Data flow - X1
int Sensor2_10069704_2 = analogRead(A_Ports_10069704_2); //чтение канала № 2 A_Port
Serial.println(Sensor2_10069704_2);
int Sensor10 = analogRead(B_Ports_10069704_2); //чтение канала № 10 B_Port
Serial.print(" ");
Serial.println(Sensor10);
delay(2000);
PORTB=0b00000010; //Data flow - X1
int Sensor3_10069704_2 = analogRead(A_Ports_10069704_2); //чтение канала № 3 A_Port
Serial.println(Sensor3_10069704_2);
int Sensor11 = analogRead(B_Ports_10069704_2); //чтение канала № 11 B_Port
Serial.print(" ");
Serial.println(Sensor11);
delay(2000);
PORTB=0b00000011; //Data flow - X1
int Sensor4_10069704_2 = analogRead(A_Ports_10069704_2); //чтение канала № 4 A_Port
Serial.println(Sensor4_10069704_2);
int Sensor12 = analogRead(B_Ports_10069704_2); //чтение канала № 12 B_Port
Serial.print(" ");
Serial.println(Sensor12);
delay(2000);
PORTB=0b00000100; //Data flow - X1
int Sensor5_10069704_2 = analogRead(A_Ports_10069704_2); //чтение канала № 5 A_Port
Serial.println(Sensor5_10069704_2);
int Sensor13 = analogRead(B_Ports_10069704_2); //чтение канала № 13 B_Port
Serial.print(" ");
Serial.println(Sensor13);
delay(2000);
PORTB=0b00000110; //Data flow - X1
int Sensor7_10069704_2 = analogRead(A_Ports_10069704_2); //чтение канала № 7 A_Port
Serial.println(Sensor7_10069704_2);
int Sensor15 = analogRead(B_Ports_10069704_2); //чтение канала № 15 B_Port
Serial.print(" ");
Serial.println(Sensor15);
delay(2000);
PORTB=0b00000111; //Data flow - X1
int Sensor8_10069704_2 = analogRead(A_Ports_10069704_2); //чтение канала № 8 A_Port
Serial.println(Sensor7_10069704_2);
int Sensor16 = analogRead(B_Ports_10069704_2); //чтение канала № 16 B_Port
Serial.print(" ");
Serial.println(Sensor16);
delay(2000);
_gtv12 = Sensor8_10069704_2;
_gtv11 = Sensor7_10069704_2;
_gtv8 = Sensor6_10069704_2;
_gtv7 = Sensor5_10069704_2;
_gtv4 = Sensor4_10069704_2;
_gtv3 = Sensor3_10069704_2;
_gtv1 = Sensor2_10069704_2;
_gtv2 = Sensor1_10069704_2;
//Плата:2
_gtv10 = (map((_gtv2), (0), (1023), (0), (100)));
_gtv9 = (map((_gtv1), (0), (1023), (0), (100)));
_gtv5 = (map((_gtv3), (0), (1023), (0), (100)));
_gtv6 = (map((_gtv4), (0), (1023), (0), (100)));
_gtv13 = (map((_gtv7), (0), (1023), (0), (100)));
_gtv14 = (map((_gtv8), (0), (1023), (0), (100)));
_gtv15 = (map((_gtv11), (0), (1023), (0), (100)));
_gtv16 = (map((_gtv12), (0), (1023), (0), (100)));
//Плата:3
//Плата:4
if (1)
{
_dispTempLength1 = ((((String("H- ")) + ((_floatToStringWitRaz(_gtv10,0))) + (String("%"))))).length();
if (_disp9oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp9oldLength = _dispTempLength1;
_lcd1.setCursor(13, 0);
_lcd1.print((((String("H- ")) + ((_floatToStringWitRaz(_gtv10,0))) + (String("%")))));
}
else
{
if (_disp9oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp9oldLength = 0;
}
}
if (1)
{
_dispTempLength1 = ((((String("H- ")) + ((_floatToStringWitRaz(_gtv9,0))) + (String("%"))))).length();
if (_disp5oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp5oldLength = _dispTempLength1;
_lcd1.setCursor(13, 1);
_lcd1.print((((String("H- ")) + ((_floatToStringWitRaz(_gtv9,0))) + (String("%")))));
}
else
{
if (_disp5oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp5oldLength = 0;
}
}
if (1)
{
_dispTempLength1 = ((((String("H- ")) + ((_floatToStringWitRaz(_gtv5,0))) + (String("%"))))).length();
if (_disp1oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(13, 2);
_lcd1.print((((String("H- ")) + ((_floatToStringWitRaz(_gtv5,0))) + (String("%")))));
}
else
{
if (_disp1oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp1oldLength = 0;
}
}
if (1)
{
_dispTempLength1 = ((((String("H- ")) + ((_floatToStringWitRaz(_gtv6,0))) + (String("%"))))).length();
if (_disp2oldLength > _dispTempLength1)
{
_isNeedClearDisp1 = 1;
}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(13, 3);
_lcd1.print((((String("H- ")) + ((_floatToStringWitRaz(_gtv6,0))) + (String("%")))));
}
else
{
if (_disp2oldLength > 0)
{
_isNeedClearDisp1 = 1;
_disp2oldLength = 0;
}
}
}
String _floatToStringWitRaz(float value, int raz)
{
return String(value,raz);
}
Класс!
Четырежды повторённое условие if (1)
да ещё и с else
- это прямо-таки шедевр! До такого хрен кто догадается!
Ну, а чё? Надо же программе знать, что делать, если единица, вдруг, окажется равной нулю!
Нулю-то наврядли, но вот если код вдруг окажется скомпилирован с помощью лживого ЯП - сразу else и выстрелит.
Сразу всем пишу, что:
ПРЕТЕНЗИИ ПО КОДУ НЕ ПРИНИМАЮТСЯ!
так как:
- из вас ни кто не ответил и своего не предложил
- это не моя основная работа!
моя работа: ходить по арбитражным судам, заниматься подрядами, стройками
и по выходным выращивать декоративные хвойные растения в мелкопромышленных масштабах
этим вопросом (по подготовке кода) - я занялся только 2-3 месяца назад, урывками!
то есть ни когда в жизни не изучал ни одного языка программирования, вообще!
вник в вопрос - “на бегу”.
Поэтому претензии оставьте при себе.
тем более что на верху я указал, что код можно еще дорабатывать и соответственно сокращать и прочее - на это у меня нет времени.
Да нам по сути чихать на твой код, какие могут быть претензии!
интересно, кто из двоих ничего не знает про массивы - ФЛПрог или автор? А может оба?
От себя лично отвечаю:
ПРЕТЕНЗИИ ПО КОДУ НЕ ПРЕДЪЯВЛЯЮТСЯ! Ибо он он нахрен никому не интересен.
P.S. Вот это не было претензией, просто выражение восторга.
а нахрена он тогда выложен? Похвастаться достижениеми? -
нууууу получилось не очень
Именно! И заодно “умыть” некоторых бездарей, которые тут пальцы гнут, а такого гениального кода написать не сумели
О! Я догадался!
Этот код выложен тут на случай, “вдруг он кому-то пригодится” (с)
Поэтому и забота, чтоб он был “понятен” :)))))