джойстик ардуино в нейтрали выдает слабый сигнал

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем olegator, 10 дек 2018.

  1. DetSimen

    DetSimen Guest

    тоись, процесс помощи на форумах ты представляешь так: Надо зайти на форум, запостить первое же, что сформулировалось в пустой голове, типа:

    Памагити.jpg

    И не представив ни схему, ни внятного описания задачи, что ты делаешь и что хочешь получить, ждать умных дяденек-телепатов, которые, потратив некоторое количество своего времени, расскажут Иванушке дурачку, что он на самом деле хочет и как ему это сделать?
    А, ну да, не забыть еще погордиться тем, что "Больше ни чего не знаю". А кто за тебя знать то будет? Ты читать не умеешь, или что? Или тебе найти, прочитать вслух и разжевать надо? Дак тут форум по интересам, а не школа коррекционного развития. По твоим входным данным, что ты предоставил --> Гуголь подскажет.
     
    Последнее редактирование модератором: 12 дек 2018
    parovoZZ нравится это.
  2. olegator

    olegator Нерд

    если б гуголь как ты говоришь подсказал....так я не зашел бы сюда . а, я по моему все обьяснил , на счет того, что мне надо. Повторюсь для одаренных. МНЕ НАДО, знать как делать так, что-б джойстик, в неитральном положении выдавал 0 вольт. а при его движении наращивал вольтаж до5 вольт. мотор будет вращаться по проводам. вся система по проводам работать будет. но это не важно. мне надо тот кусочек кода где центруется джойстик.
     
  3. DetSimen

    DetSimen Guest

    ну тогда для ОСОБО одаренных: пойми, что в среднем положении, джойстик 0 не даст ни при каких условиях. А что он даст, почитай вот здесь, из гугла:
    https://arduinoplus.ru/arduino-joystick/
     
    Последнее редактирование модератором: 12 дек 2018
  4. parovoZZ

    parovoZZ Гуру

    ну по что влез?
    устройство джойстика представляешь?
     
  5. DetSimen

    DetSimen Guest

    из той статьи, ссылку на которую я тебе дал, вдруг не заметишь, малаличо:

    Этот модуль производит на выходе около 2,5 В от X и Y, когда он находится в положение покоя. Перемещение джойстика приведет к изменению выходного сигнала от 0 В до 5 В в зависимости от его направления. Если вы подключите этот модуль к микроконтроллеру, вы можете ожидать, что значение будет около 512 в положении покоя.
     
  6. Belkin

    Belkin Гик

    Это как раз важно... ;)
    Тесла свои разработки по беспроводной передаче энергии не раскрыл... ;)
    Джойстик "кусочком кода" не центрируется.

    Напоминает это:
    - Кто может починить рацию на танке ?
    - А рация на транзисторах или на лампах ?
    - Для тупых разъясняю - рация на танке !
     
  7. parovoZZ

    parovoZZ Гуру

    а были ли они вообще?
     
  8. Belkin

    Belkin Гик

    Эо тоже достоверно известно только ему...
     
  9. parovoZZ

    parovoZZ Гуру

    задача очень просто решается в дифференциальном режиме работы мультиплексора и биполярном режиме работы АЦП.
     
  10. DetSimen

    DetSimen Guest

    Ты это ТС-у не говори тока, а то его кондрашка хватит от таких слов.
     
  11. olegator

    olegator Нерд

    да
     
  12. olegator

    olegator Нерд

    //управление светодиодами, с помощью джойстика
    #define pinX A2 // ось X джойстика
    #define pinY A1 // ось Y джойстика
    #define swPin 2 // кнопка джойстика
    #define ledPin 13 // светодиод на Pin 13
    #define ledX 5 // светодиод на Pin 5
    #define ledY 6 // светодиод на Pin 6
    void setup() {
    pinMode(ledX, OUTPUT);
    pinMode(ledY, OUTPUT);
    pinMode(ledPin, OUTPUT);
    pinMode(pinX, INPUT);
    pinMode(pinY, INPUT);
    pinMode(swPin, INPUT);
    digitalWrite(swPin, HIGH);
    }
    void loop() {
    boolean ledState = digitalRead(swPin); // считываем состояние кнопки
    digitalWrite(ledPin, ledState); // вкл./выкл. светодиод
    int X = analogRead(pinX); // считываем значение оси Х
    int Y = analogRead(pinY); // считываем значение оси Y
    X = map(X, 0, 1023, 0, 255); // преобразуем значение X в другой диапазон
    Y = map(Y, 0, 1023, 0, 255); // преобразуем значение Y в другой диапазон
    analogWrite(ledX, X); // включаем светодиоды с разной яркостью
    analogWrite(ledY, Y);
    }
    вот этот скетч. который я хочу поправить.
     
  13. parovoZZ

    parovoZZ Гуру

    В этой операции нет никакого смысла, потому что 8 бит можно считывать сразу с АЦП без лишних преобразований .
     
  14. ostrov

    ostrov Гуру

    Вот тут не понял.
     
  15. DetSimen

    DetSimen Guest

    датвоюжтымать. ты зарегистрировался год назад и не знаешь, что код принято вставлять правильно?
    иначе ответ будет: ошибка в ХЗ какой строке.
     
  16. parovoZZ

    parovoZZ Гуру

    Результат преобразования АЦП кладет в регистровую пару ADCH + ADCL.Порядок того, где окажутся старшие и младшие биты задается битом ADLAR. При ADLAR = 1 в ADCH будут лежать старшие 8 бит. Если в дальнейшем нам нужны только 8 бит, то нет никакого смысла читать младшие 2 бита - они только будут занимать лишнюю память и отнимать процессорное время.
     
    Последнее редактирование: 13 дек 2018
  17. ostrov

    ostrov Гуру

    Это проще, чем Y=Y/4?
     
  18. DetSimen

    DetSimen Guest

    это даже проще чем Y>>=2;
    в младшем байте зачастую все равно находятся шумы да флюктуацеи
     
  19. parovoZZ

    parovoZZ Гуру

    Да, так как мы сразу в переменной имеем 8 бит. Зачем цеплять ещё 2 бита, чтобы потом их сдвигом убрать (АЛУ AVR делить не умеет)? К чему лишние операции?
     
  20. ostrov

    ostrov Гуру

    Как это не умеет? Сдвинули вправо два раза - поделили на 4. То есть заменить anslogRead и деление на чтение из регистра с откидыванием значений меньше 4 проще для начинающего?