никаких подвохов, а банально почти ничего не учитывается. что там действительно на выходе черного ящичка "ардуина", иногда можно и не учитывать, может даже и в этом случае. а вот с чёрным ящичком "серва" уже не получится - это не какие-то супер-пупер эталонно-откалибрование устройства, у них схемы, номиналы и механика могут очень сильно отличаться даже не от "подвала" к "подвалу" или от партии к партии, а в одной партии у одного клепальщика. ладно, +- лапоть все параметры в нужном диапазоне. на скорость ещё влияет нагрузка (эт так, на будущее). остаётся самое весёлое - какой ток и напряжение от источника питания доходит (всякие забавные моментики с проводочками, стабилизаторами и прочими интересностями) до мотора? намекаю, что скорость вращения моторчика каким-то волшебным образом связана и с напряжением.
Осенило! (месяц назад читал - выпало из башки). Строка - delayMicroseconds(20000-tabl[x]);//длительность паузы - скорей всего некорректно выполняется. Ограничение на длительность около 16000 микросекунд, а в примерах интернета шпарят все по 20000.. вот я и не подумал...Надо будет исправить и перепроверить.
Добавлено спустя 2 минуты 16 секунд: Разобью команду на две подряд по "10000 с минусом и без".
Действительно, так и оказалось. Скетч изменил - теперь всё работает по теории. Внешний вид табло подправил, можно использовать и в образовании, и в медицине (смотря во что играем - в "больничку" у окулиста или в "школа - первый класс" ) .
Код:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Arduino UNO // //////////////////////// // //программа для управления алфавитом - исправленная // int tabl[12]={540,1410,1355,1795,2130,1960,1245,540,2015,1355,1190,2070}; //ПРИВЕТ ДРУГ int x=0; int i=1;//счётчик, max значение определяет длительность удержания угла поворота void setup() { pinMode(7,OUTPUT);//управляющий канал сервопривода digitalWrite(7,LOW); }
void loop() { x=x+1;//переход с буквы на букву if(x>=12){x=0;}//условие повтора фразы for (i=1;i<=75;i++) { digitalWrite(7, HIGH); delayMicroseconds(tabl[x]);//длительность импульса digitalWrite(7, LOW); delayMicroseconds(10000-tabl[x]);//длительность паузы из 2 частей delayMicroseconds(10000); }
} // // Конец / // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Дальше решил попробовать матрицу светодиодную 8 на 8 с max7219. Понимаю, без библиотеки ledcontrol.h никак.Скачивал пару раз и пробовал ставить внутри Arduino IDE - пишет в папке нет библиотеки...Что может быть?
Не, я так быстро не могу...это ещё одна библиотека и её функции.В голове "каша" получится. Загрузил библиотеку для светодиодной матрицы, записал на бумажку функции, думаю день, два буду сердечко на ней мучить (или смайлик).
Попробовал матрицу с библиотекой на примере простой анимации сердечка - рисуем его, оно пульсирует, угасая. Регулировка яркости не вразумительная, визуально слабо меняется почему-то, хотя 16 ступеней.Картинку удобно забивать в массив... Вообщем "библиотека мне понятна". Скетч:
Код:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Arduino UNO // //////////////////////// // //программа для светодиодной матрицы 8*8 и max7219 //
#include "LedControl.h"//подключаем данную библиотеку int i=0;int j=0; int tabl[8][8]={0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 1,0,0,1,1,0,0,1, 1,0,0,0,0,0,0,1, 0,1,0,0,0,0,1,0, 0,0,1,0,0,1,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0};// храним картинку в массиве
LedControl LC = LedControl(12, 11, 10, 1);// создаём объект класса для 1 индикатора // при этом выводы 12-DIN 11-CLKC 10-CS //
void setup() { LC.shutdown(0, false);//выключаем энергосберегающий режим LC.setIntensity(0, 12);// устанавливаем интенсивность в 12 единиц между 0 и 15 LC.clearDisplay(0);//очищаем дисплей }
void loop() { LC.setIntensity(0, 12); for (j=0;j<=7;j++)//цикл в цикле для перебора элементов массива { for (i=0;i<=7;i++) { LC.setLed(0, i, j, true);//последовательное включение каждого светодиода матрицы delay(150); LC.setLed(0, i, j, tabl[i][j]);//включение,оставление включёнными только светодиодов контура картинки } } delay(1000); for (j=6;j>=0;j=j-6)//цикл биения сердца - переключение изображения картинки { LC.shutdown(0, true); delay(300); LC.shutdown(0, false); LC.setIntensity(0, j);// угасание сердца delay(1000); } LC.clearDisplay(0);
} // // Конец / // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Решил ещё поэкспериментировать с сервоприводами. Нашёл на алиэкспресс по 57 рублей. Но нет почти никакой тех. информации. Кто нибудь работал с ними? Почему такая доступность ценовая?
Нарисовал на схеме простенькой конструкции для публикации сервопривод вот так. И получил втыкон - мол мог бы (и должен) нарисовать по УГО. Вопрос - как правильно обозначаются сервоприводы на принципиальных наших (русских)схемах?
Добавлено спустя 33 минуты 49 секунд: Да и вообще...Где можно найти графические редакторы?, что бы рисовать правильно (картинка ниже)по сравнению как рисую я ( средняя картинка) - неправильно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения