Delphi+arduino+шаговый двигатель 28BYJ-48 и драйвер ULN2003

xucc
Offline
Зарегистрирован: 03.12.2018

Добрый день, уважаемые пользовали.

Приобрел шаговый двигатель 28BYJ-48 и драйвер ULN2003. Нашел скетч для двигателя, работает в Arduino IDE (без использования библиотеки <Stepper.h>). Попытался для управления шаговым двигателем написать простое приложение, на Delphi. В целом, приложение слушает порт (включает/выключает), шаговый двигатель откликается на это включение/отключение порта выполнением последней команды, запущенной с Arduino IDE.

Но вот с отправкой команд через com-port на драйвер шагового двигателя беда. Я пытался сделать это так: в некий txt документ писал код (копировал код из скетча). Например, этот:

int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
const int dl = 5;

void setup() {
    pinMode(in1, OUTPUT);
    pinMode(in2, OUTPUT);
    pinMode(in3, OUTPUT);
    pinMode(in4, OUTPUT);
}

void loop() {
    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);

    digitalWrite( in1, HIGH ); 
    digitalWrite( in2, LOW ); 
    digitalWrite( in3, LOW ); 
    digitalWrite( in4, HIGH );
    delay(dl);
}

Считываю с текстового документа в переменную tempSketch типа string информацию и пытаюсь передать командой

CommPortDriver1.SendString(tempSketch);

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

Пожалуйста подскажите, как решить проблему передачи скетча через Delphi в драйвер шагового двигателя?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

xucc пишет:

Пожалуйста подскажите, как решить проблему передачи скетча через Delphi в драйвер шагового двигателя?

Никак. Сначала скетч надо скомпилировать канпилятором С++.  Потом, уже сканпилированный,  загрузить загрущиком в память ардуино.  

Но.  В уже написанный, откомпилированный и загруженный скетч можно передавать ДАННЫЕ.  Через объект Serial.

https://www.arduino.cc/reference/en/language/functions/communication/ser...

sadman41
Offline
Зарегистрирован: 19.10.2016

Какова основная идея этой эквилибристики с передачей исходного текста через Serial?

xucc
Offline
Зарегистрирован: 03.12.2018

Хорошо. Выходит, GUI можно писать только на IDE под C++? На Delphi это сделать не получится?

Странно. Но ведь для мигания светодиодов достаточно каких-то примитивных команд.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

xucc пишет:

 На Delphi это сделать не получится?

Не получица.   Не компилирует Delphi для AVR процессоров.  А вот FreePascal для AVR есть. Но с ограничениями.

Воттута http://wiki.freepascal.org/AVR  написана, как его поставить

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Каких команд? Вам что-то приснилось, по-моему.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

sadman41 пишет:

Каких команд? Вам что-то приснилось, по-моему.

Человек вообще не вдупляет как процессоры работают, и что они разные есть.  Хорошо, если это не выпускник профильного ВУЗа. 

xucc
Offline
Зарегистрирован: 03.12.2018

DetSimen, sadman41, большое спасибо спасибо за ответы. 

Тему можно закрывать. Вектор поисков теперь мне почти ясен. Во всяком случае, на худой конец, можно и черeз Arduino IDE просто запускать скетчи.

xucc
Offline
Зарегистрирован: 03.12.2018

DetSimen пишет:

sadman41 пишет:

Каких команд? Вам что-то приснилось, по-моему.

Человек вообще не вдупляет как процессоры работают, и что они разные есть.  Хорошо, если это не выпускник профильного ВУЗа. 

Будьте спокойны, не выпускник профильного вуза :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

xucc пишет:

Во всяком случае, на худой конец, можно и черeз Arduino IDE просто запускать скетчи.

А можно поставить Visual Studio Community + Visual Micro.  И работать в нормальной IDE, с подсветкой, intellisence, и другими Delphi-подобными плюшками, а не в этом сраном убожестве (Arduino IDE), чуть интеллектуальнее блокнота. 

xucc
Offline
Зарегистрирован: 03.12.2018

Спасибо за подсказку! 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Выглядит примерно так 

b707
Offline
Зарегистрирован: 26.05.2017

xucc пишет:

Тему можно закрывать. Вектор поисков теперь мне почти ясен. Во всяком случае, на худой конец, можно и черeз Arduino IDE просто запускать скетчи.

xucc - не в обиду, но уверен, что вы ничего не поняли. Последняя фраза совершенно бредовая, потому что "черeз Arduino IDE просто запускать скетчи" нельзя. И главное, это совершенно не нужно. Управлять шаговым двигателем из программы на Дельфи проще простого. И "вектор поиска" ваш смотрит совсем не туда.

 

b707
Offline
Зарегистрирован: 26.05.2017

DedSimen sadman41 - коллеги, кончайте клиенту мозг рушить. Вы же отлично понимаете, что ему нужно совсем не это и АВР Студия ему в его задаче не поможет.

fogary
Offline
Зарегистрирован: 05.03.2016

Автор, передавайте в порт текстовые команды (типа протокол обмена), которые будут в ардуине разбираться и выполнять некие требуемые действия. GUI часть - на чем хотите.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707, я не рушу, я в самом начале еще писал

DetSimen пишет:

В уже написанный, откомпилированный и загруженный скетч можно передавать ДАННЫЕ.  Через объект Serial.

https://www.arduino.cc/reference/en/language/functions/communication/ser...

Но ТС думает, и спрашивал, как можно с помощью Delphi залить ТЕКСТ программы прямо в дуню. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Вот изначальный вопрос: 

xucc пишет:

Я пытался сделать это так: в некий txt документ писал код (копировал код из скетча). Например, этот:

int in1 = 2;
int in2 = 3;
.
.
.
    digitalWrite( in4, HIGH );
    delay(dl);
}

Считываю с текстового документа в переменную tempSketch типа string информацию и пытаюсь передать командой

CommPortDriver1.SendString(tempSketch);

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

Пожалуйста подскажите, как решить проблему передачи скетча через Delphi в драйвер шагового двигателя?

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

ТС спрашивал, как можно с помощью Delphi залить ТЕКСТ программы прямо в дуню. 

Он очевидно ничего не понимает в вопросе, поэтому и спрашивает глупость. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

Он очевидно ничего не понимает в вопросе, поэтому и спрашивает глупость. 

прям дубль моего сообщения #6

vvadim
Offline
Зарегистрирован: 23.05.2012

DetSimen пишет:

И работать в нормальной IDE, с подсветкой, intellisence, и другими Delphi-подобными плюшками, а не в этом сраном убожестве (Arduino IDE), чуть интеллектуальнее блокнота. 

99.999 % здесь обитающих вполне устраивает сраная убогая среда ардуино, без всяких плюшек и подсветок)))))

а писать что то на тёмном фоне тоже не всем в кайф...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

vvadim пишет:

 писать что то на тёмном фоне тоже не всем в кайф...

Привычка, со времен Борландовского ТurboС 3.1