• Как исправить проблемы с шаговым двигателем?

    @mIka01 Автор вопроса
    @evgeniy_lm
    pinMode(in1, OUTPUT);
    pinMode(in2, OUTPUT);
    pinMode(in3, OUTPUT);
    pinMode(in4, OUTPUT);

    Перенес в setup().
    VGAX vga;
    vga.begin();

    Должны объявляться в функции output() , так как дальше я должен использовать поедете библиотеку для работы с шаговым двигателем типа "Stepper.zip", которая не работает когда не вызвана vga.end();.
    А так как после выполнения цикл должен повторится заново, то и vga.begin(); лучше вызывать внутри функции output().

    Результат такой же. Не работает

    P.S. Я выяснил что двигатель греется и при этом не хило, однако не крутится.
  • Как исправить проблемы с шаговым двигателем?

    @mIka01 Автор вопроса
    Поэтому я и сделал две функции для экрана и для двигателей. Когда я вызываю функцию работы с оператором (output), то изменяю глобальные переменные нужные для общения между функциями. После
    завершения работы оператора (когда он нажимает на джостик) все что связано с экраном выключается и картинка на мониторе пропадает. Далее должен включатся двигатель, но он этого не делает, так что ресурсов должно хватить.

    p.s. по т.з. от препода не могу использовать 2 платы.
  • Как исправить проблемы с шаговым двигателем?

    @mIka01 Автор вопроса
    Сразу же отвечу на некоторые вопросы.
    • Отдельно функции проверял в "Новая программа" все работает.
    • Для вывода на экран компьютерного монитора нету другой общедоступной библиотеки.
    • Использование библиотеки, например "Stepper-1.1.3.zip" все равно не спасает ситуацию.
  • Как исправить проблемы с шаговым двигателем?

    @mIka01 Автор вопроса
    Полный пример кода.

    #include <VGAX.h>
    #include "glyph.h"
    
    #define BLACK  0
    #define RED    1
    #define GREEN  2
    #define YELLOW 3
    
    #define in1 10
    #define in2 11
    #define in3 12
    #define in4 13
    
    
    
    double xVa, yVa, a3_copi;
    
    
    void setup() {
    }
    
    void loop() {
      output();
      servo();
    }
    
    void servo() {
      pinMode(in1, OUTPUT);
      pinMode(in2, OUTPUT);
      pinMode(in3, OUTPUT);
      pinMode(in4, OUTPUT);
      int dl = 5;
      for (int i = 0; i < 200; i++) {
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        digitalWrite(in3, LOW);
        digitalWrite(in4, HIGH);
        delay(dl);
    
        digitalWrite(in1, HIGH);
        digitalWrite(in2, HIGH);
        digitalWrite(in3, LOW);
        digitalWrite(in4, LOW);
        delay(dl);
    
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
        digitalWrite(in3, HIGH);
        digitalWrite(in4, LOW);
        delay(dl);
    
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        digitalWrite(in3, HIGH);
        digitalWrite(in4, HIGH);
        delay(dl);
      }
    }
    
    void output() {
      VGAX vga;
      Serial.println("Start");
      boolean  button = false;
      boolean  output = true;
      vga.begin();
    
      while (output) {
        char stri[10];
        static const char str[] PROGMEM = "Move on";
        static const char str0[] PROGMEM = "X = ";
        static const char str1[] PROGMEM = "Y = ";
        static const char str2[] PROGMEM = "Tact = ";
    
        static const char str3[] PROGMEM = "Yoke = ";
    
        double a1 = (analogRead (A1) / 10) - 51;
        double a2 = (analogRead (A2) / 10) - 51;
        int a3 = analogRead (A5) / 10;
    
        xVa += map(a1, -51, 51, -a3, a3) / 100.0;
        yVa += map(a2, -51, 51, -a3, a3) / 100.0;
    
        if ((a1 != 0) || (a2 != 0) || (a3_copi != a3)) {
          a3_copi = a3;
    
          vga.clear(BLACK);
    
          vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str, 10, 0, RED);
    
          vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str0, 10, 10, RED);
          dtostrf(xVa, 3, 2, stri);
          vgaPrint(stri, 30, 10, RED, vga);
    
          vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str1, 10, 20, RED);
          dtostrf(yVa, 3, 2, stri);
          vgaPrint(stri, 30, 20, RED, vga);
    
    
    
          vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str2, 60, 0, GREEN);
          dtostrf(a3, 3, 2, stri);
          vgaPrint(stri, 90, 0, GREEN, vga);
    
          vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str3, 60, 10, GREEN);
          dtostrf(a1, 3, 2, stri);
          vgaPrint(stri, 90, 10, GREEN, vga);
          dtostrf(a2, 3, 2, stri);
          vgaPrint(stri, 90, 20, GREEN, vga);
    
          button = true;
        } else {
          if (button) {
    
            vga.clear(BLACK);
    
            vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str, 10, 0, RED);
    
            vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str0, 10, 10, RED);
            dtostrf(xVa, 3, 2, stri);
            vgaPrint(stri, 30, 10, RED, vga);
    
            vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str1, 10, 20, RED);
            dtostrf(yVa, 3, 2, stri);
            vgaPrint(stri, 30, 20, RED, vga);
    
    
    
            vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str2, 60, 0, GREEN);
            dtostrf(a3, 3, 2, stri);
            vgaPrint(stri, 90, 0, GREEN, vga);
    
            vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str3, 60, 10, GREEN);
            dtostrf(a1, 3, 2, stri);
            vgaPrint(stri, 90, 10, GREEN, vga);
            dtostrf(a2, 3, 2, stri);
            vgaPrint(stri, 90, 20, GREEN, vga);
            vga.delay(100);
            dtostrf(0, 3, 2, stri);
            vgaPrint(stri, 90, 10, GREEN, vga);
            dtostrf(0, 3, 2, stri);
            vgaPrint(stri, 90, 20, GREEN, vga);
    
            button = false;
          }
        }
        if (digitalRead(0) == LOW)  {
          static const char str0[] PROGMEM = "start";
          vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str0, 0, 0, GREEN);
          delay(5000);
          vga.end();
          output = false;
        }
    
        vga.delay(100);
      }
    }
    
    
    void vgaPrint(char * str, byte x, byte y, byte color, VGAX vga) {
      vga.printSRAM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 3, 1, str, x, y, color);
    }
  • Как получить bitmap от ip камеры?

    @mIka01 Автор вопроса
    Я нашел еще такое решение.
    pictureBox1.Load("http://185.10.80.33:8082/record/current.jpg?rand=313886");
  • Как получить bitmap от ip камеры?

    @mIka01 Автор вопроса
    Василий Банников, Я ожидаю, что мне подскажут или приведут пример своего кода. Функцию которая принимает ip камеры, а возвращает bitmap.
  • Как получить bitmap от ip камеры?

    @mIka01 Автор вопроса
    Типа так не работает.
    MJPEGStream stream;
    stream = new MJPEGStream("http://185.10.80.33:8082/cgi-bin/faststream.jpg");
    Bitmap bmp = (Bitmap)eventArg.Frame.Clone();
    pictureBox1.Image = bmp;

    Компонент eventArg отсутствует.
  • Как получить bitmap от ip камеры?

    @mIka01 Автор вопроса
    Как я понял это проблемы AForge.Video. ,опять же из Google.
  • Как получить bitmap от ip камеры?

    @mIka01 Автор вопроса
    Нет, в функцию передается NewFrameEventArgs eventArg. Я при поиске в google не нашел как избавится от этого. А опыта работы с ip камерами и вообще с камерами у меня нету. Так что использовал эту конструкцию. Когда понадобилось изменить, то не смог.
  • Вопросы про свёрточная нейронная сеть?

    @mIka01 Автор вопроса
    Нет, я не могу понять как она определяет координаты объекта на который она натренирована. Я обычно делал сеть которая говорила есть ли объект на изображении, а как рамку я не понимаю. Как она определила размеры и т.д.
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    none7 Все заработало, сейчас буду интегрировать в свою лабу.
    Большое спасибо за помощь.
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    none7 , Вот у меня ваш пример так выглядит - https://dropmefiles.com/cRkxf
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    none7 ,У меня вылезает ошибка.
    6156cd3179dd3854383993.png
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    Александр Ананьев, Это сложно будет сделать. Я вечером конечно могу на git залить, но если честно, то можешь лучшее свой пример.
    P.s. Я пишу лабораторное задание с определённым т.з. В кратце мне нужно поток для считывания с скокета. Так как по т.з. сокет не может иметь модификации не виснуть пока не примет данные. Естественно он у меня виснет. Хочу решить проблему через поток.
    P.p.s. Я еще делал для этой лабы. сервер где использовал потоки и они работали. Но приложение контрольное, а здесь аналогия не сработала.
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    У меня все равно не получается.
    Пример кода. (тестовый)
    private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
    
    		CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)MyThreadFunction, NULL, NULL, NULL);
    		Sleep(100);
    		hhh f;
    		f.aaa = 10;
    	}
    	};
    
    
    	DWORD WINAPI MyThreadFunction(LPVOID lpParam)
    	{
    		hhh f;
    		f.aaa = 5;
    
    		return 0;
    	}


    Пример класса.
    #pragma once
    ref class hhh
    {
    public:
    	static int aaa;
    
    };
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    Я понял, исправлюсь.
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    Александр Ананьев, А какое из реализаций верное ?
    Можете прописать что писать в кнопке и как вызывать функцию правильно. Или я не правильно понял и вообще потоком пользоваться не получится.?
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    Или надо так ? Но это вызывает ошибку.
    6154e2fac5248344894008.png
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    У меня не срабатывает.
    Вот пример. Выводить должно последовательно линии в PictureBox который я назвал My_Field.
    6154d9801063f793328369.png
  • Как вызвать CreateThread внутри Form?

    @mIka01 Автор вопроса
    А как в коде выгладить будет?