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

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

  1. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Учись студент !
     
    Daniil, DetSimen и Andrey12 нравится это.
  2. Daniil

    Daniil Гуру

    Вас даже читать было захватывающе)
     
  3. cncplazma

    cncplazma Нерд

    не подскажете как осуществить такое?
    при включении габаритов ардуино понимала, что на пин пришло напряжение и включала соответствующую картинку.
    с картинками и экраном я разобрался, а вот как прописать что б ардуино поняла, что на пине ток не понятно.
     

    Вложения:

  4. parovoZZ

    parovoZZ Гуру

    прописать - никак. Там будет ноль ВСЕГДА.
    Ставится датчик тока: инвазивным методом - шунт, не инвазивным методом - на основе датчика холла.
     
  5. KindMan

    KindMan Гуру

    Да, по вашей схеме, никак не узнать. И ещё уточнение
    Что вам надо из этого?
     
  6. Ariadna-on-Line

    Ariadna-on-Line Гуру

    1. Никогда НЕ подключаем пины Ардуины куда-либо БЕЗ ОГРАНИЧИТЕЛЬНОГО РЕЗИСТОРА, хотя бы 100 ом.
    2. Правильно задавайте вопросы. "НА" пине - может быть напряжение (потенциал относительно GND). Ток - может быть "ЧЕРЕЗ" пин.
    3. Вам нужно Это : - ?

    Код (C++):

    #define Gabarit    7
    void Setup() {
    pinMode (Gabarit, INPUT);
    ... }
    void Loop() {
    int Svet = digitalRead(Gabarit);
    if Svet == 0 {...}
    else {...}
    ...
     
    Естественно, вольтметр на схеме только для наглядности. В реале его как раз Ардуина и заменяет. Вам нужны лишь Ардуина и два резистора. Резистор R2 возьмите - 2 ком. Так как бортовая сеть плавает до 15 вольт..
     

    Вложения:

    • ARDoff.JPG
      ARDoff.JPG
      Размер файла:
      52,9 КБ
      Просмотров:
      341
    • ARDon.JPG
      ARDon.JPG
      Размер файла:
      53,7 КБ
      Просмотров:
      346
    Последнее редактирование: 8 авг 2019
    Andrey12 нравится это.
  7. cncplazma

    cncplazma Нерд

    Код (C++):
    #include       <SoftwareSerial.h>                                                              // Подключаем библиотеку SoftwareSerial для работы с программным UART
    const uint8_t  pinRX   = 0;                                                                    // Определяем константу хранящую номер вывода Arduino RX программного UART, подключается к выводу TX дисплея
    const uint8_t  pinTX   = 1;                                                                    // Определяем константу хранящую номер вывода Arduino TX программного UART, подключается к выводу RX дисплея
    const uint8_t  pinVD1  = 7;                                                                    // Определяем константу хранящую номер вывода Arduino к которому подключён первый светодиод
    const uint8_t  pinVD2  = 6;                                                                    // Определяем константу хранящую номер вывода Arduino к которому подключён второй светодиод
    const uint8_t  pinR    = A2;                                                                   // Определяем константу хранящую номер вывода Arduino к которому подключён потенциометр
    SoftwareSerial softSerial(pinRX,pinTX);                                                        // Объявляем объект softSerial с указанием выводов RX и TX по которым общаемся с дисплеем
                                                                                                   //
    void setup(){                                                                                  //
    //  Подготовка:                                                                                //
        softSerial.begin(9600);                                                                    // Инициируем передачу данных по программному UART на скорости 9600 бит/сек
        pinMode(pinVD1, OUTPUT);                                                                   // Конфигурируем вывод pinVD1 как выход
        pinMode(pinVD2, OUTPUT);                                                                   // Конфигурируем вывод pinVD2 как выход
    //  Устанавливаем состояние первого светодиода:                                                //
        softSerial.print((String) "print h0.val"+char(255)+char(255)+char(255));                   // Отправляем команду дисплею: print h0.val заканчивая её тремя байтами 0xFF
        while(!softSerial.available()){}                                                           // Ждём ответа. Дисплей должен вернуть состояние слайдера h0, отправив 4 байта данных
        analogWrite(pinVD1, softSerial.read());          delay(10);                                // Устанавливаем на выводе pinVD1 сигнал ШИМ с коэффициентом заполнения равным значению первого принятого байта ответа дисплея
        while(softSerial.available()){softSerial.read(); delay(10);}                               // Читаем остальные 3 байта ответа ничего с ними не делая, так как установленный диапазон значений слайдера от 0 до 255 уместился в первом байте данных
    //  Устанавливаем состояние второго светодиода:                                                //
        softSerial.print((String) "print bt0.val"+char(255)+char(255)+char(255));                  // Отправляем команду дисплею: «print bt0.val» заканчивая её тремя байтами 0xFF
        while(!softSerial.available()){}                                                           // Ждём ответа. Дисплей должен вернуть состояние кнопки bt0, отправив 4 байта данных, где 1 байт равен 0x01 или 0x00, а остальные 3 равны 0x00
        digitalWrite(pinVD2, softSerial.read());         delay(10);                                // Устанавливаем на выводе pinVD2 состояние в соответствии с первым принятым байтом ответа дисплея
        while(softSerial.available()){softSerial.read(); delay(10);}                               // Читаем остальные 3 байта ответа ничего с ними не делая, так как состояние кнопки было передано в первом байте
    }                                                                                              //
                                                                                                   //
    void loop(){                                                                                   //
        if(softSerial.available()>0){                                                              // Если есть данные принятые от дисплея, то ...
            String str;                                                                            // Объявляем строку для получения этих данных
            while(softSerial.available()){str+=char(softSerial.read()); delay(10);}                // Читаем принятые от дисплея данные побайтно в строку str
            for(int i=0; i<str.length(); i++){                                                     // Проходимся по каждому символу строки str
                if(memcmp(&str[i],"h0" ,2)==0){i+=5; analogWrite (pinVD1, str[i-3]);}else          // Если в строке str начиная с символа i находится текст "h0",  значит после него следует 4 символа (байта) данных слайдера, первый из который следует указать как ШИМ для вывода pinVD1
                if(memcmp(&str[i],"ON" ,2)==0){i+=1; digitalWrite(pinVD2, HIGH);    }else          // Если в строке str начиная с символа i находится текст "ON",  значит кнопка дисплея была включена, устанавливаем высокий уровень на выводе pinVD2
                if(memcmp(&str[i],"OFF",3)==0){i+=2; digitalWrite(pinVD2, LOW);     }              // Если в строке str начиная с символа i находится текст "OFF", значит кнопка дисплея была выключена, устанавливаем низкий уровень на выводе pinVD2
            }                                                                                      //
        }                                                                                          //
        if(millis()%500<=5){delay(5);                                                              // Следующее действие выполняем каждые пол секунды
        softSerial.print((String)"t0.txt=\""+analogRead(pinR)+"\""+char(255)+char(255)+char(255)); // Отправляем команду дисплею: «t0.txt="текст"» заканчивая её тремя байтами 0xFF. Эта команда устанавливает значение для текстового поля t0
        }                                                                                          // В качестве текста передаётся значение в аналогового входа pinR считанное функцией analogRead
    }
    и снова здравствуйте, многоуважаемые знатоки!!!
    перестала работать связка ардуино и экран нэкшен.
     
  8. cncplazma

    cncplazma Нерд

    выше код, но реакции 0.
    вернее в порт приходит print h0.val??? и на этом все
     
  9. cncplazma

    cncplazma Нерд

    плата ардуино мега 2560
     
  10. cncplazma

    cncplazma Нерд

    раньше работал с библиотекой некшен, но щас не хочет работать
     
  11. cncplazma

    cncplazma Нерд

    хочу сделать управление rgb лентой, часы с будильником и температура, но не могу понять что со связью между ардуино и экраном
     
  12. cncplazma

    cncplazma Нерд

    помогите написать код.
    1 на экране слайдер меняет яркость диода подключенного к ардуино
    2 изменить текстовое поле на экране с ардуино
     
  13. DetSimen

    DetSimen Гуру

    $100
     
    b707 нравится это.
  14. b707

    b707 Гуру

    может книжку сначала почитать? В коде прям с самой первой строчки чушь написана
     
  15. cncplazma

    cncplazma Нерд

    Код (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);
    }
    этот код некогда был рабочим, но щас он не работает