лед матрица 8*8 и 3D джойстик.

Тема в разделе "Arduino & Shields", создана пользователем otis, 20 июн 2019.

  1. otis

    otis Гик

    Есль леонардо уно, тройка матрица8*8, 3Dджойстки(тоже тройка) тройка шилды и прочие. Как я понимаю на выходе у джойстика сигалы меняются от 0 до 1024 ( это то что читаем float .Положение покоя пока не трогаем)
    Мне нужно научиться управлять пикселом(или группой).
    Как я понимаю я должен считать уровень. И преобразовать в какой то код с скормить это матрице. Матрица нарисовала. Цикл повторися. Считаем-конвертируем-показывам.
    Ну если с картинкой(пиксем) это я освоил. Резисторы джойстика научился считывать. А вот с конвертацией не пойму. Как я вижу мне нужно float перевести в int. На ПР200 это я сделаю легко а в на ардуино застрял толкните в нужную сторону.
     
  2. NikitOS

    NikitOS Public enemy Администратор

    Это чо такое?
     
  3. NikitOS

    NikitOS Public enemy Администратор

    В центральном положении - 512
    0 - 1-я сторона, 1024 - 2-я сторона
    map? Он может 0-1024 преобразовать в 0-8
     
  4. otis

    otis Гик

    Через MAP я могу получить 0-4-8 для 1резистора. И 0-4-8 для второго. Так с. Это я понял. Но как это теперь заталкать в "пакет" для I2C и скармить это матрице?
     
  5. otis

    otis Гик

    Да китаец версия r3.
     
    Последнее редактирование: 20 июн 2019
  6. NikitOS

    NikitOS Public enemy Администратор

    Вам нужно просто зажечь один светодиод, в зависимости от положения джойстика?
    Тогда так:
    Код (Text):

    x = map(analogRead(A0), 0, 1023, 0, 8);
    y = map(analogRead(A0), 0, 1023, 0, 8);
     
    А потом передаете x и y координаты на матрицу и все :)
     
  7. otis

    otis Гик

    Вот что у меня получилось.
    Есть 8картинок Bitmap.
    Есть показания с переменного резистор.( (30-31-32-33-34-35-36-37)это точто выводит ардуина на монитор)
    Код (C++):
    x = map(analogRead(X), 0, 1023, 8);
    matrix.drawBitmap(pvo1)
    Как мне сделать что бы каждому положению резистора соответсвовала одна картинка.
    Примерно так: если сигнал от резистора равен 30 то рисуем картинку1. Проверяем резистор если равно 30 оставляем картинку ждем(nвремени) проверяем резистор если не 30 а 31 то стираем картинку 1 и рисуем картинку2.
     
  8. b707

    b707 Гуру

    Код (C++):
    if (resistor == 30)  {// вывести картинку 1}
    if (resistor == 31)  {// вывести картинку 2}
     
    и так далее

    но вообще, у меня такое впечатление, что даже в тех двух строчках кода. что вы процитировали в прошлом сообщении - вы ни черта не понимаете, так?
     
  9. otis

    otis Гик

    Спасибо. Со строкой где вы мне помогли мне удалось скормить эти данные в матрицу и я двигал 1пиксель по матрице.
    Теперь я убрал один резистор и добавили массив. Теперь у меня есть 8 картинок и 8положений резистора. Я хочу научиться управлять моим массивом по средствам переменного резистора. На ПР200 я бы взял сигнал с резистора разделил бы на 8 получил бы int константу. Потом делал бы сравнение и выводил бы это на экран. При этом я бы сделал это быстрее чем написал в форум. А тут я только делаю первые шаги. Так что извините.
     
  10. b707

    b707 Гуру

    с массивом так
    если у вас картинки лежат в массиве bitmaps[8]
    А резистор принимает 8 значений от 30 до 37 и задается переменной X

    то нужная картинка в зависимости от переменной X будет

    bitmaps[X-30]
     
  11. otis

    otis Гик

    Вот что у меня на пока получилось.
    До подключения кнопки и бузера пока долеко.Хочу понять как работает сравнение констаны и сигнала с резистором и вывод при равенстве нужного массива.
     

    Вложения:

  12. b707

    b707 Гуру

    если коротко - то очень плохо.
    Оно же даже компилироваться не будет
    Где массив битмапов? - его нет
    Что вы передаете функции drawbimap ? х-30 в квадратных скобках? - без массива эта запись полная чушь

    Я бы вам советовал пока отложить проект , сесть и прочитать какой-нить учебник по языку Си, решая примеры. Это займет у вас от месяца до трех - но уверяю Вас, если Вы этого не сделаете - быстрее не будет.
    В Вашем нынешнем коде правильно только то, что вы скопировали из инета. Все что вы пытаетесь писать сами - одна большая несуразица
     
    Daniil и DetSimen нравится это.
  13. otis

    otis Гик

    Спасибо за критику. Спасибо что занимаетесь мной. Всё что там я "насачинял" это то что я прочитал и понял из вики на сайте амперки. А по поводу примеров- проект это и есть мой учебный пример. Примерный план учёбы: 1)научить считывать int и bool.
    2) выводить int &bool на пин
    3)подключить матрицу
    4)вывод пикселя на матрицу
    5)вывод массива на матрицу
    6)понять работу random.
    7)понять работу по времени
    8)понять и совместить время рандом и матрицу.
    К восьмому уроку я должен уметь управлять массивом на матрице и видеть работу рандом(зажигание одиночного пикселя на определенное время)
    9)я считаю это самое сложное. Так как я работаю с матрицей то мне нужно знать значение рандома по Х и по У в int для сравнения на равно.
    Как только я это все пойму можно будет и сделать мини игру что и будет финалом. Но я думаю что между финалом и 9 уроком будет ещё столькоже .