Перейти к содержанию
    

STM32 нужна помощь с кнопками

2 minutes ago, quark said:

"вверх"  -   3кОм

 "i/set"   -   1кОм

"вниз"    -   0кОм

Так? Или в обратном порядке?

Законы Ома и Киргофа от этого не зависят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 минуты назад, MaximDV сказал:

47к от 5в на вход ацп, а так же 3.3в. Нет явного различия в показаниях, мусор какой то

47 кОм перебор, 10 кОм максимум, а лучше 1 кОм.

Если датчик подключён правильно, но на показания АЦП не влияет, то логично, что не он виноват, а программа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С языка сняли! Но именно в такой последовательности и было.

1 минуту назад, Plain сказал:

47 кОм перебор, 10 кОм максимум, а лучше 1 кОм.

Если датчик подключён правильно, но на показания АЦП не влияет, то логично, что не он виноват, а программа.

А что много кода надо чтоб увидеть что принимает АЦП? В ячейке есть показание но они не отличаются радикально. Похоже на мусор, постоянно изменяется даже в покое. Может конечно из за 47к. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, MaximDV said:

С языка сняли! Но именно в такой последовательности и было.

А что много кода надо чтоб увидеть что принимает АЦП? В ячейке есть показание но они не отличаются радикально. Похоже на мусор, постоянно изменяется даже в покое. Может конечно из за 47к. 

Присоедините переменный резистор 10К на вход АЦП и потренируйтесь.
А потом уже можно и к кнопкам переходить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, x893 сказал:

Законы Ома и Киргофа от этого не зависят.

Спасибо. А то, "мужики-то не знают" (c). )))

3 минуты назад, MaximDV сказал:

С языка сняли! Но именно в такой последовательности и было.

Понятно. Значит реальная схема немного другая:

1255173776_.png.21c92313567fc17e04c93d666720f8ae.png

Вопросов у меня пока больше нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, quark said:

Спасибо. А то, "мужики-то не знают" (c). )))

Видимо не знают.

Можно теорию почитать

https://electrocredible.com/multiple-buttons-on-one-analog-pin-arduino-adc/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 минут назад, MaximDV сказал:

много кода надо чтоб увидеть что принимает АЦП?

Мы не в курсе Вашей квалификации по STM32 на данный момент, ни на чём конкретно проводятся опыты, т.е. перечень аппаратуры и её происхождение.

Обычно начинают с помигивания светодиодом — это в наличии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде все в первом сообщении написал, какое железо и какие у меня познания в STM32. Спасибо вам за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Электронный компонент "stm32f103" сам по себе абсолютно неработоспособен — он должен быть соответственно требованиям его производителя припаян на печатную плату и обвешан ещё компонентами, где-то под сотню количеством.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Plain said:

Электронный компонент "stm32f103" сам по себе абсолютно неработоспособен — он должен быть соответственно требованиям его производителя припаян на печатную плату и обвешан ещё компонентами, где-то под сотню количеством.

Сегодня вроде не 1 апреля.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

97097913_.png.4cf3444863eeadecbe3201613218e28a.png

Напряжение Vin на входе ADC:
Нажатых кнопок нет      -    1   * VDD
Нажата кнопка "Вверх" -   0,6  * VDD
Нажата кнопка "i/Set"   -   0,33 * VDD
Нажата кнопка "Вниз"   -    0   * VDD

Алгоритм распознавания кнопок:
1. Vin > 0,5*VDD :
  1.1 Vin > 0,75*VDD  -> Нажатых кнопок нет;
  1.2 Vin < 0,75*VDD  -> Нажата кнопка "Вверх";
2. Vin < 0,5*VDD :
  2.1 Vin > 0,25*VDD  -> Нажата кнопка "i/Set";
  2.2 Vin < 0,25*VDD  -> Нажата кнопка "Вниз";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, quark said:

Алгоритм распознавания кнопок:
1. Vin > 0,5*VDD :
  1.1 Vin > 0,75*VDD  -> Нажатых кнопок нет;
  1.2 Vin < 0,75*VDD  -> Нажата кнопка "Вверх";
2. Vin < 0,5*VDD :
  2.1 Vin > 0,25*VDD  -> Нажата кнопка "i/Set";
  2.2 Vin < 0,25*VDD  -> Нажата кнопка "Вниз";

А почему не так ?
if ( Vin > 0,75*VDD )
    // Нажатых кнопок нет;

else if ( Vin > 0.5*VDD )
   // Нажата кнопка "Вверх";

else if ( Vin > 0,25*VDD )
  // Нажата кнопка "i/Set";
else
   // 
Нажата кнопка "Вниз";

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, x893 сказал:

А почему не так ?
if ( Vin > 0,75*VDD )
    // Нажатых кнопок нет;

else if ( Vin > 0.5*VDD )
   // Нажата кнопка "Вверх";

else if ( Vin > 0,25*VDD )
  // Нажата кнопка "i/Set";
else
   // 
Нажата кнопка "Вниз";

Потому, что в реальной программе не нужно производить сравнения значений.

Достаточно последовательно проанализировать два старших бита значения Vin.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, quark said:

Потому, что в реальной программе не нужно производить сравнения значений.

Достаточно последовательно проанализировать два старших бита значения Vin.

Гуру программирования виднее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, quark сказал:

97097913_.png.4cf3444863eeadecbe3201613218e28a.png

Напряжение Vin на входе ADC:
Нажатых кнопок нет      -    1   * VDD
Нажата кнопка "Вверх" -   0,6  * VDD
Нажата кнопка "i/Set"   -   0,33 * VDD
Нажата кнопка "Вниз"   -    0   * VDD

Алгоритм распознавания кнопок:
1. Vin > 0,5*VDD :
  1.1 Vin > 0,75*VDD  -> Нажатых кнопок нет;
  1.2 Vin < 0,75*VDD  -> Нажата кнопка "Вверх";
2. Vin < 0,5*VDD :
  2.1 Vin > 0,25*VDD  -> Нажата кнопка "i/Set";
  2.2 Vin < 0,25*VDD  -> Нажата кнопка "Вниз";

Спасибо, буду пробовать. Алгоритм в колбэке АЦП прописать или в while (1)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...