Электронный сейф (не работает)

Тема в разделе "Arduino & Shields", создана пользователем Беспалов Олег, 29 фев 2016.

  1. ostrov

    ostrov Гуру

    Например так, для разброса +- 10:
    Код (C++):
    if ((userCode[i] <= passCode[i]+10) and (userCode[i] >= passCode[i])-10)verifyCode++;
     
  2. Вот спасибо, а я еще боялся на форуме писать. Столько узнал.
     
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    смысла нет. Исходный диапазон 0...1023 разделен на 10 частей, т.е. на каждый сегмент потенциометра приходится диапазон в 102 единицы - значит это +-51 единица в каждую сторону - что с большим запасом перекрывает любую температурную погрешность.

    А вот для более точных измерений, когда надо уложиться в весь диапазон 0...1023, ваш способ подходит.
     
  4. Limoney

    Limoney Гик

    В принципе можно было использовать потенциометр, но с точным чтением
    значений будут трудности. Точность поворота, изменение температуры, влияние наводок.
    Нужно вводить поправочный коэффициент.
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    зачеееем?
    Исходная шкала в 1024 измерения ужимается до шкалы 0...10, при этом все колебания (а они небольшие) пропорционально ужимаются на порядок, до десятых, которые отбрасываются, т.е. практически не влияют на результат.
    Untitled-1.png
    Повернули ручку на отметку "2" (для analogRead в идеальном случае это равно 256), чуть промахнулись, получилось 276, плюс в комнате холодно, еще уплыли на +12, получается 288, делим целочисленно на 102, получаем стабильно двойку.
     
    ostrov, Limoney и Беспалов Олег нравится это.
  6. Limoney

    Limoney Гик

    Спасибо, за шикарную картинку.
    И этот способ тоже будет прекрасно работать при прекрасном коде.
     
  7. Tomasina

    Tomasina Сушитель лампочек Модератор

    имеете в виду ситуацию, когда ручка между цифрами 2 и 3? Да, там возможны прыжки и, если нужна высокая точность, то надо использовать не целочисленное деление, а округление или коэффициенты. Но здесь это некритично - ведь по сюжету надо ручку наводить на цифру, для чего разброса +-51 хватает с избытком. :cool:
     
  8. Limoney

    Limoney Гик

    Уважаема, Tomasina! Я вас понял.:cool: И вовсе не думал шутить. Как это могло показаться.
    Картинка мне реально понравилась!!!;)
     
  9. Tomasina

    Tomasina Сушитель лампочек Модератор

    [​IMG]
     
    Беспалов Олег и Limoney нравится это.
  10. Limoney

    Limoney Гик

    Спасибо, за дружбу
    [​IMG]
     
  11. ostrov

    ostrov Гуру

    А еще я бы сделал без кнопки. Повернул ручку в нужное положение, подождал заданное время (например секунду), повернул в следующее. Можно даже сделать подтверждение ввода цифры подмигиванием светодиода или попискиванием зуммера.

    Почитал программку, для вас еще проще. Повернул, подождал первый светодиод, потом второй и так далее. Если все совпало, после третьего откроется, если нет, то сбросится.
     
    Беспалов Олег нравится это.
  12. Может быть, но я пока и так не могу заставить работать, пытаюсь найти свою ошибку и не могу. На этой неделе думаю сходить к преподавателю может поможет.
     
  13. ostrov

    ostrov Гуру

    А что конкретно не работает после всех подсказок и советов?
     
  14. Все, вроде разобрался. Перенес назначение переменных с потенциометра к макроопределениям. По всей видимости когда закрывался сейф, программа поновой назначала переменные и они все были равны нулю. Кстати, шкалу потенциометра разделил на пять делений, потому как очень сложно на глаз определять нужное значение. Спасибо всем.