Можно и так сделать.
Работоспособность не проверял.
Отправлено 17 Август 2013 - 00:23
Можно и так сделать.
Работоспособность не проверял.
Отправлено 17 Август 2013 - 21:17
посмотрел файлики... круто!
только не очень понятно, почему идет днем провал по свечению? а потом снова пик - это такая задумка?
Автор писал, что данные от балды
Отправлено 17 Август 2013 - 21:31
Помогите заставить вентилятор крутится
for (int i=0; i<360; i++){
Отправлено 18 Август 2013 - 00:30
Так и должно быть. В описании команды указанно что текст вращается относительно точки с координатами X, Y.
В твоем случае х=270, у=26. Поставь х. у в центр экрана.
Отправлено 18 Август 2013 - 15:42
Олег мне не нужно в центре экрана мне нужно в углу, и чтоб крутилась вокруг своей оси, оси z, а сейчас крутится вокруг оси х.
1) Вращение вокруг оси х
2) Вращение вокруг оси у
3) Вращение вокруг оси z
Соответсвенно, умножив вектор, то есть координаты точки на эти матрицы мы получим новые координаты точки.
v - координаты начальные; M - матрица вращения; V - новые координаты;
for (int i = 1; i<=3; i++)
{
for(int j = 1; j<=3; j++)
{
V[i]+=M[i][j] * v[j];
}
}
Результат:
V[1] новая координата по Х
V[2] новая координата по У
V[3] новая координата по Z
только я пока не могу понять как это сделать.
Отправлено 19 Август 2013 - 00:19
Пока до меня не доходит что ты хочешь получить.
У экрана две координаты х и у, откуда у тебя взялся Z???
Обьясни, что ты хочешь получить на экране в конечном результате, куда эта функция пойдет?
Отправлено 19 Август 2013 - 02:25
Пока до меня не доходит что ты хочешь получить.
У экрана две координаты х и у, откуда у тебя взялся Z???
Обьясни, что ты хочешь получить на экране в конечном результате, куда эта функция пойдет?
У Вадима в скетче есть отображение на главном экране вентилятора, так вот вентилятор крутится не вокруг своей оси по оси х, а от начало координат отображения на экране по оси х. А ось z это середина картинки, так сказать её центр. И изображение должно крутится вокруг своей оси.
Отправлено 19 Август 2013 - 11:05
А ось z это середина картинки, так сказать её центр. И изображение должно крутится вокруг своей оси.
А подпрограмма аналоговых часов со стрелками тебя не устроит, я так понимаю??
Отправлено 19 Август 2013 - 11:16
это я понял, но при вводе моих данных - на графике кривая идет с провалом в промежутке с 13 до 14...
наверное я чего-то не до конца понял
Проверил. Графики рисуют все четко с таблицы.
В таблице первый канал основной. Со второго по восьмой прописаны формулы зависимости от первого. Слева столбик с процентами. Это процентная зависимость от первого канала.
Формулы в первой таблице это для наглядности, можете поставить свои или вообще их убрать.
Отправлено 19 Август 2013 - 11:43
А подпрограмма аналоговых часов со стрелками тебя не устроит, я так понимаю??
Там линии рисуются, а не картинка. Не знаю но по моему не подойдет,
Отправлено 19 Август 2013 - 15:32
Ну не знаю. Экспериментируй.
Но не надейся на плавную перерисовку, это тебе не комп.
Отправлено 19 Август 2013 - 18:00
Получилось
for (int i=0; i<360; i++){
Отправлено 21 Август 2013 - 11:59
Так
for (int i=0; i<=360; i++){
Отправлено 21 Август 2013 - 12:13
Так
for (int i=0; i<=360; i++){
if (i == 360) i = 0;float x1, y1;y1 = 28 + (26 - 28) * cos(i) + (269 - 271) * sin(i);x1 = 271 + (269 - 271) * cos(i) - (26 - 28) * sin(i);myGLCD.print(F("#"),x1,y1); } // вентиляторКартинка вращается постоянно, но тогда сенсор не активен, нельзя перейти с главного экрана в меню, подскажите в чем подвох??????????????????
Потому что вы сделали бесконечный цикл.
Отправлено 21 Август 2013 - 12:18
Ну, а как надо сделать, чтоб постоянно вращалась картинка???????????????
Отправлено 21 Август 2013 - 12:39
Ну, а как надо сделать, чтоб постоянно вращалась картинка???????????????
Выносить этот код в void loop()
и в нем делать обработку сенсора.
Отправлено 21 Август 2013 - 12:55
Можно по подробнее, я не программист, поэтому не все сразу понимаю.
Отправлено 21 Август 2013 - 13:15
Можно по подробнее, я не программист, поэтому не все сразу понимаю.
В программах для ардуино есть основной цикл, это void loop()
В нем циклически делаются различные действия, как то к примеру, опрос датчиков, опрос получения новых данных от тача, изменения каналов света, в зависимости от времени.
То есть, код, который выполнился в loop, начинает выполняться снова с начала.
Если вы хотите, чтобы у вас была анимация, соответственно у вас есть два пути:
1) Либо вы делаете цикл рисования в loop, с обработкой всех остальных действий(тач, таймеры, и прочее)
2) либо переделываете свой код в процедуру, чтобы каждый запуск этой процедуры рисовал вашу стрелку уже на следующей позиции. И вызов данной процедуры вставляете в loop наравне с прочими процедурами(таймеры, леды, т.д)
0 пользователей, 1 гостей, 0 анонимных