Ореховый
Вт 26 июля 2016 г. 16:42
Так что вот вещь. Я делаю проект Speedo Lauge для развлечения, чтобы надеть свой велосипед.
И на этом этапе я просто получаю некоторые базовые управления двигателями и обновления светодиодов, прежде чем я приступил к рассчитанию чтения MPH и RPM.
Я изменил шаг.h Библиотека, чтобы разделить другой код провода и исправить его шаговую последовательность, которая была просто неправильной...
Эта сторона вещей, кажется, работает нормально. Его используемый код на самом деле нетронут, кроме последовательности.
Теперь проблема с моим светодиодным массивом.
Где раньше на UNO массив обновился бы хорошо, а двигатель будет работать на полной скорости. У меня есть обновление массива светодиодов между каждым шагом MPH (23 или около того моторных шагов...)
Может ли кто -нибудь взглянуть на этот код и сказать мне, почему он так медленно работает? Основная причина, по которой я использую клен, заключается в том, что его 75 МГц. Он должен быть быстрее, чем ООН, должен быть в состоянии сделать больше... И я читаю даже несколько основных многочисленных многопоточных потоков...
Что полезно, поскольку он будет вычислять MPH и RPM и отобразить эти данные о светодиодах моторизованных циферблат и на ЖК -дисплее: P
Кстати, я кодирую с платформы и строительство и загрузку из Arduino IDE, не могу загружать и создавать форму платформы
Также я извиняюсь за мои соглашения об именах, и есть много прокомментированного кода, в то время как я пытался найти причину замедления.
Функция, в которой, кажется, не работает с надлежащей скоростью, - это перемещение, и замедляется, когда я запускаю Call UpdateMphled...
Я никогда не претендовал на кодирующий гений. Я художник по графике по торговле. Но если кто -то может помочь мне, пожалуйста, дайте мне знать, как это исправить.
Это действительно просто флаг или настройка, мне нужно применить к STM? Что -то, чтобы позвонить, чтобы заставить его запустить полную скорость?
И на этом этапе я просто получаю некоторые базовые управления двигателями и обновления светодиодов, прежде чем я приступил к рассчитанию чтения MPH и RPM.
Я изменил шаг.h Библиотека, чтобы разделить другой код провода и исправить его шаговую последовательность, которая была просто неправильной...
Эта сторона вещей, кажется, работает нормально. Его используемый код на самом деле нетронут, кроме последовательности.
Теперь проблема с моим светодиодным массивом.
Где раньше на UNO массив обновился бы хорошо, а двигатель будет работать на полной скорости. У меня есть обновление массива светодиодов между каждым шагом MPH (23 или около того моторных шагов...)
Может ли кто -нибудь взглянуть на этот код и сказать мне, почему он так медленно работает? Основная причина, по которой я использую клен, заключается в том, что его 75 МГц. Он должен быть быстрее, чем ООН, должен быть в состоянии сделать больше... И я читаю даже несколько основных многочисленных многопоточных потоков...
Что полезно, поскольку он будет вычислять MPH и RPM и отобразить эти данные о светодиодах моторизованных циферблат и на ЖК -дисплее: P
Кстати, я кодирую с платформы и строительство и загрузку из Arduino IDE, не могу загружать и создавать форму платформы
Также я извиняюсь за мои соглашения об именах, и есть много прокомментированного кода, в то время как я пытался найти причину замедления.
Функция, в которой, кажется, не работает с надлежащей скоростью, - это перемещение, и замедляется, когда я запускаю Call UpdateMphled...
Я никогда не претендовал на кодирующий гений. Я художник по графике по торговле. Но если кто -то может помочь мне, пожалуйста, дайте мне знать, как это исправить.
Это действительно просто флаг или настройка, мне нужно применить к STM? Что -то, чтобы позвонить, чтобы заставить его запустить полную скорость?
#include
#include
#include
#include
#include
#define ledPin 3
#define numLeds 24
// Define the array of leds
CRGB led_array[numLeds];
LiquidCrystal_I2C lcd(0x3F, 20, 4);
const int HomeBTN = 13; /// pin connected to button
int MPH = 0; // to be replaced by a MPH calculator in loop connected to bike
int OldMPH = 0;
int differ = 0;
// The step angle is 5.625/64 and the
// operating Frequency is 100pps. Current draw is 92mA.
////////////////////////////////////////////////
//4096
// 2.25 deg per MPH, 5.625/64 = 0.0879, 2.25/0.0879 = 25.6 steps per mph
///////////////////////////////////////////////////////////////////////////////
/////// Stepper Settings /////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
#define StepsPerRev 2080 //2080 seems to be cloest non float figure //37.9 //88641975 /// 2037.88641975 /// 2048 /// 4075.7728395
#define mphRange 80 // dial range for MPH
#define StepsPerMPH ((StepsPerRev) / 2 / (mphRange)) //13
#define speed 15 //500 at 5v 700-750 at 9v some skipping 850 at 12v but too hot i think
//////////Stepper Call
newStepper mph_stepper(StepsPerRev, 8, 9, 10, 11); /// 64 steps per motor 360 (not geared rev)
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
void updateMPHled (int cMPH)
{
int light = ((numLeds + .0f) / (mphRange + .0f) * cMPH); // (numLeds / mphRange * cMPH);
//Serial.print("Blah " + String(light));
//Serial.println();
for (int led = 0; led < numLeds; led++)
{
int cVal = 0;
if (led <= light)
{
cVal = 5;
}
led_array[led].setRGB(cVal,cVal,cVal);
FastLED.show();
}
}
//////////////////////////////////////////////////////////////////////////////
void moveMPH(int inMPH) ///function to move motor to the mph detected and displays information on the screen
{
// MPH = inMPH;
//lcd.clear();
//lcd.setCursor(0, 0);
//lcd.print (String("MPH= ") + inMPH);
//lcd.setCursor(0, 1);
//lcd.print (String("Old MPH= ") + OldMPH);
//lcd.setCursor(0, 2);
//lcd.print (String("Difference= ") + (inMPH - OldMPH));
//Serial.print(OldMPH - inMPH);
//Serial.println();
/// will need changing for interrupted calls for faster mph updating. Will need a seporate var holding current mph or step count possision
if (OldMPH < inMPH)
{
for (int i = 0; i < (inMPH - OldMPH); i++)
{
mph_stepper.step(-StepsPerMPH);
updateMPHled((inMPH)); // StepsPerMPH) + (OldMPH / StepsPerMPH) );
}
}
else
{
for (int i = 0; i < (OldMPH - inMPH); i++)
{
mph_stepper.step(StepsPerMPH);
updateMPHled((inMPH)); // StepsPerMPH) + (OldMPH / StepsPerMPH) );
}
}
OldMPH = inMPH;
}
/////////////////////////////////////////////////////////////////////////
void ZeroHome()
{
while (digitalRead(HomeBTN)== HIGH)
{
mph_stepper.step(11);
}
OldMPH = 0;
}
////////////////////////////////////////////////////////////////////////
void setup()
{
mph_stepper.setSpeed(speed);
FastLED.addLeds(led_array,numLeds);
pinMode(HomeBTN, INPUT_PULLUP);
//Serial.begin(9600); /// for serial feedback
/// setting up LCD during testing
//lcd.begin ();
//lcd.backlight();
//lcd.clear();
/// Current starting demo/homing code, to be replaced with reed detection at 0 and led demos.
ZeroHome();
//for (int i = 0; i < (mphRange / 10) + 1; i++)
//{
// moveMPH(i * 10);
// //delay(200);
//}
//delay(1000);
//for (int i = (mphRange / 10) ; i >= 1; i--)
//{
// moveMPH(i * 10);
// //delay(200);
//}
// ZeroHome();
// delay(1000);
}
//////////////////////////////////////////////////////////////////////////////
void loop() {
//lcd.setCursor(0, 3);
//lcd.print (String(digitalRead(HomeBTN)));
//MPH = random(0, mphRange + 1); // to be replaced by code that calculates MPH
// if (MPH < 0)
// {
// ZeroHome();
// }
// else
// {
// moveMPH(MPH);
// }
moveMPH(0);
delay(100);
moveMPH(80);
delay(100);
}
Ореховый
Вторник 26 июля 2016 г., 17:35
На самом деле я думаю, это быстро светодиодная библиотека...
Стивестронг
Вторник 26 июля 2016 г. 18:05
Я не думаю, что какая -либо из ступени и быстро светодиодной библиотеки была еще протестирована/перенесена в STM32Duino, так что сейчас ваша работа - тестировать и отлаживать
Эдогальдо
Вт 26 июля 2016 г. 18:44
Черная писала:На самом деле я думаю, это быстро светодиодная библиотека...
Мадиас
Вторник 26 июля 2016 г. 18:50
«Фаст» - это действительно монстр библиотеки. Желаю удачи узнать это....
Но: если он управляется SPI, я почти уверен, что это как -то связано с неверным разделителем часов.
Кандидат: https: // github.com/fastled/быстро/дерево ... /arm/stm32 (Я не могу получить доступ к GitHub в данный момент, я вижу только розовый (только розовый (!) злой(!) единорог.....Wuahaa..)
Вы должны сравнить каждый отдельный код (модуль) с вашим ООН, чтобы узнать «замедленную часть».
Но: если он управляется SPI, я почти уверен, что это как -то связано с неверным разделителем часов.
Кандидат: https: // github.com/fastled/быстро/дерево ... /arm/stm32 (Я не могу получить доступ к GitHub в данный момент, я вижу только розовый (только розовый (!) злой(!) единорог.....Wuahaa..)
Вы должны сравнить каждый отдельный код (модуль) с вашим ООН, чтобы узнать «замедленную часть».
Ореховый
Вт 26 июля 2016 г. 18:51
Мотор 5V работает с адаптера 6 В, который проходит через ULN2003APC... Это многоадаптер на базе автомобиля, который выходит из запасного 12 В: p Im в настоящее время не хватает денег, так что не покупать новый адаптер.
Не волнуйтесь, его изолированная форма Maple Mini напряжение.
Ох, а что касается отладчика.... Лол, я действительно не так хорош. До этого моим опытом кодирования была VBA: P
Я также не знаю C ++, что хорошо tbh. Я могу разрабатывать вещи и Google каждый вызов и функция C ++, но некоторые из основных синтаксисов действительно теряются на мне. Например, я все еще не могу понять, что за это-> является... Даже когда я гуглю об этом и читаю объяснения, я все еще не понимаю.
Так что да, писать мою собственную библиотеку светодиодного контроллера, довольно не так.
Не волнуйтесь, его изолированная форма Maple Mini напряжение.
Ох, а что касается отладчика.... Лол, я действительно не так хорош. До этого моим опытом кодирования была VBA: P
Я также не знаю C ++, что хорошо tbh. Я могу разрабатывать вещи и Google каждый вызов и функция C ++, но некоторые из основных синтаксисов действительно теряются на мне. Например, я все еще не могу понять, что за это-> является... Даже когда я гуглю об этом и читаю объяснения, я все еще не понимаю.
Так что да, писать мою собственную библиотеку светодиодного контроллера, довольно не так.
Ореховый
Вт 26 июля 2016 г., 19:00
Мадиас написал:«Фаст» - это действительно монстр библиотеки. Желаю удачи узнать это....
Но: если он управляется SPI, я почти уверен, что это как -то связано с неверным разделителем часов.
Кандидат: https: // github.com/fastled/быстро/дерево ... /arm/stm32 (Я не могу получить доступ к GitHub в данный момент, я вижу только розовый (только розовый (!) злой(!) единорог.....Wuahaa..)
Вы должны сравнить каждый отдельный код (модуль) с вашим ООН, чтобы узнать «замедленную часть».
Но: если он управляется SPI, я почти уверен, что это как -то связано с неверным разделителем часов.
Кандидат: https: // github.com/fastled/быстро/дерево ... /arm/stm32 (Я не могу получить доступ к GitHub в данный момент, я вижу только розовый (только розовый (!) злой(!) единорог.....Wuahaa..)
Вы должны сравнить каждый отдельный код (модуль) с вашим ООН, чтобы узнать «замедленную часть».
Мадиас
Вт 26 июля 2016 г., 19:01
Вы можете просто искать альтернативную библиотеку. Есть много неопиксельных (он же WS2812) библиотеки там. (Я думаю, что я успешно использовал библиотеку Neo-Pixel Adafruit, но я не могу вспомнить).
Просто для одного теста:
Не могли бы вы подключить USB к вашему проекту и просто держать серийный монитор открытым? (USB -сериал замедляет всю систему при особых обстоятельствах, в основном забытым сериалом.Печать ») Если это намного быстрее, найдите каждый сериал.xxx даже в библиотеках.
Просто для одного теста:
Не могли бы вы подключить USB к вашему проекту и просто держать серийный монитор открытым? (USB -сериал замедляет всю систему при особых обстоятельствах, в основном забытым сериалом.Печать ») Если это намного быстрее, найдите каждый сериал.xxx даже в библиотеках.
Мадиас
Вт 26 июля 2016 г., 19:04
SPI.SetClockDivider (DierVervalue)
DierViderue может быть:
DierViderue может быть:
SPI_CLOCK_DIV2
SPI_CLOCK_DIV4
SPI_CLOCK_DIV8
SPI_CLOCK_DIV16
SPI_CLOCK_DIV32
SPI_CLOCK_DIV64
SPI_CLOCK_DIV128
SPI_CLOCK_DIV256
Ореховый
Вторник 26 июля 2016 г. 22:46
Хм, я получаю SPI, не был объявлен в этой ошибке области... Это INA -специфическая библиотека?
Игнорировать, что нашел библиотеку... и это не имеет никакого значения... Я думаю, что я должен попробовать другую библиотеку
Игнорировать, что нашел библиотеку... и это не имеет никакого значения... Я думаю, что я должен попробовать другую библиотеку
Zoomx
Ср. 27 июля 2016 г. 6:15
Черная писала:Хм, я получаю SPI, не был объявлен в этой ошибке области... Это INA -специфическая библиотека?
Мадиас
Ср. 27 июля 2016 г., 7:49
Как я писал: вы должны искать в библиотеках для каждого, связанного с «SPI», а не в эскизе.
У библиотеки Fastwire есть дополнительная часть кода STM32, но я уверен, что она была написана не для STM32Duino, а MBED или что -то в этом роде. Мне просто интересно, что библиотека компилирует. Может быть, в режиме Soft SPI - вы должны посмотреть на многословный выход IDE, если есть какие -либо «предупреждающие» сообщения.
У библиотеки Fastwire есть дополнительная часть кода STM32, но я уверен, что она была написана не для STM32Duino, а MBED или что -то в этом роде. Мне просто интересно, что библиотека компилирует. Может быть, в режиме Soft SPI - вы должны посмотреть на многословный выход IDE, если есть какие -либо «предупреждающие» сообщения.
cat_enabler
Вт 17 апреля 2018 г. 14:28
@Nutsy, просто хотел сказать, что я испытываю ту же проблему с медленной анимацией светодиодов. Я вижу, что вы используете неопиксели, которые представляют собой светодиодный чипсет без часов. Если я запускаю часовой светодиодный чипсет, такой как APA102 (DotStar), то анимация работает на правильной скорости. При вождении неопикселей тот же код анимации будет работать на половину быстрого на Maple Mini, как и на Uno. Будет держать вас в курсе, если я найду решение.