Ошибка в описании контроллера на Arduino.ru

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Mega 2560

на сайте Arduino.ru:

PWM: 0 до 13. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().

на сайте Arduino.cc:

PWM: 2 to 13 and 44 to 46. Provide 8-bit PWM output with the analogWrite() function.

В результате fade дисплея на пинах D0, D1 работал скачкообразно. 4 часа потрачено на перетыкание ЖК в Мегу, Нано, Уно и на разборки, почему при соединении проводками один и тот же код то работает, то нет.

"Поубывав бы..." :)

Alexander
Offline
Зарегистрирован: 25.04.2010

Поправил. Спасибо

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Раз пошла такая пьянка...

в разделе программирование, в описании функции AnalogWrite()

int analogPin = 3; // потенциометр подключен к выходу 3

Изменить на

int analogPin = A3; // потенциометр подключен к выходу A3

в разделе программирование, в описании функции AnalogRead()

int analogPin = 3;     // номер порта к которому подключен потенциометр
 
Изменить на
 
int analogPin = А3;     // номер порта к которому подключен потенциометр

кстати, эти ошибки и на родном сайте...

Zaliv
Offline
Зарегистрирован: 05.03.2011

Насколько я понимаю это монописуально.

  • digitalRead(0) through digitalRead(13) - use digital pins 0 - 13 as digital input
  • digitalRead(14) through digitalRead(19) - use analog pins 0 - 5 as digital input
  • digitalRead(A0) through digitalRead(A5) - use analog pins 0 - 5 as digital input
  • analogRead(0) through analogRead(5) - use analog pins 0 - 5 as analog input
  • analogRead(6) and analogRead(7) map to the crystal pins and are unusable
  • analogRead(8) through analog(13) - use analog pins 0 - 5 as analog input
  • analogRead(14) through analogRead(19) - read analog pins 0 - 5 as analog
  • analogRead(A0) through analogRead(A5) - read analog pins 0 - 5 as analog
Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Такая же шняга с Nano.

на сайте Arduino.ru:

I2C: 4 (SDA) и 5 (SCL). Посредством выводов осуществляется связь I2C (TWI). Для создания используется библиотека Wire (информация на сайте Wiring).

на сайте Arduino.cc:

I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using the Wire library (documentation on the Wiring website).

 

Alexander
Offline
Зарегистрирован: 25.04.2010

Поменял. Спасибо

Pyotr
Offline
Зарегистрирован: 12.03.2014

Немного не в тему, но тоже про ошибки/опечатки. Когда только начинал познавать программирование Ардуино, в частности работу с функциями по учебнику на форуме  http://arduino.ru/Reference/FunctionDeclaration   долго не мог въехать, пока не начал изучать учебники по С/С++. Может для других так понятней будет:

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

Pyotr, вряд ли документация по Ардуино способна заменить учебник по программированию.

Это первое.

И второе (впрочем, именно второе, на мой взгляд, одна из проблем Ардуино): если уж давать примеры кода, то ни в коем случае не такие корявые, как приведенный Вами.

int myMultiplayFunction(int x, int y) {
    return x*y;
}

 

Гриша
Offline
Зарегистрирован: 27.04.2014

andriano, 

int myMultiplayFunction(int x, int y) {
    return x*y;
}

а в какой переменной результат брать? или писать int result=myMultiplayFunction(int x, int y);

а если не выходе myMultiplayFunction в результате две переменные...

Гриша
Offline
Зарегистрирован: 27.04.2014

а почему так написать нельзя:

int k; // глобальная переменная
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  int i = 2;
  int j = 3;
// int k; // теперь глобальная
//  k = myMultiplyFunction(i, j); // k содержит 6
  myMultiplyFunction(i, j);  // вызвали функцию в этой строке
  Serial.println(k);
  delay(500);
}

void myMultiplyFunction(int x, int y)
{
//  int result;
//  result = x * y;
//  return result;
k = x * y; // записали результат в глобальную переменную
}
// ЗЫ. написал, а скомпилировать нечем, может вообще не работает :) 
// может и не в тему вопроса

 

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

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

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

Пост с вопросом куда-то пропал, но все равно отвечу.

Функция не может возвращать несколько значений, только одно. Но есть  маленький лайфхак: этим единственным значением может быть структура, которая в себе может содержать несколько элементов, в том числе разных типов. Корректные примеры могут привести уважаемые kisoft и ЕвгенийП.

Ну или использовать глобальные переменные.

Pyotr
Offline
Зарегистрирован: 12.03.2014

andriano пишет:

... если уж давать примеры кода, то ни в коем случае не такие корявые, как приведенный Вами.

Код не мой). см. ссылку. Вполне нормальный пример для понимания основ. Одной переменной больше, одной меньше... и она не static .  На практике никому в голову не придёт для умножения двух переменных писать отдельную функцию. 

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

если это умножение используется неоднократно и в разных местах алгоритма - почему бы и нет?

Pyotr
Offline
Зарегистрирован: 12.03.2014

Ну тогда можно
define RESULT (x*y)

и писать в коде:
Serial.print(RESULT);

Да и компилятор, кажется, короткие функции встраивает в код. Я не программист -- сильно не пинать))

Гриша
Offline
Зарегистрирован: 27.04.2014

Предлагаю снова опустить тему до формата представленного  в «Программировании Ардуино» .

Вернуться к посту №6.

ИМХО. Замечания не существенны для формата сжатого справочника Ардуино – можно и учебник по программированию написать, найдется тот, кто сможет дополнить и переделать.  И вообще это не замечание, а дополнение и таких можно еще написать море

ВОПРОС: 1) имеет ли смысл создавать тему для дополнения раздела «Программирование Ардуино» примерами и уточнениями? 2) кто внесет изменения и возьмется ли за это? 3) Пожалуйста, дайте право ТС дополнять (возможно, и изменять) первый пост всегда!!!