Ответить
  • Drosha Senior Member
    офлайн
    Drosha Senior Member

    1966

    18 лет на сайте
    пользователь #86205

    Профиль
    Написать сообщение

    1966
    # 5 января 2015 21:42

    МиГ, выведите cas в serial и посмотрите что там за значение

  • МиГ Senior Member
    офлайн
    МиГ Senior Member

    2168

    19 лет на сайте
    пользователь #53792

    Профиль
    Написать сообщение

    2168
    # 5 января 2015 23:00 Редактировалось МиГ, 3 раз(а).

    Drosha, Монитор порта выводит те же самые значения, что и дисплей.
    P.S. На мониторе порта время идет не по порядку т.к. я немного поменял значение sek, чтобы быстрее дождаться отрицательных значений cas

  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    18 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 5 января 2015 23:37 Редактировалось Protez1999, 2 раз(а).

    может код надо было точно переписать как я кидал? для чего 0 минус час ? Чтоб приравнивать что то к изображению на экране надо и вводить тоже значение. Надо посмотреть в порте не 0 - час а просто час. К этому и приравнивается формула больше или меньше.

  • МиГ Senior Member
    офлайн
    МиГ Senior Member

    2168

    19 лет на сайте
    пользователь #53792

    Профиль
    Написать сообщение

    2168
    # 6 января 2015 00:33
    Protez1999:

    может код надо было точно переписать как я кидал? для чего 0 минус час ? Чтоб приравнивать что то к изображению на экране надо и вводить тоже значение. Надо посмотреть в порте не 0 - час а просто час. К этому и приравнивается формула больше или меньше.

    Хорошо, если не вводить 0-cas, как я тогда смогу обозначить ардуине необходимый мне интервал времени по величине cas. Отсчет мне нужен в обратную сторону и если таймер нужен на 2 часа, тогда прописывать надо 1-cas, 60-min, 60-sec.
    А как в данном случае можно еще поступить??? Или я что-то туплю :roof:
    Но вообще проблемку я разрешил сам, ввел еще одну переменную

    int timer = 0-cas;

    ну а дальше, все как обычно

    if(timer<0)
    digitalWrite(13, LOW);
    else
    digitalWrite(13, HIGH);

    таким макаром заработало :D

  • МиГ Senior Member
    офлайн
    МиГ Senior Member

    2168

    19 лет на сайте
    пользователь #53792

    Профиль
    Написать сообщение

    2168
    # 6 января 2015 08:14
    Protez1999:

    может код надо было точно переписать как я кидал? для чего 0 минус час ? Чтоб приравнивать что то к изображению на экране надо и вводить тоже значение. Надо посмотреть в порте не 0 - час а просто час. К этому и приравнивается формула больше или меньше.

    Если вы имеете виду эту часть кода

    if(cas<0)
    digitalWrite(13, LOW);
    else if (cas>0)
    digitalWrite(13, HIGH);
    можно так

    То я его тоже вводил, результат был тот же, т.е. таймер не оключался

  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    18 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 6 января 2015 13:03

    Разобрались и хорошо.

  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    18 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 7 января 2015 11:20

    Кто подскажет как сделать не используя аналоговый выход Нужно что диод имел 2 яркости. Пробовал подключать через 2 разных резистора и 2 порта ардуино не прокатывает. Горит тока 1 режим

    Добавлено спустя 23 минуты 55 секунд

    проблема решена через analogWrite

  • Drosha Senior Member
    офлайн
    Drosha Senior Member

    1966

    18 лет на сайте
    пользователь #86205

    Профиль
    Написать сообщение

    1966
    # 7 января 2015 11:44

    digitalWrite(pin, 150); и digitalWrite(pin, 20);

    Добавлено спустя 2 минуты 33 секунды

    по крайней мере я для каналов RGB ленты так делал

  • МиГ Senior Member
    офлайн
    МиГ Senior Member

    2168

    19 лет на сайте
    пользователь #53792

    Профиль
    Написать сообщение

    2168
    # 9 января 2015 08:17 Редактировалось МиГ, 8 раз(а).

    unsigned long time;
    #include <LCD5110_Basic.h>
    LCD5110 myGLCD(8,9,10,11,12);
    extern uint8_t SmallFont[];
    void setup(){
    myGLCD.InitLCD(); // инициализация дисплея
    Serial.begin(9600);
    pinMode(13, OUTPUT);
    }
    void loop(){
    myGLCD.setFont(SmallFont);
    time = millis();
    int sek = time/1000;
    int minyt = (time/1000)/60;
    int cas = (minyt/60);
    int minyt2 = minyt;
    if(cas>0) minyt2 =(minyt-60*cas);
    if((time/1000)>60) sek =(sek-60*minyt);
    if(cas<0)digitalWrite(13, LOW);
    else
    digitalWrite(13, HIGH);
    //выводит количество миллисекунд с момента начала выполнения программы
    myGLCD.print("Vremya ostalos", 0, 0);
    myGLCD.printNumI(int(0-cas), 9, 30);
    myGLCD.print("CHAS:", LEFT, 20);
    myGLCD.printNumI(int(60-minyt2), 39 , 30);
    myGLCD.print("MIN:", 33, 20);
    myGLCD.printNumI(int(60-sek), 66, 30);

    myGLCD.print("SEC:", RIGHT, 20);

    // ждет секунду, перед следующей итерацией цикла.
    delay(1000);

    myGLCD.clrScr();
    }

    Protez1999 или Drosha,Возвращаюсь все-таки к теме отрицательных значений таймера. Как можно запретить отрицательные значения используя часы в обратную сторону???
    По логике как-то должно быть
    if (sek<0)
    sek=0;
    вчера попробовал не получилось, ардуина упрямо лезет в минус. Просто вчера решил усложнить себе задачу и сделать программу более гибкой, т.е. чтобы была возможность вводить не целы часом, а скажем 2 часа и 30 минут???

  • Drosha Senior Member
    офлайн
    Drosha Senior Member

    1966

    18 лет на сайте
    пользователь #86205

    Профиль
    Написать сообщение

    1966
    # 9 января 2015 10:21 Редактировалось Drosha, 1 раз.

    МиГ, попробуйте использовать {}

    код выделить все
    if (sek &lt; 0) {
    sek = 0;
    }
  • VitFil Member
    офлайн
    VitFil Member

    305

    23 года на сайте
    пользователь #4511

    Профиль
    Написать сообщение

    305
    # 9 января 2015 16:12

    myGLCD.printNumI(int(0-cas), 9, 30); // Всегда будет отрицательное значение
    А вообще в главном цикле какая-то ересь написана...
    int cas = (minyt/60); // Всегда больше 0
    следовательно
    if(cas<0)
    вообще не имеет смысла!
    Далее...
    if(cas>0) minyt2 =(minyt-60*cas);
    Условие не имеет смысла, потому что см. выше.
    а minut2 всегда будет = minut

    Много интересного найдется в http://кладовочка.бел
  • МиГ Senior Member
    офлайн
    МиГ Senior Member

    2168

    19 лет на сайте
    пользователь #53792

    Профиль
    Написать сообщение

    2168
    # 9 января 2015 18:07 Редактировалось МиГ, 6 раз(а).
    VitFil:

    myGLCD.printNumI(int(0-cas), 9, 30); // Всегда будет отрицательное значение

    Не отрицательное значение, т.к. есть еще minyte и sek, и только когда они (эти значения) дойдут до ноля, тогда cas будет равно -1.
    Уже проверено, так и работает. По поводу cas<0 согласен, это был первый вариант скетча - это уже исправлено и я ввел еще другую переменную 0-cas (или любое др. число, в зависимости на какой период нужен таймер. if cas<0 уже убрано. По поводу minyt2=minyt, сам не пойму зачем эта переменная, но именно потому что не понял, трогать не стал. Пока пробую запретить ардуине отрицательные значения sek. Пока не получилось...

  • VitFil Member
    офлайн
    VitFil Member

    305

    23 года на сайте
    пользователь #4511

    Профиль
    Написать сообщение

    305
    # 15 января 2015 15:50

    Возможно. То в этом случае, вы выложили не те исходники. Кстати!
    // ждет секунду, перед следующей итерацией цикла.
    delay(1000);

    Как время выполнения операторов цикла учитывается? В теории, на экране могут быть "перескоки" через секунду.

    Много интересного найдется в http://кладовочка.бел
  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    18 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 15 января 2015 16:30

    delay особо ни на что не влияет. просто выводит информацию раз в сек на экран

  • VitFil Member
    офлайн
    VitFil Member

    305

    23 года на сайте
    пользователь #4511

    Профиль
    Написать сообщение

    305
    # 15 января 2015 16:43

    Прямо вот раз в сек?

    Много интересного найдется в http://кладовочка.бел
  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    18 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 15 января 2015 18:31 Редактировалось Protez1999, 1 раз.

    обновляет

  • BORTACH Клуб Самоделкиных
    офлайн
    BORTACH Клуб Самоделкиных

    3766

    15 лет на сайте
    пользователь #357746

    Профиль
    Написать сообщение

    3766
    # 21 января 2015 00:37

    Товарищи, помогите оживить плату multiwii. Слетел загрузчик.
    При попытке залить бутлоудер через ARDUINO пишет ошибки:

    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.
    Тут уже не исправить ничего, Господь, ЖГИ!
  • art100 Клуб Самоделкиных
    офлайн
    art100 Клуб Самоделкиных

    5114

    14 лет на сайте
    пользователь #397580

    Профиль
    Написать сообщение

    5114
    # 29 января 2015 14:38 Редактировалось art100, 4 раз(а).

    что-то тут затихло
    Из сегодняшнего

    Добавлено спустя 11 минут 1 секунда

    BORTACH:

    Товарищи, помогите оживить плату multiwii. Слетел загрузчик.
    При попытке залить бутлоудер через ARDUINO пишет ошибки:

    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.
    avrdude: Yikes! Invalid device signature.
    Double check connections and try again, or use -F to override
    this check.

    и в первом и во втором случае просто нет синхронизированного корректного адекватного ответа
    если слетел классический ардуино загрузчик поступаем классически
    шьем через классические 4 провода MISO MOSI и т.д. каждый процессор на индивидуальных штырьках
    подробности надо вспоминать
    на классической плате классически 2 микроконтроллера
    Atmega16U2
    Atmega328

    а какой плате идет разговор?
    О такой облегченной вертолетной?

    Круиз-контроль 88 км/ч. Радость никакая печаль.
  • BORTACH Клуб Самоделкиных
    офлайн
    BORTACH Клуб Самоделкиных

    3766

    15 лет на сайте
    пользователь #357746

    Профиль
    Написать сообщение

    3766
    # 29 января 2015 21:32 Редактировалось BORTACH, 2 раз(а).

    Да, именно она! Распаял порт (внизу слева), подключаю через такой USBasp:

    Пишет такое:

    upd
    После почти месяца мучений, нашел 100% метод:
    гвоздь+молоток+заказал новый)))))

    Тут уже не исправить ничего, Господь, ЖГИ!
  • PBA Junior Member
    офлайн
    PBA Junior Member

    46

    14 лет на сайте
    пользователь #541291

    Профиль
    Написать сообщение

    46
    # 29 января 2015 22:03 Редактировалось PBA, 2 раз(а).

    Привет!
    Заранее извините, если пишу не по месту.
    Может кто делал, или кто просто поможет идеями.
    Подопытный: гольф 2 85-года 1,6тд мотор.
    Задача: Цифровая приборная панель.
    Планы:
    1. Датчик температуры - заказал на али (цифровой, жк). всунуть внутрь родного корпуса его датчик.
    2. Индикаторные светодиоды (акб, масло, свечи, повороты...) будут работать по заводскому принципу, только в новом стиле.
    ===== дальше то, что требует вашего внимания =====
    3. Спидометр - стрелка.
    Думал сделать на ардуине + сервомашинке мелкой. Импульсы от штатного (ну почти, переведен на цифру) датчика скорости, такого, как в гольф3.
    4. Одометр - LCD 8*2 от той же ардуины
    5. Тахометр - стрелка.
    Тут так же, как и со спидометром. Импульсы буду брать с генератора.

    Как правильно все организовать. Может кто кодом поможет?