очень прошу вашей помощи!!!

Тема в разделе "Флудилка", создана пользователем cncplazma, 3 авг 2019.

  1. cncplazma

    cncplazma Нерд

    Доброго времени суток! у меня такая проблема, изучаю ардуино + экран nextion , в итоге столкнулся с препядствием.
    дано: ардуино уно, экран nextion , потенциометр.
    кручу потенциометр, показания отображаются в текстовом поле, в номерном поле и двигается Gauge(это для проверки, что данные идут) , а картинка которая должна менять параметр PIC не меняется.
    вернее всё, что я могу сделать, это заставить ее меняться по нажатию кнопки перезагрузки ардуино.

    Код (C++):
    #include <SoftwareSerial.h>
    #include <Nextion.h>
    SoftwareSerial nextion(2, 3);
    Nextion myNextion(nextion, 9600);
    int potPin = 0;
    void setup() {
      Serial.begin(9600);
      myNextion.init();
    }
    void loop() {
      int val = map(analogRead(potPin),0,1023,0,6000);
      int mal = map(analogRead(potPin),0,1023,0,180);
      Serial.println(val);
      Serial.println(mal);
      float h = val;
    float t = mal;
      //myNextion.setComponentText("t3", String(t));
      delay(5);
      myNextion.setComponentText("t15", String(h));
      myNextion.setComponentValue("n0",h);
      myNextion.setComponentValue("z0",t);
      delay(5);
    }
    [​IMG]
     

    Вложения:

    • 10.jpg
      10.jpg
      Размер файла:
      245,2 КБ
      Просмотров:
      31
  2. parovoZZ

    parovoZZ Гуру

    а вопрос нам надо придумать?
     
  3. cncplazma

    cncplazma Нерд

    извините.
    вопрос в следующем , как осуществить смену картинок от показания потенциометра?
     
  4. Ну видимо добавить в главный цикл команду на смену картинки. Естественно, чтоб Ардуина не слала эту команду каждый оборот цикла - ввести проверку на "диапазон" входных значений - находимся в том же "коридоре" как и в предыдущий раз ? - уже посылали ? - больше не шлем. А сейчас у вас команда myNextion.init() видимо выполняет эту работу.

    ПС. Загрузил библиотеку Nextion, но Ардуино не компилирует ваш скетч. Выдает ошибки.
     
    Последнее редактирование: 4 авг 2019
  5. cncplazma

    cncplazma Нерд

    дайте пожалуйста код команды, я не понимаю этого
     
  6. Вот варварское решение через инициализацию дисплея - пример.

    Код (C++):
    #include <SoftwareSerial.h>
    #include <Nextion.h>
    SoftwareSerial nextion(2, 3);
    Nextion myNextion(nextion, 9600);
    int potPin = 0;
    int OldVal = 0;
    // int OldMal = 0;
    int Delta = 100;

    void setup() {

      Serial.begin(9600);
      myNextion.init();

    OldVal = map(analogRead(potPin),0,1023,0,6000);
    // OldMal = map(analogRead(potPin),0,1023,0,180);

    }
    void loop() {
      int val = map(analogRead(potPin),0,1023,0,6000);
      int mal = map(analogRead(potPin),0,1023,0,180);
      Serial.println(val);
      Serial.println(mal);
    If (abs(val - OldVal) > Delta) {
      float h = val;
      float t = mal;
      //myNextion.setComponentText("t3", String(t));
      delay(5);
      myNextion.setComponentText("t15", String(h));
      myNextion.setComponentValue("n0",h);
      myNextion.setComponentValue("z0",t);
    //OldVal = val;
    myNextion.init();
    OldVal = val;
    }
      delay(5);
    }
    Я не работал с Некстион, не нахожу описания функций библиотеки, а та что есть - не компилируется. Потому, кроме как подсказать логику, помочь не берусь. Если разберусь с библой - напишу. Ждите ответов гуру.
     
    Последнее редактирование: 5 авг 2019
  7. ИгорьК

    ИгорьК Давно здесь Команда форума

    Последнее редактирование: 4 авг 2019
  8. cncplazma

    cncplazma Нерд

    спасибо! я нашел решение моей задачи по другому.
    вот мой код, он примного большой , пока не знаю как его упростить. даже сюда не входит))))
     
  9. cncplazma

    cncplazma Нерд

    щас вопрос в другом
    на ардуино нано и уно потенциометр посылает в порт изменчивые показания в зависимости от его положения ,
    а вот такой же скетч уже на меге посылает полько 255
    Код (C++):
    #define pot A6
    void setup()
    {
    Serial.begin(9600);
    pinMode(pot, INPUT);
    }
    void loop()
    {
     
    int x;
    x = analogRead(pot) / 4;
    Serial.println(x);
    }
    .
    в чем может быть проблема?
     
  10. cncplazma

    cncplazma Нерд

    никак не реагирует на потенциометр
     
  11. Может как-то так ?
    Код (C++):
    #define pot A6
    void setup()
    {
    int x = 0;
    Serial.begin(9600);
    pinMode(pot, INPUT);
    }
    void loop()
    {
    x = (analogRead(pot) / 4);
    Serial.println(x);
    delay(100);
    }
    ПС. Для аналогового ввода надо бы указывать источник референсного напряжения.
    А другие входы пробовали ?
     
    Последнее редактирование: 6 авг 2019
  12. cncplazma

    cncplazma Нерд

    все так же(((
     
  13. void setup()
    {
    int x = 0;
    analogReference(DEFAULT);
    ...
    Ну не знаю. Ищите, вы там правильно компилятору модель платы указываете ? Правильно потенциометр к входам подключаете ? GND потенциометра не в обрыве ? Может АЦП палёный ? Заблудиться в одной сосне вроде невозможно.
     
  14. cncplazma

    cncplazma Нерд

  15. cncplazma

    cncplazma Нерд

    вроде все правильно, на уно и нано все работает при таком подключении
     
  16. Andrey12

    Andrey12 Гик

    Перенеси int x = 0; выше, она в setup объявлена в loop видна не будет.
    В первом варианте было правильно.

    Не поможет тогда попробуйте сменить пин, например на A0.
    И резистор 100ом включите на всякий случай между А6 и резистором.
     
  17. cncplazma

    cncplazma Нерд

    и так перенес иначе компилятор ругался. и пины менял . всю голову сломал уже. перывй опыт, плата недавна пришла. даже не знаю, что и делать?
     
  18. parovoZZ

    parovoZZ Гуру

    cncplazma

    А зачем мега? Более, чем уверен, что все прекрасно влезет в уно нано и прочую хрень.
     
  19. cncplazma

    cncplazma Нерд

    нужно в пректе 16 аналоговых пинов
     
  20. cncplazma

    cncplazma Нерд

    да и просто интересно почему везде код идет, а в меге нет!