Создание скетча

Тема в разделе "Arduino & Shields", создана пользователем Artclonic, 4 янв 2018.

  1. Artclonic

    Artclonic Гик

    Все так сделал как Вы сказали, сообщения вижу по латыне, увидел, что переменную S надо уменьшать!
    Без монитора вообще не реально отлаживать... А щаз глаза горят! Ручки стучат! Потихонечку получается!!!!СПАСИБО!!!!
    Печать в мониторе в одну строку - только так можно? Можно построчно каждое сообщение?*
     
  2. b707

    b707 Гуру

    Serial.print - без перевода строки
    Serial.println - с переводом строки
     
  3. Artclonic

    Artclonic Гик

    Все получилось на данном этапе с одномерным массивом!!!! Все действия вижу в мониторе!!! КЛАСС!
    Пошел далее, теперь вернусь к двухмерному массиву
    СПАСИБО!!! КЛАСС!!!!
     
  4. Artclonic

    Artclonic Гик

    Добрый день, попытался сделать 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 ?
     
  5. DetSimen

    DetSimen Guest

    крофь из глаз...
     
  6. Artclonic

    Artclonic Гик

    Вот так надо?
     

    Вложения:

  7. b707

    b707 Гуру

    IF без ELSE как раз можно.... а вот все остальное....
    О-хо-хо.... Который раз вам сказать. что надо книжки читать? - по-моему, это уже четвертый будет.

    Насколько я вижу, переменная r у вас обьявлена... И даже несколько раз...
    Каждый раз, когда вы пишете int перед именем переменной - вы обьявляете ее заново. Так что ваши IF обьявляют пять разных переменных r. И главное - все бесполезно...

    Читайте раздел "область видимости локальных переменных Си" - потому что я обьяснить не смогу, а без этого знания писать программы нельзя.
     
  8. Artclonic

    Artclonic Гик

    Предельно ясно! про r (даже хотел с начало вопрос про несколько int к одной переменной ) Все понял.
     
  9. Artclonic

    Artclonic Гик

    Чет не правильно определяет элементы массива.... Правильно записал?
    Код (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);

     
     
    Последнее редактирование: 14 янв 2018
  10. vvr

    vvr Инженерище

    пурга какая то)))
     
  11. Artclonic

    Artclonic Гик

    Че пурга то, в зависимости от значения в массива (1,2,3,4,5) меняется r выводится в монитор. Если нет удовлетворяющего значение , то Z умножается на r два раза. (единственное добавил начальное r=0, а то не было). Сам синтаксис проверки массива и запись условия в условии верны?
     
  12. Larscliff

    Larscliff Нерд

    Начните с того, что почитайте про создание матриц вот тут:
    https://code-live.ru/post/cpp-array-tutorial-part-2/
    Размеры матрицы y и q определите как const unsigned int.

    Во-вторых, что вы хотите получить на выходе этого кода? Я так понимаю, что в результате цепочки if вы хотите, чтобы r принял значение 5, да? А затем у вас должно пересчитываться z, как z =z*r. Но вы же не задали никакого значения z до этого.
     
  13. Artclonic

    Artclonic Гик

    Скажите массив из 87500 элементов - не скомпелируется?

    int massiv [250][350] = { тут 87500 }; //массив

    Как считать данные с такого размера матрицы?
     
  14. DIYMan

    DIYMan Guest

    Скомпилируется, если оперативки хватит. Если оперативки всего пару килобайт - то как вы представляете себе эту задачу: уместить 170 килобайт в 2 килобайта?
     
  15. Artclonic

    Artclonic Гик

    Ардуино мега....
    8Кб оперативной памяти... Как же быть?
     
  16. DIYMan

    DIYMan Guest

    Жить с этим. И выбирать либо камень под задачи, либо - другой способ решения задачи, ибо матрица таких охеренных размеров - не всегда нужна в оперативке.
     
  17. Artclonic

    Artclonic Гик

    Скажите каким алгоритмом решить - буду изучать...
    Массивы вроде освоил)))) а они зараза не работают в данном случае....(((((

    С SD карты можно реализовать?
     
  18. DIYMan

    DIYMan Guest

    Что решить-то? Главный вопрос вселенной? Кроссворд? Матрица - это просто набор данных. Для чего этот набор данных - хз, поэтому и ответ на ваш вопрос - тоже хз.
     
  19. Artclonic

    Artclonic Гик

    В зависимости от элемента в матрице при ее переборе (к примеру 250 на 350) элементы от 1 до 5. Зажигаются светодиоды номер 1, 2, 3, 4, 5. Или двигать ШД на 1см, 2см, 3см, 4см, 5см соответственно.
     
  20. DIYMan

    DIYMan Guest

    Что-то типа микропрограммы хотите сделать? Тогда первое, что приходит в голову по вашей постановке задачи - упаковка матрицы, т.к. если вам нужны просто флаги - нет нужды хранить один флаг в целом числе, т.к. в одной байте можно хранить 8 флагов. Т.е. ваша матрица сможет стать меньше в 16 раз, сходу.