Нужна помощь с ШИМ

BigMeister
Offline
Зарегистрирован: 11.02.2018

Задача регулировать яркость светодиода при помощи потенциометра.

Ниже код 

int pwm; //переменная для хранения значения с потенциометра

void setup() 
{
 
}

void loop() 
{
  pwm = analogRead(A0); //потенциометр подключен в A0
  map(pwm, 0, 1023, 0, 255);
  constrain(pwm, 0, 255);
  analogWrite(A3, pwm); //светодиод подключен в A3
}

Светодиод не горит и соответственно не меняет яркость при изменении шима. 

Может быть ошибка где-то в коде ?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

BigMeister, читайте на каких ногах может работать ШИМ

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

BigMeister пишет:

Может быть ошибка где-то в коде ?

И как Вы догадались? Шаман, однако!

BigMeister
Offline
Зарегистрирован: 11.02.2018

Читал, для нано это 3, 5, 6, 9, 10, 11

sadman41
Offline
Зарегистрирован: 19.10.2016

A[nalog]3 != [Digital]3

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

BigMeister пишет:

Читал, для нано это 3, 5, 6, 9, 10, 11

Ну, а если читал, так какого ж лешего ....

BigMeister
Offline
Зарегистрирован: 11.02.2018

ЕвгенийП пишет:

BigMeister пишет:

Читал, для нано это 3, 5, 6, 9, 10, 11

Ну, а если читал, так какого ж лешего ....

Помоги исправить ошибки, пожалуйста

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

Чего????

Так .... если Вы не можете поменять номер пина, то как же я могу Вам помочь? А код то это Вы где взяли мил человек, что уже номер пина в нём поменять Вам помогать надо?

BigMeister
Offline
Зарегистрирован: 11.02.2018

ЕвгенийП пишет:

Чего????

Так .... если Вы не можете поменять номер пина, то как же я могу Вам помочь? А код то это Вы где взяли мил человек, что уже номер пина в нём поменять Вам помогать надо?

Поставил потенциометр на 5 аналоговый, теперь он работает как переключатель и все. Яркость не меняет. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

BigMeister пишет:

Может быть ошибка где-то в коде ?

Да Вы, батенька, оптимист: у Вас там больше одной ошибки.

1. У Вас два пина: один на потенциометр, другой - на ШИМ. Почему если не работает ШИМ, Вы меняете пин на потенциометре?

2. Почитайте, как работает функция map().

sadman41
Offline
Зарегистрирован: 19.10.2016

Вам уже трижды подсказали, где искать проблему.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

BigMeister, внимательно вчитайтесь в сообщение #4

ven-til
Offline
Зарегистрирован: 13.02.2018

Функция analogWrite никак не связана с аналоговыми входами и с функцией analogRead.

BigMeister
Offline
Зарегистрирован: 11.02.2018

andriano пишет:

BigMeister пишет:

Может быть ошибка где-то в коде ?

Да Вы, батенька, оптимист: у Вас там больше одной ошибки.

1. У Вас два пина: один на потенциометр, другой - на ШИМ. Почему если не работает ШИМ, Вы меняете пин на потенциометре?

2. Почитайте, как работает функция map().

Так я не могу понять, где ошибка. Значения с потенциометра считываются правильно, на монитор порта выводятся значения от 0 до 255. Как может не работать шим, если все подключено к пинам, которые его воспроизводить могут ? 

sadman41
Offline
Зарегистрирован: 19.10.2016

По ходу дела тут тоже пострадавший от нечестного Си...

ven-til
Offline
Зарегистрирован: 13.02.2018

http://arduino.ru/Hardware/ArduinoBoardNano - поиск по странице - "ШИМ" первое совпадение прочтите внимательно. Потом найдите второе совпадение и тоже прочтите. Можно по кругу читать до озарения.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

BigMeister пишет:

Так я не могу понять, где ошибка.

Чукча не читатель, чукча - писатель?

Я уже:

1. Написал, что ошибок более одной.

2. Порекомендовал почитать описание к функции map(). Кстати, именно в этом описании приводится пример с потенциометром.

PS. Если ничего не помогает, прочтите, наконец, долбаную инструкцию!

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

sadman41 пишет:

По ходу дела тут тоже пострадавший от нечестного Си...

нечестный Си он такой. Все время пины на не те переставляет

(анекдот)
Гуру Ардуинщик - Новичку: 
- Вот смотри, это ШИМ пины, это АЦП  пины ,TWI/I²C-пины, SPI-пины,UART-пины
(быстро вращает плату) 
- Мешаем-мешаем-мешаем... Где какой?
renoshnik
Offline
Зарегистрирован: 11.04.2013

BigMeister пишет:

Задача регулировать яркость светодиода при помощи потенциометра.

Ниже код 

int pwm; //переменная для хранения значения с потенциометра

void setup() 
{
 
}

