как сравнить элементы двумерного массива с переменными
- Войдите на сайт для отправки комментариев
Пт, 29/09/2017 - 00:00
Всем привет. Есть массив 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).
вот это analogRead(x); у тебя не делает ничего - сделай как-то так переменная = analogRead(x);
Через переменную я тоже делал, всё равно залипает одно значение и всё.
Что по-Вашему написано в строке 10? Можете объяснить?
а, в 13-й ? сравниваем номер пина с чем-то?
тот код я писал вручную с планшета и сократил немного для удобства. вот скетч который залит на ардуино
#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
вот скетч который залит на ардуино
иди нахуй.
сократил немного для удобства.
Для чьего удобства? Чтобы мы смотрели, думали, писали ответы, а там оказывается бред сивой кобылы?
Вы издеваетесь? Правильно Вам сказал "предыдующий оратор" :(
А по делу. Ответьте внятно на вопрос: что по-Вашему делается в строках 38 и 45?
Предыдущий оратор заходится, что у меня ошибки в коде, а в тоже время не знает что предлоги пишутся раздельно.
На счет строк 38 и 45 (дописал в код 'if', но итог тот же). Если значение элемента (строка i, столбец 0) больше или равно значению переменной 'а', то переменная 'с' принимает значение i (при котором выполнилось условие).
А мозг наморщить если?
Предыдущий оратор заходится, что у меня ошибки в коде, а в тоже время не знает что предлоги пишутся раздельно.
блять. а, вот сейчас было сцуко обидно - пиду найимся чирвачкив с горя.
эк ты, аффтар, Клапушку распидорасил. Нихарашо это.
На счет строк 38 и 45 (дописал в код 'if', но итог тот же). Если значение элемента (строка i, столбец 0) больше или равно значению переменной 'а', то переменная 'с' принимает значение i (при котором выполнилось условие).
По существу, если условие ниразу не выполнится, чему будет равно 'a'? Либо неизветно чему, либо сохранит предыдущее значение. Перед циклом проверок, сделайте 'a = -1; b = -1;', а перед 'f=m[a][b];' проверьте 'if (a != -1 && b != -1)'.
Понял, спасибо
Вот после таких постов, вопросов и ответов начинаешь понимать, что Ардуино - это все-таки зло.
Если с другой стороны посмотреть - сами виноваты. Не отвечали бы на такие вопросы - человеки побилися бы башкой об стену и положили ардуины в стол. А так приставят их к газовым котлам и начнут деревни на воздух взлетать.