Здравствуйте.
У меня в микроконтроллере не работает нормально ни один из выходов АЦП.
Сразу говорю: программная часть полностью исправна. При подключении к VCC показывает 5 вольт. При подключении к GND - 0 вольт. Но при подключении делителя напряжения, в роли которого переменный резистор - просто показывает 0 при любых положениях. С двумя постоянными резисторами показывает тоже самое. Подключение делителя проверялось на множестве сайтов и не является ошибочным. Суммарное сопротивление ветвей делителя пробовал от 400 Ом до 10 кОм. Все равно уходит в 0.
можно было дальше не читать, но я пересилил себя, если это работает
то рисуйте схему как вы подключаете резистор переменный и делитель, а лучше видосик маленький.
и да код который показывает то 5 вольт, то 0, тоже выкладывайте.
«««
float gVal = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
gVal = (analogRead(A0)/1023)*5;
Serial.println(gVal);
delay(1000);
}
»»»
Наверное при делении, например, 512/1023 и получается 0.
и вместо
надо ставить ``` (ёёё)
Что ж за люди такие. Им говорят, что искать нужно в аппаратной части, а они опять за своё…
У меня формат float. Число возвращается в формате 5.00 или 0.00. Не может быть такого, что оно округляется внутри, так как иначе выводилось бы целочисленно.
Ну, попробуй поделить на 1023.0 , ардуина-то китайская, не понимает ни по-русски, ни по-английски.
Лучше так попробовать:
gVal = (float)(analogRead(A0)/204.6);
достаточно чтоб хотя бы одиб был float.
gVal = analogRead(A0)/1023.0;
или
gVal = (float) analogRead(A0)/1023;
Молчит.
там все заработало, не до пустяков сейчас совсем)
если бы еще подсказали, почему передаваемое через SerialPort число округляется ровно до двух знаков после запятой всегда, было бы еще лучше
а еще чего, ключ от квартиры?
да. почему бы и нет.
в очередь сукины дети, в очередь!
И ни у кого не работает.
Потому, что не может.
Могут работать либо входы АЦП, либо выходы ЦАП (если есть).
Опять мимо: само число никак не округляется.
Вероятно, Вы производите форматное преобразование число->строка, выполняемое по умолчанию с двумя знаками после запятой. Если Вас это умолчание не устраивает, формат вывода можно изменить. Только надо понимать, что это не само число, а его приближенная десятичная запись.
А лучше, чтобы ничего не округлялось, передавать число не как строку, а как число.
Потому, Вы задаёте именно два числа после запятой в функции print. Вернее, Вы не задаёте ничего, но там по умолчанию 2. Задайте другое число и будет Вам счастье.
А вообще, поосторожнее с заявлениями типа
Как видите, проблема была именно в программе.