как сравнить элементы двумерного массива с переменными

Prozorov
Offline
Зарегистрирован: 04.06.2017
Всем привет. Есть массив m[4][4] и две переменные, значения которых берем с аналоговых входов, на которых 'висят' переменные резисторы. Нужно сравнить переменные с элементами нулевой строки и нулевого столбца и найти элемент на пересечении, с последующим выводом его на дисплей. Например x=50, z=800 искомое значение 7.
int m[4][4]= {0, 50, 200, 600);
{350, 1, 2, 3};
{500, 4, 5, 6};
{800, 7, 8, 9};
int x=0;
int z=2;
int a,b,f;
.......
void loop (){
analogRead(x);
for (I=0; I<4; I=I+1)
{
if (x>=m[I][0])
{
a=I;
}
}
analogRead(z);
for (k=0; k<4; k=k+1)
{
If (z>=m[0][k])
{
b=k;
}
}
f=m[a][b];
lcd.print(f);
}

Пробовал и так 

......
for (I=0; m[I][0]>=x; I=I+1)
{
a=I;
}
......

 

Вообщем, по разному делал, как только не крутил резисторы, но значения на дисплее фиксируются то на 5, то на 200, то на 500 ( в зависимости от вариантов условий в цикле for).
sadman41
Offline
Зарегистрирован: 19.10.2016
x = analogRead(A0);
Serial.println(x);
...
z = analogRead(A1);
Serial.println(z);
...

 

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

вот это analogRead(x); у тебя не делает ничего - сделай как-то так переменная = analogRead(x);

Prozorov
Offline
Зарегистрирован: 04.06.2017

Через переменную я тоже делал, всё равно залипает одно значение и всё.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Что по-Вашему написано в строке 10? Можете объяснить?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

а, в 13-й ? сравниваем номер пина с чем-то?

Prozorov
Offline
Зарегистрирован: 04.06.2017

тот код я писал вручную с планшета и сократил немного для удобства. вот скетч который залит на ардуино

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
int xPin = 0; 
int zPin = 2;  
int m[4][4] = {
  {20, 50, 200,600},
  {350, 1, 2, 3},
  {500, 4, 5, 6},
  {800, 7, 8, 9}
};
int i;   
int k;  
int f;   
int a;   
int b;
int c;   
int d;   

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
 pinMode(xPin, INPUT);
 pinMode(zPin, INPUT);
 
 lcd.begin();
 
}

void loop()
{
   lcd.clear();
   
   
     c = analogRead(zPin);
  for (i=0; i<4; i=i+1)
  { 
    m[i][0]>=c;
     a=i;
  }
   
 d = analogRead(xPin);
  for (k=0; k<4;  k=k+1)
  {
    m[0][k]>=d;
     b=k;
  }
  

  
  f=m[a][b];
  
  lcd.setCursor(0,1);
  lcd.print(d);
  
  lcd.setCursor(0,0);
  lcd.print(c);
  
  lcd.setCursor(13,1);
  lcd.print(f);
  
  delay(100);
	
}

f постоянно выдает выдает 9. мне кажется проблема в цикле for

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Prozorov пишет:

вот скетч который залит на ардуино

иди нахуй.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Prozorov пишет:

сократил немного для удобства. 

Для чьего удобства? Чтобы мы смотрели, думали, писали ответы, а там оказывается бред сивой кобылы?

Вы издеваетесь? Правильно Вам сказал "предыдующий оратор" :(

А по делу. Ответьте внятно на вопрос: что по-Вашему делается в строках 38 и 45?

Prozorov
Offline
Зарегистрирован: 04.06.2017

Предыдущий оратор заходится, что у меня ошибки в коде, а в тоже время не знает что предлоги пишутся раздельно.

На счет строк 38 и 45 (дописал в код 'if', но итог тот же). Если значение элемента (строка i, столбец 0) больше или равно значению переменной 'а', то переменная 'с' принимает значение i (при котором выполнилось условие).

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А мозг наморщить если?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Prozorov пишет:

Предыдущий оратор заходится, что у меня ошибки в коде, а в тоже время не знает что предлоги пишутся раздельно.

блять. а, вот сейчас было сцуко обидно - пиду найимся чирвачкив с горя.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

эк ты, аффтар, Клапушку распидорасил. Нихарашо это.

fogary
Offline
Зарегистрирован: 05.03.2016

Prozorov пишет:

На счет строк 38 и 45 (дописал в код 'if', но итог тот же). Если значение элемента (строка i, столбец 0) больше или равно значению переменной 'а', то переменная 'с' принимает значение i (при котором выполнилось условие).

В этом объяснении Вы перепутали 'а' и 'с' местами.

По существу, если условие ниразу не выполнится, чему будет равно 'a'? Либо неизветно чему, либо сохранит предыдущее значение. Перед циклом проверок, сделайте 'a = -1; b = -1;', а перед 'f=m[a][b];' проверьте 'if (a != -1 && b != -1)'.

Prozorov
Offline
Зарегистрирован: 04.06.2017

Понял, спасибо

GarryC
Offline
Зарегистрирован: 08.08.2016

Вот после таких постов, вопросов и ответов начинаешь понимать, что Ардуино - это все-таки зло.

sadman41
Offline
Зарегистрирован: 19.10.2016

Если с другой стороны посмотреть - сами виноваты. Не отвечали бы на такие вопросы - человеки побилися бы башкой об стену и положили ардуины в стол. А так приставят их к газовым котлам и начнут деревни на воздух взлетать.