Я не нашёл форума, посвящённого другим отладочным платам, продающимся в Амперке, поэтому пишу сюда. Недавно стал счастливым обладателем STM32 Nucleo F401RE (http://amperka.ru/product/stm32-nucleo-f401re) после того как посмотрел видео из блога Амперки. По описанию платформа понравилась, и я решил для целей обучения программированию на ней выполнить те 20 мини-проектов и экспериментов из вики (http://wiki.amperka.ru/мини-проекты-arduino-breadboard:оглавление). Все комплектующие у меня есть, из набора Матрёшки Z. Так вот, дошёл до 3 эксперимента, чтение аналогового сигнала. Написал вот такой скетч, чтобы продемонстрировать проблему, которую обнаружил. Подключил два аналоговых входа - один к +5В, другой к GND. Ожидал там увидеть 1.0 и 0.0 сответственно. Но вместо этого вижу на входе от GND значения близкие к нулю, но не ноль, например "0.000733" А на входе, подключенному к +5V вижу "0.757265", что вообще очень далеко от ожидаемой там "1.0". И что ещё более запутывает, что если подключить к аналоговому входу переменный резистор 10К, которые с двух концов подключить к +5V и GND, и переменным контактом в аналоговый вход, чтобы считать значения (точь-в-точь как в эксперименте 3 - http://wiki.amperka.ru/конспект-arduino:светильник-с-управляемой-яркостью) то значения меняются от 0.000733 до 0.757265 (хотя ожидается что от 0.0 до 1.0), но при этом не линейно, как может показаться, а проходя значение 1.000000 где-то близко к краю, к которому подключено +5V. Тоесть если крутить переменный резистор от крайнего положения по часовой стрелке, то значения на аналоговом входе меняются от 0.000733 до 1.000000 плавно, а дальше так же плавно продолжают меняться от 1.000000 до 0.757265! Может кто-нибудь помочь понять, что я делаю не так? Сам скетч Код (Text): #include "mbed.h" #define POT1_PIN PA_0 #define POT2_PIN PA_1 #define POT3_PIN PA_4 AnalogIn analog_value1(POT1_PIN); AnalogIn analog_value2(POT2_PIN); AnalogIn analog_value3(POT3_PIN); int main() { while(1) { uint16_t pot = analog_value3.read_u16(); printf("Vin=%f GND=%f POT=%f POT_u16=%x\n", (float)analog_value1, (float)analog_value2, (float)analog_value3, pot ); wait(0.25); } } Отладочный вывод в последовательный порт выглядит так: Код (Text): // поворачиваю ручку потенциометра строго в одну сторону Vin=0.755800 GND=0.000488 POT=0.000488 POT_u16=60 Vin=0.756044 GND=0.000244 POT=0.000000 POT_u16=50 Vin=0.755800 GND=0.000977 POT=0.000244 POT_u16=30 Vin=0.755556 GND=0.000488 POT=0.001465 POT_u16=10 Vin=0.755800 GND=0.000977 POT=0.000977 POT_u16=0 Vin=0.756532 GND=0.000977 POT=0.000977 POT_u16=40 Vin=0.755556 GND=0.000488 POT=0.000000 POT_u16=20 Vin=0.755800 GND=0.000977 POT=0.000244 POT_u16=50 Vin=0.756044 GND=0.000488 POT=0.000977 POT_u16=70 Vin=0.756288 GND=0.000000 POT=0.000733 POT_u16=0 Vin=0.756044 GND=0.000000 POT=0.044200 POT_u16=b80 Vin=0.755556 GND=0.000488 POT=0.093284 POT_u16=1981 Vin=0.755556 GND=0.000977 POT=0.125275 POT_u16=2052 Vin=0.756044 GND=0.000000 POT=0.162149 POT_u16=2942 Vin=0.755800 GND=0.001954 POT=0.184127 POT_u16=2ea2 Vin=0.755800 GND=0.000488 POT=0.232479 POT_u16=3b93 Vin=0.755556 GND=0.000977 POT=0.266667 POT_u16=44a4 Vin=0.755556 GND=0.000733 POT=0.318681 POT_u16=51b5 Vin=0.755800 GND=0.001221 POT=0.357998 POT_u16=5b85 Vin=0.755556 GND=0.000977 POT=0.393407 POT_u16=6506 Vin=0.756044 GND=0.000977 POT=0.440293 POT_u16=7097 Vin=0.755556 GND=0.001954 POT=0.474970 POT_u16=79f7 Vin=0.755800 GND=0.000733 POT=0.523077 POT_u16=8558 Vin=0.756044 GND=0.000000 POT=0.552625 POT_u16=8d48 Vin=0.756532 GND=0.000000 POT=0.591453 POT_u16=9849 Vin=0.755067 GND=0.001709 POT=0.639316 POT_u16=a4ba Vin=0.755800 GND=0.000488 POT=0.676679 POT_u16=adaa Vin=0.755800 GND=0.000977 POT=0.716239 POT_u16=b75b Vin=0.756044 GND=0.000000 POT=0.742125 POT_u16=bdeb Vin=0.756044 GND=0.000000 POT=0.773626 POT_u16=c63c Vin=0.756044 GND=0.000733 POT=0.802686 POT_u16=ccfc Vin=0.756044 GND=0.000977 POT=0.826618 POT_u16=d39d Vin=0.755800 GND=0.000977 POT=0.853236 POT_u16=da5d Vin=0.755556 GND=0.000977 POT=0.862271 POT_u16=dcbd Vin=0.756288 GND=0.000000 POT=0.863004 POT_u16=dcdd Vin=0.755556 GND=0.000244 POT=0.861783 POT_u16=dc7d Vin=0.755311 GND=0.001221 POT=0.863004 POT_u16=dcfd Vin=0.756288 GND=0.000000 POT=0.904518 POT_u16=e7de Vin=0.756288 GND=0.000000 POT=0.927228 POT_u16=ee4e Vin=0.756044 GND=0.001465 POT=0.958730 POT_u16=f54f Vin=0.756044 GND=0.001221 POT=0.994139 POT_u16=fdff Vin=0.755800 GND=0.000733 POT=1.000000 POT_u16=ffff Vin=0.755556 GND=0.000977 POT=1.000000 POT_u16=ffff Vin=0.755800 GND=0.000733 POT=1.000000 POT_u16=ffff Vin=0.756288 GND=0.000000 POT=1.000000 POT_u16=ffff Vin=0.755800 GND=0.000244 POT=1.000000 POT_u16=ffff Vin=0.755800 GND=0.000733 POT=1.000000 POT_u16=ffff Vin=0.756044 GND=0.001221 POT=1.000000 POT_u16=ffff Vin=0.755556 GND=0.000244 POT=1.000000 POT_u16=ffff Vin=0.756044 GND=0.000733 POT=1.000000 POT_u16=ffff Vin=0.755800 GND=0.001221 POT=1.000000 POT_u16=ffff // продолжаю поворачивать ручку потенциометра строго в одну сторону, ещё не достиг края Vin=0.755556 GND=0.000977 POT=0.839805 POT_u16=ffff Vin=0.756044 GND=0.001221 POT=0.753846 POT_u16=ffff Vin=0.756288 GND=0.000000 POT=0.834921 POT_u16=c14c Vin=0.756044 GND=0.000733 POT=0.751893 POT_u16=c0dc Vin=0.756288 GND=0.000000 POT=0.752869 POT_u16=c0fc Vin=0.755800 GND=0.000733 POT=0.752869 POT_u16=c11c Vin=0.756532 GND=0.000488 POT=0.752869 POT_u16=c12c Vin=0.755800 GND=0.000977 POT=0.752869 POT_u16=c14c Vin=0.756532 GND=0.000000 POT=0.752869 POT_u16=c11c Vin=0.755800 GND=0.000244 POT=0.752869 POT_u16=c11c Vin=0.755556 GND=0.000977 POT=0.752869 POT_u16=c11c Vin=0.755067 GND=0.000000 POT=0.752869 POT_u16=c11c Vin=0.755800 GND=0.000488 POT=0.753114 POT_u16=c16c Vin=0.755800 GND=0.000977 POT=0.752869 POT_u16=c12c Vin=0.755800 GND=0.000488 POT=0.753114 POT_u16=c11c Vin=0.755556 GND=0.000977 POT=0.752869 POT_u16=c11c Vin=0.755800 GND=0.000488 POT=0.753114 POT_u16=c11c Vin=0.756044 GND=0.000000 POT=0.752869 POT_u16=c12c Vin=0.755800 GND=0.000244 POT=0.753114 POT_u16=c11c Vin=0.755556 GND=0.001465 POT=0.753114 POT_u16=c12c Vin=0.755556 GND=0.000733 POT=0.752869 POT_u16=c11c Vin=0.755800 GND=0.001221 POT=0.753114 POT_u16=c14c Vin=0.756044 GND=0.000488 POT=0.753114 POT_u16=c11c
Оказывается референсное значение напряжения = 3.3В https://mbed.org/users/yoonghm/notebook/analog-input/ Соответственно если подключить выход 3V3 вместо 5V к потенциометру или к аналоговому входу, то успешно считывается нужное значение: