Все так сделал как Вы сказали, сообщения вижу по латыне, увидел, что переменную S надо уменьшать! Без монитора вообще не реально отлаживать... А щаз глаза горят! Ручки стучат! Потихонечку получается!!!!СПАСИБО!!!! Печать в мониторе в одну строку - только так можно? Можно построчно каждое сообщение?*
Все получилось на данном этапе с одномерным массивом!!!! Все действия вижу в мониторе!!! КЛАСС! Пошел далее, теперь вернусь к двухмерному массиву СПАСИБО!!! КЛАСС!!!!
Добрый день, попытался сделать r - переменной. -ругается, что r - не объявлена Код (C++): for (int jj=s; jj=q; jj++) // Количество пикселей в строке { Serial.println(f); Serial.println(s); int ii=0;// Возворачиваем значения в первоначальные int kk=0; int ll=0; int mm=0; int nn=0; int tt=0; int pp=0; int rrr=0; if (massiv[f][s]==1)// Проверка значения текущей ячейки в массиве {int r=1;} if (massiv[f][s]==2)// Проверка значения текущей ячейки в массиве {int r=2;} if (massiv[f][s]==2)// Проверка значения текущей ячейки в массиве {int r=3;} if (massiv[f][s]==2)// Проверка значения текущей ячейки в массиве {int r=4;} if (massiv[f][s]==2)// Проверка значения текущей ячейки в массиве {int r=5;} else { for (int ii=0; ii<x; ii++)// Работа ШД№3 (перемещение на один пиксель в строке вперед) { digitalWrite(ob32,LOW);// выключаем обмотку1 ШД3 (шаг 2) delay(c); digitalWrite(ob31,LOW);// вылючаем обмотку2 ШД3 (шаг 3) delay(c); digitalWrite(ob32,HIGH);// включаем обмотку1 ШД3 (шаг 4) delay(c); digitalWrite(ob31,HIGH);// включаем обмотку2 ШД3 (шаг 1) delay(c); } //конец else for (int kk=0; kk<r; kk++) // Работа ШД№1 (вперед) { digitalWrite(ob12,LOW);// выключаем обмотку2 ШД1 (шаг 2) delay(a); digitalWrite(ob11,LOW);// выключаем обмотку1 ШД1 (шаг 3) delay(a); digitalWrite(ob12,HIGH);// включаем обмотку2 ШД1 (Шаг 4) delay(a); digitalWrite(ob11,HIGH);// включаем обмотку1 ШД1 (шаг 1) delay(a); Serial.println("K BUNKERU"); } for (int ll=0; ll<p; ll++) // Работа ШД№2 (опускание кисти в бункер) { digitalWrite(ob22,LOW);// выключаем обмотку2 ШД2 (шаг 2) delay(b); digitalWrite(ob21,LOW);// выключаем обмотку1 ШД2 (шаг 3) delay(b); digitalWrite(ob22,HIGH);// включаем обмотку2 ШД2 (Шаг 4) delay(b); digitalWrite(ob21,HIGH);// включаем обмотку1 ШД2 (шаг 1) delay(b); Serial.println("KLUV V BUNKER"); } for (int mm=0; mm<p; mm++) // Работа ШД№2 (поднятие кисти из бункера) { digitalWrite(ob21,LOW);// выключаем обмотку1 ШД2 (шаг 3) delay(b); digitalWrite(ob22,LOW);// выключаем обмотку2 ШД2 (шаг 2) delay(b); digitalWrite(ob21,HIGH);// включаем обмотку1 ШД2 (шаг 1) delay(b); digitalWrite(ob22,HIGH);// включаем обмотку2 ШД2 (Шаг 4) delay(b); Serial.println("KLUV S BUNKERA"); } for (int nn=0; nn<r; nn++) // Работа ШД№1 (назад) { digitalWrite(ob11,LOW);// выключаем обмотку1 ШД1 (шаг 3) delay(a); digitalWrite(ob12,LOW);// выключаем обмотку2 ШД1 (шаг 2) delay(a); digitalWrite(ob11,HIGH);// включаем обмотку1 ШД1 (Шаг 1) delay(a); digitalWrite(ob12,HIGH);// включаем обмотку2 ШД1 (шаг 4) delay(a); Serial.println("K USTANOVKE"); } Что не правильно написал? Или нельзя IF без Else ?
IF без ELSE как раз можно.... а вот все остальное.... О-хо-хо.... Который раз вам сказать. что надо книжки читать? - по-моему, это уже четвертый будет. Насколько я вижу, переменная r у вас обьявлена... И даже несколько раз... Каждый раз, когда вы пишете int перед именем переменной - вы обьявляете ее заново. Так что ваши IF обьявляют пять разных переменных r. И главное - все бесполезно... Читайте раздел "область видимости локальных переменных Си" - потому что я обьяснить не смогу, а без этого знания писать программы нельзя.
Чет не правильно определяет элементы массива.... Правильно записал? Код (C++): int r=0; int y =4; int q = 4; int massiv [y][q]= { {5,5,5,5}, {5,5,5,5}, {5,5,5,5}, {5,5,5,5} }; //массив s=1; f =1; if (massiv[f][s]==1)// Проверка значения текущей ячейки в массиве {r=1;} if (massiv[f][s]==2)// Проверка значения текущей ячейки в массиве {r =2;} if (massiv[f][s]==3)// Проверка значения текущей ячейки в массиве {r=3;} if (massiv[f][s]==4)// Проверка значения текущей ячейки в массиве {r=4;} if (massiv[f][s]==5)// Проверка значения текущей ячейки в массиве {r=5;} else {int z =z*r*r; Serial.println(z);} z =z*r; Serial.println(z);
Че пурга то, в зависимости от значения в массива (1,2,3,4,5) меняется r выводится в монитор. Если нет удовлетворяющего значение , то Z умножается на r два раза. (единственное добавил начальное r=0, а то не было). Сам синтаксис проверки массива и запись условия в условии верны?
Начните с того, что почитайте про создание матриц вот тут: https://code-live.ru/post/cpp-array-tutorial-part-2/ Размеры матрицы y и q определите как const unsigned int. Во-вторых, что вы хотите получить на выходе этого кода? Я так понимаю, что в результате цепочки if вы хотите, чтобы r принял значение 5, да? А затем у вас должно пересчитываться z, как z =z*r. Но вы же не задали никакого значения z до этого.
Скажите массив из 87500 элементов - не скомпелируется? int massiv [250][350] = { тут 87500 }; //массив Как считать данные с такого размера матрицы?
Скомпилируется, если оперативки хватит. Если оперативки всего пару килобайт - то как вы представляете себе эту задачу: уместить 170 килобайт в 2 килобайта?
Жить с этим. И выбирать либо камень под задачи, либо - другой способ решения задачи, ибо матрица таких охеренных размеров - не всегда нужна в оперативке.
Скажите каким алгоритмом решить - буду изучать... Массивы вроде освоил)))) а они зараза не работают в данном случае....((((( С SD карты можно реализовать?
Что решить-то? Главный вопрос вселенной? Кроссворд? Матрица - это просто набор данных. Для чего этот набор данных - хз, поэтому и ответ на ваш вопрос - тоже хз.
В зависимости от элемента в матрице при ее переборе (к примеру 250 на 350) элементы от 1 до 5. Зажигаются светодиоды номер 1, 2, 3, 4, 5. Или двигать ШД на 1см, 2см, 3см, 4см, 5см соответственно.
Что-то типа микропрограммы хотите сделать? Тогда первое, что приходит в голову по вашей постановке задачи - упаковка матрицы, т.к. если вам нужны просто флаги - нет нужды хранить один флаг в целом числе, т.к. в одной байте можно хранить 8 флагов. Т.е. ваша матрица сможет стать меньше в 16 раз, сходу.