Страница 1 из 1

Управление шаговым двигателем от клавиатуры

Добавлено: 03 апр 2019, 17:22
саня
Здравствуйте. Есть задача. Вводим с клавиатуры число, которое отображается на дисплее. жмем пуск и шаговик отрабатывает заданное число шагов (оборотов).
Нашел такой вот совет.

считываем знаки с клавиатуры в массив до ввода символа конца ввода, преобразуем char в числа, поразрядно складываем и выполняем управление двигателем.

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

Re: Управление шаговым двигателем от клавиатуры

Добавлено: 03 апр 2019, 17:46
Эдуард
Здравствуйте!
Я думаю, надо делать в такой последовательности.
Подключите дисплей и клавиатуру.
Все, что набираете на клавиатуре выводите на дисплее.
Затем анализируйте символ ВВОД и переводите на дисплее строку.
Дальше заведите текстовый массив и записывайте в него то, что вводится с клавиатуры до символа ввода.
Преобразуйте строку символов в число.
Используйте это число, чтобы задавать число шагов.
По пуску отрабатывайте вращение шагового двигателя.

Re: Управление шаговым двигателем от клавиатуры

Добавлено: 04 апр 2019, 10:54
саня
Затем анализируйте символ ВВОД и переводите на дисплее строку.
Дальше заведите текстовый массив и записывайте в него то, что вводится с клавиатуры до символа ввода.
Преобразуйте строку символов в число.
Используйте это число, чтобы задавать число шагов.
По пуску отрабатывайте вращение шагового двигателя.


Вот с этим проблема. Мне бы хотя бы рабочий кусок кода подобного найти.

Re: Управление шаговым двигателем от клавиатуры

Добавлено: 04 апр 2019, 10:56
саня
По поводу записи с клавиатуры в переменную char есть вот такой код. Подскажите если можете он может быть использован?

void loop()
{
for (int i = 1; i <= 4; i++) // цикл, передающий 1 по всем столбцам
{
digitalWrite(colPins[i - 1], HIGH); // если i меньше 4 , то отправляем 1 на ножку
for (int j = 1; j <= 4; j++) // цикл, принимающих 1 по строкам
{
if (digitalRead(int[j - 1]) == HIGH) // если один из указанных портов входа равен 1, то...
{
time = millis();
}
if (digitalRead(rowPins[j - 1]) == HIGH && a == 0) // если один из указанных портов входа равен 1 и переменная "а" равна 0, то...
{
lcd.clear(); //очищаем экран lcd
if(b < 16) // тут бы надо заменить 15 на размер массива-1 (можно объявить #define SIZE)
{
chislo[b] = value[i - 1][j - 1]; // вводим в переменную "chislo" символы с клавиатуры
chislo[b+1] = 0x00; // тогда не нfдо дополнительного b++
b++;
}
else
{
for(b=1; b<16;b++) // а тут 14 на размер массива-2
chislo[b-1] = chislo[b];
chislo[b-1] = value[i - 1][j - 1];
b++; // чтоб она снова равнялась 15
}
lcd.print(chislo); // выводим на экран lcd данные переменной "chislo"
a = 1; //переменной "а" присваиваем 1
}
if (digitalRead(rowPins[j - 1]) == LOW && a == 1 && millis() - time >= 10) //если кнопка отпущена, переменная "а" равна 1 и прошло 100 мсек, то...
{
a = 0; //переменной "а" возвращаем 0
}
}
digitalWrite(colPins[i - 1], LOW); // подаём обратно низкий уровень
}
}

Re: Управление шаговым двигателем от клавиатуры

Добавлено: 04 апр 2019, 17:18
Эдуард
А какая у вас клавиатура?

Re: Управление шаговым двигателем от клавиатуры

Добавлено: 06 апр 2019, 08:32
саня
клавиатура матричная. 4*4. Скажите, Эдуард, вы бы могли взяться за написание кода (небесплатно конечно), если я дам тех. задание?

Re: Управление шаговым двигателем от клавиатуры

Добавлено: 06 апр 2019, 10:24
Эдуард
Здравствуйте!
Напишите ТЗ.