void loop() 
{
  pwm = analogRead(A0); //потенциометр подключен в A0
  map(pwm, 0, 1023, 0, 255);
  constrain(pwm, 0, 255);
  analogWrite(A3, pwm); //светодиод подключен в A3
}

Светодиод не горит и соответственно не меняет яркость при изменении шима. 

Может быть ошибка где-то в коде ?

 

попробуйте так

int pwm; //переменная для хранения значения с потенциометра

void setup() 
{
 
}

void loop() 
{
  pwm = analogRead(0); //потенциометр подключен в A0
  pwm = map(pwm, 0, 1023, 0, 255);
  analogWrite(3, pwm); //светодиод подключен в A3
}

 

или для проверки потенциометра еще можно так

 

int pwm; //переменная для хранения значения с потенциометра

void setup() { Serial.begin(9600); }

void loop() 
{
  pwm = analogRead(0); //потенциометр подключен в A0
  Serial.print(pwm); Serial.print("   --   ");
  pwm = map(pwm, 0, 1023, 0, 255);
  Serial.println(pwm);
  analogWrite(3, pwm); //светодиод подключен в A3
}

 

BigMeister
Offline
Зарегистрирован: 11.02.2018

andriano пишет:

BigMeister пишет:

Так я не могу понять, где ошибка.

Чукча не читатель, чукча - писатель?

Я уже:

1. Написал, что ошибок более одной.

2. Порекомендовал почитать описание к функции map(). Кстати, именно в этом описании приводится пример с потенциометром.

PS. Если ничего не помогает, прочтите, наконец, долбаную инструкцию!

Похоже что функция analogWrite может быть использована и на цифровых пинах. 

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

BigMeister пишет:

Похоже что функция analogWrite может быть использована и на цифровых пинах. 

Вот что точно, то точно! analogWrite может быть использована и на цифровых пинах! Хорошо, что Вы теперь об этом знаете!

Надеюсь, что Вы на этом не остановитесь и сделаете следующее великое открытие: функция analogWrite может быть использована только на цифровых пинах! Уверен, что Вам это удастся, я в Вас верю и болею за Вас!!!

:))))))))))))))))

MaksVV
Offline
Зарегистрирован: 06.08.2015

ЕвгенийП пишет:
Надеюсь, что Вы на этом не остановитесь и сделаете следующее великое открытие: функция analogWrite может быть использована только на цифровых пинах! Уверен, что Вам это удастся, я в Вас верю и болею за Вас!!!

:))))))))))))))))

а потом и ещё одно открытие, что НЕ на любых цифровых пинах.

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

Ну, это уже следующий этап! Победы нужно одерживать пошагово, чтобы чаще был повод их отметить.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

Надеюсь, что Вы на этом не остановитесь и сделаете следующее великое открытие: функция analogWrite может быть использована только на цифровых пинах! Уверен, что Вам это удастся, я в Вас верю и болею за Вас!!!

Женя, давайте будем немного более снисходительны: они ведь не виноваты, что разработчики Ардуино дали функциям названия, не отражающие их назначение. (мы жа сами ризываем новичков давать переменным и функциям осмысленные имена, поэтому они вправе расчитывать, что хотя бы отцы-основатели придерживаются этого правила)

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Самое сложное это давать переменным и функциям те названия для которых они предназначены. Сам нарываюсь на такие веши. Сначала даешь подходящее название. А потом переосмысливаешь скетч и понимаешь, что переменные и функции в по меркам всего скетча делают совсем другое. А отцы разработчики разумеется банально не видели. Поэтому Среда Ардуины при всех ее достоиствах вышла с кривоватостями. Но новички это не видят, потому что у новичков мышлеение еще кривее. Вот и доходят до мысли что язык Си кривой изначально по сравнении с их прямой извилиной. 

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

Да, я как-то не старался наехать - хотел по-доброму пошутить. Это всё грёбанное письменное общение. В живом, увидишь рот до ушей и по глазам понятно, что наезда нет, а здесь вечно как-то не так воспринимается.

А про осмысленные имена, это да. Вчера только в соседней ветке Маяковского цитировал.

mag155
Offline
Зарегистрирован: 21.12.2017
#define PIN_LED     11
#define PIN_POT     A0
  void setup()
{
 
  pinMode(PIN_LED, OUTPUT);
  pinMode(PIN_POT, INPUT);
}
 
void loop(){
   int rotat, brightn;  
    rotat = analogRead(PIN_POT);
      brightn = rotat / 4;
      analogWrite(PIN_LED, brightn);
}

 

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

Строка 7 - лишняя. Для analogRead этого не нужно делать.

mag155
Offline
Зарегистрирован: 21.12.2017

Да вы правы.

mag155
Offline
Зарегистрирован: 21.12.2017

Согдал тему "шим с обратной связью". Если не сложно гляньте мож какую идейку подкините?