Где ошибка в коде

el666
Offline
Зарегистрирован: 27.12.2019

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

Мне нужно собрать девайс , чтоб при подключении к пину А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);
}

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Почитайте описание к analogWrite и посмотрите, значения каких типов она принимает, и какой диапазон значений у второго параметра функции. Тогда сразу станет понятна ошибка.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

У ардуино нет ЦАП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

el666, это очень распространённая ошибка тех, кто впервые сталкивается. Сам налетел в своё время. Всё дело в крайне неудачном названии "analogWrite". Не выводит она напряжение на пин. Правильнее было бы назвать её pwmWrite

el666
Offline
Зарегистрирован: 27.12.2019
el666
Offline
Зарегистрирован: 27.12.2019

asam пишет:

У ардуино нет АЦП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM

да там тоже курил ,так и не въехал

bwn
Offline
Зарегистрирован: 25.08.2014

Тогда курните по запросу: "ШИМ в напряжение".

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

конкретно - ошибка в строке 13.

el666
Offline
Зарегистрирован: 27.12.2019

выходит ни как не получиться?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

el666 пишет:

asam пишет:

У ардуино нет АЦП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM

да там тоже курил ,так и не въехал

Если в вашей выходной цепи есть где-нибудь интегрирующая цепочка (например в вольтметре), то грубо говоря можно считать, что функция analogWrite выдает  напряжение пропорционально ее аргументу 0-0В, 255 - 5В

Таким образом увеличение аргумента на 1 приводит к увеличению напряжения примерно на 0.02 В 

Хотите увеличить на 0.2В? тогда аргумент надо увеличить на 10

val = analogRead(analogPin)/4 + 10;   
analogWrite(ledPin, val );      

 

el666
Offline
Зарегистрирован: 27.12.2019

DIYMan пишет:

конкретно - ошибка в строке 13.

а что я должен вписать в место  voltage?

Logik
Offline
Зарегистрирован: 05.08.2014

el666 пишет:

asam пишет:

У ардуино нет АЦП поэтому оно не может выдавать регулируемое выходное напряжение. analogWrite это ШИМ. Подробности здесь - http://arduino.ru/Tutorial/PWM

да там тоже курил ,так и не въехал

Глубже затягиватся надо! analogWrite не выводит просто постоянное напряжение.  Она выводит сигнал сложной формы в составе которого постоянное напряжение - одна из составляющих. На такой сигнал разные измерительные приборы реагируют по разному. И в стр.13 явный бред, почитайте о диапазоне допустимых значений параметра analogWrite, там совсем не напряжение.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

el666 пишет:

DIYMan пишет:

конкретно - ошибка в строке 13.

а что я должен вписать в место  voltage?

Ну раз вам лень читать описание в документации, поработаю копипастером. http://arduino.ru/Reference/AnalogWrite - там написано:

Параметры
  • pin: порт вход/выхода на который подаем ШИМ сигнал.
  • value: период рабочего цикла значение между 0 (полностью выключено) and 255 (сигнал подан постоянно).

Всё более чем ясно и прозрачно изложено.

el666
Offline
Зарегистрирован: 27.12.2019

asam большое  спасибо ,сработало)))

el666
Offline
Зарегистрирован: 27.12.2019

DIYMan я знаю что такое шим, я не знал что арду  не регулирует на выходе