Где ошибка в коде
- Войдите на сайт для отправки комментариев
Пт, 27/12/2019 - 14:21
Подскажите, может кто знает,где я неправильно вписал код.
Мне нужно собрать девайс , чтоб при подключении к пину А0,допустим батарейка 1,35в, на пине 9 выходило чуть больше,допустим на 0,2в >1.55
На монитор порта выходит правильно 1,55в, а на пин 9 нет
Если добавить строки для val, то на монитор порта выводит правильно 1,55в , а на пин 9 выводит входящее напряжение 1,35 ,
и к val/4 не прибавляется 0,2 т.е. нет возможности редактировать
int ledPin = 9; //<<<<<<<<<<<<добавил int analogPin = A0; //int val = 0; // если добавить для val void setup() { pinMode(ledPin, OUTPUT); //<<<<<<<<<<<<добавил Serial.begin(9600); } void loop() { int sensorValue = analogRead(A0); // читаем данные с вывода A0: float voltage = sensorValue * (5.0 / 1023.0)+0.2; // Конвертируем данные от0до1023)в значения напряжения(0-5V): analogWrite(ledPin, voltage );//<<<<<<<<<<<<добавил вывод на 9 пин //val = analogRead(analogPin); //если добавить для val вывод на 9 пин //analogWrite(ledPin, val/4 ); //если добавить для val Serial.println(voltage); // Выводим результат на монитор порта delay(200); }
Почитайте описание к analogWrite и посмотрите, значения каких типов она принимает, и какой диапазон значений у второго параметра функции. Тогда сразу станет понятна ошибка.
У ардуино нет ЦАП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM
el666, это очень распространённая ошибка тех, кто впервые сталкивается. Сам налетел в своё время. Всё дело в крайне неудачном названии "analogWrite". Не выводит она напряжение на пин. Правильнее было бы назвать её pwmWrite
Спасибо что ,откликнулись
вот читал
http://wikihandbk.com/wiki/Arduino:%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_Arduino/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8/%D0%90%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2%D1%8B%D0%B9_%D0%B2%D0%B2%D0%BE%D0%B4/%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4/analogWrite()
и отсюда же добавил
У ардуино нет АЦП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM
да там тоже курил ,так и не въехал
Тогда курните по запросу: "ШИМ в напряжение".
конкретно - ошибка в строке 13.
выходит ни как не получиться?
У ардуино нет АЦП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM
да там тоже курил ,так и не въехал
Если в вашей выходной цепи есть где-нибудь интегрирующая цепочка (например в вольтметре), то грубо говоря можно считать, что функция analogWrite выдает напряжение пропорционально ее аргументу 0-0В, 255 - 5В
Таким образом увеличение аргумента на 1 приводит к увеличению напряжения примерно на 0.02 В
Хотите увеличить на 0.2В? тогда аргумент надо увеличить на 10
конкретно - ошибка в строке 13.
а что я должен вписать в место voltage?
У ардуино нет АЦП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM
да там тоже курил ,так и не въехал
Глубже затягиватся надо! analogWrite не выводит просто постоянное напряжение. Она выводит сигнал сложной формы в составе которого постоянное напряжение - одна из составляющих. На такой сигнал разные измерительные приборы реагируют по разному. И в стр.13 явный бред, почитайте о диапазоне допустимых значений параметра analogWrite, там совсем не напряжение.
конкретно - ошибка в строке 13.
а что я должен вписать в место voltage?
Ну раз вам лень читать описание в документации, поработаю копипастером. http://arduino.ru/Reference/AnalogWrite - там написано:
Параметры
Всё более чем ясно и прозрачно изложено.
asam большое спасибо ,сработало)))
DIYMan я знаю что такое шим, я не знал что арду не регулирует на выходе