Мега 2560 pinout не соответствует действительности

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Всем привет.

Взял китайский клон 2560. Но не могу обратиться к портам. По цифрам обращения все нормально. Выходы звонятся на микросхему как и положено (что не удивительно). Аналоговый А0 - как в раскладке PH0. 

А вот что удивительно, так это цифровой выход 7 вместо PH4 -> PH7 (!!!)

К лампе 13 - PB7 никак не подберу номер порта.

Как такое может быть? Кто-то сталкивался с таким?
Что делать, кроме как "выкинуть" или "взять оригинальную"?

b707
Offline
Зарегистрирован: 26.05.2017

вы бы выложили код, как вы обращаетесь к портам, а то помня ваши прошлые темы, возникает некоторое сомнение. Тем более что по номерам пинов ардуино, как я понял - все работает, а это было бы невозможно, если бы распиновка была неверной

Пина PH7 на Меге вообще нет, если я не ошибаюсь

b707
Offline
Зарегистрирован: 26.05.2017

вспомнил вашу прошлую ветку, где вы не могли понять смысл цикла while...

выкладывайте код, 100% ошибка в нем, а "китайская ардуина" не при чем. Если бы на плате была неправильная распиновка, то Ардуино ИДЕ так же бы путало выходы. А раз пины Ардуино не ошибаюсься - значит ошибаетесь вы.

 

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

b707 пишет:

"китайская ардуина" не при чем. 

Не, ну виноваты-то всегда и во всём китайцы. Я вот как-то провода питания перепутал ... ну, не я же виноват, правда?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

код, только для того, чтобы проверить входы-выходы

 

#define btn_dig PH7
#define lampa 13

void setup() {
  pinMode (PF0, INPUT_PULLUP);
  pinMode (btn_dig, INPUT_PULLUP);
  pinMode (lampa, OUTPUT);
  digitalWrite (lampa, LOW);
  Serial.begin(9600);
}

void loop() {
  
  int i = analogRead(PF0);
  int j = digitalRead(btn_dig);
  if (j==0) digitalWrite (lampa,HIGH ); else digitalWrite (lampa, LOW);
  
  Serial.print("analog = ");
  Serial.print(i);
  Serial.print("     digital = ");
  Serial.println(j);
  delay(500);
}

Если в этот код поставить значения, что напечатаны на плате - все работает.

 

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

вспомнил вашу прошлую ветку, где вы не могли понять смысл цикла while...

выкладывайте код, 100% ошибка в нем, а "китайская ардуина" не при чем. Если бы на плате была неправильная распиновка, то Ардуино ИДЕ так же бы путало выходы. А раз пины Ардуино не ошибаюсься - значит ошибаетесь вы.

 

Если только Serial влияет.
Нашел вторую плату, черную ))) аналогично

Про while кстати интересно. Я после нашел строчку на одном из сайтов, что цикл должен содержать условие для выхода из цикла. Ну вот нигде не встречал раньше этой важной фразы. С моим опытом догадаться до этого не получилось. Дал маху, было дело :)

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

Zero-Botanik пишет:

#define btn_dig PH7
...
  pinMode (PF0, INPUT_PULLUP);
  pinMode (btn_dig, INPUT_PULLUP);
....
  int i = analogRead(PF0);
  int j = digitalRead(btn_dig);

Не, ну тут точно китайцы виноваты :-(

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

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

Не, ну тут точно китайцы виноваты :-(

Если я не напишу, что плата китайская, то сразу кто-то напишет, что нет фото, где взял и иди читай правила для новичков.

Что по сути вопроса? Не снизойдете до объяснения?

b707
Offline
Зарегистрирован: 26.05.2017

хм, а разве так можно?

pinMode (PF0, INPUT_PULLUP);

pinMode() - это функция Ардуино ИДЕ, она на входе ожидает номер ардуино-пина , а не порт микроконтроллера.

 

Ботаник, вы чего добиться то хотите, используя обозначения портов МК в ардуино-функциях? Что вас не устраивает в обращении

pinMode (21, INPUT_PULLUP);

например? Где-то вычитали, что через порты быстрее?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

хм, а разве так можно?

pinMode (PF0, INPUT_PULLUP);

pinMode() - это функция Ардуино ИДЕ, она на входе ожидает номер ардуино-пина , а не порт микроконтроллера.

 

Ботаник, вы чего добиться то хотите, используя обозначения портов МК в ардуино-функциях? Что вас не устраивает в обращении

pinMode (21, INPUT_PULLUP);

например? Где-то вычитали, что через порты быстрее?

 

Спасибо.

Но как-то частично работает. Аналоговый не против, как минимум.

У меня кончились выходы на УНО, там код был как Вы в прошлый раз про сдвиги смеялись.  Поставил Мегу и перестало. Идея понятна, этот код был только проверить порты.

Да, прочел, что с портами быстрее. Спрашивать каждый раз страшно, некоторые плюются ))

Спасибо, дальше сам.

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

Если я не напишу, что плата китайская, то сразу кто-то напишет, что нет фото, где взял и иди читай правила для новичков.

Что по сути вопроса?

Зеро Ботаник, а иожно как-то потише и повежливей? "Вы стоите на самой низшей ступени развития... " и далее по цитате. А перед вами люди с университетским образованием :)

Вопросы, с которыми вы приходите - каждый раз отдают таким невежеством, что даже новичку ствдно должно быть. А стоит вам сделать замечание - вы сразу в ответ кидаетесь.

И привыкните всегда в первую очередь искать ошибки у себя, а не в "китайской ардуине" и не в том, что вам кто-то забыл сказать, что из цикла должен быть выход :))))

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

Да, прочел, что с портами быстрее. Спрашивать каждый раз страшно, некоторые плюются ))

Спасибо, дальше сам.

Может, вместо того чтоб читать на заборе - учебник какой-нить изучите? От начала до конца? Вам не говорили, что это помогает?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

Зеро Ботаник, а иожно как-то потише и повежливей? "Вы стоите на самой низшей ступени развития... " и далее по цитате. А перед вами люди с университетским образованием :)

Вопросы, с которыми вы приходите - каждый раз отдают таким невежеством, что даже новичку ствдно должно быть. А стоит вам сделать замечание - вы сразу в ответ кидаетесь.

И привыкните всегда в первую очередь искать ошибки у себя, а не в "китайской ардуине" и не в том, что вам кто-то забыл сказать, что из цикла должен быть выход :))))

И у меня есть образования. Два, бляха! И еще. Не буду писать. Но это здесь причем? 

Да, я на низшей ступени программирования и в песочнице. Соответственно ожидаю, что как дураку разжуют или промолчат. Все просто.

И я знаю, что у меня ошибка. Зачем же я пишу? Только потому что САМ не вижу. Закройте к чертям этот раздел "для новичков" и проблем не будет таких.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Парни, обещаю. Я постараюсь как можно меньше вас всех здесь беспокоить.

Удачи всем!!!   (искренне) 

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Тут нет личного кабинета? Или у меня плагины браузера режут? Я бы выпилился.

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

И я знаю, что у меня ошибка. Зачем же я пишу?

Если знаете - нафига этот идиотский заголовок про неправильный пинаут у китайской платы??? - вы сами себя на посмешише выставляете

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

Тут нет личного кабинета? Или у меня плагины браузера режут? Я бы выпилился.

не надо выпиливаться. Прочтите какую-нить книжку для чайников, подтяните основы - и ваши вопросы перестанут выглядеть идиотскими.

А если вы не начнете читать учебник - вы никакой проект по сайтам и видосам не поднимете - что на этом форуме, что на любом другом.

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

Zero-Botanik пишет:

Не снизойдете до объяснения?

Нет. Если Вам лень прочитать описание функций типа digitalWrite и т.п. прямо на этом же сайте, то что я могу Вам объяснить? Повторять то, что там написано? А смысл?

И, да, кстати

Zero-Botanik пишет:
цикл должен содержать условие для выхода из цикла. Ну вот нигде не встречал раньше этой важной фразы.

Вот прямо здесь, на этом же сайте всё по-русски написано

Кто Вам виноват, что Вы этого "нигде не встречали"? Китайцы? Или я? Ну, если я, то извините.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

Может, вместо того чтоб читать на заборе - учебник какой-нить изучите? От начала до конца? Вам не говорили, что это помогает?

b707
Offline
Зарегистрирован: 26.05.2017

красивые книжки... не верю, что в ТРЕХ КНИЖКАХ не описания цикла while ^))))

проехали. Оставайтесь.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Я начал с нового года учить, есть там цикл и много всего. Может я тороплюсь. Может работа. Может еще что. Я в восторге от структуры С++, обожаю. Не хватает практических занятий. 

Дэвис не понравился, бросил на половине, описывает с первого раза функцию main с аргументами и до середины книги не удосужился на примерах. Я только у Шилдта понял, что он там писал.

Шилдт обалденный, на сейчас больше половине. Но пошли указатели, слегка плаваю. Каждый урок с вопросами и разжованными примерами. Супер!

Ну а Ардуину дурак не перепечатал, но мне хотелось именно Блума купить, так как он это все начал.

Сейчас я в С++ прочел, что мне прям сейчас надо и начал "тренироваться на кошках". А сколько я ошибок делаю и сам ловлю. Я стараюсь сюда не писать, только когда понимаю, что стенка, сам не решу уже.

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

Zero-Botanik,

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

b707 пишет:
Прочтите какую-нить книжку
Вы знаете, что означает слово "прочтите"? 

Только не говорите, что Вы их читали. Если бы это было так, то в той, что слева, Вы непременно бы увидели вот такое:

Ну, а коль скоро Вы этого никогда и нигде не видели, ....

b707
Offline
Зарегистрирован: 26.05.2017

отлично, не сдавайтесь.

И еще совет - относитесь к глуму на форуме с юмором.У нас  тут вообще люди не злые

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

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

Zero-Botanik,

Вы знаете, что означает слово "прочтите"? 

Не, не знаю, Вы же не рассказываете.

Вот какое описание сработало у меня в голове:

Оператор цикла while или цикл while — цикл, повторяющий одно и то же действие, пока условие продолжения цикла while остаётся истинным.

1
2
3
4
5
6
// форма записи цикла while
while (/*условие продолжения цикла while*/)
{
/*блок операторов*/;
/*управление условием*/;
}

 

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

Zero-Botanik пишет:

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

Вы знаете, что означает слово "прочтите"? 

Не, не знаю, Вы же не рассказываете.

Да, это, пожалуй, мой прокол. Извините :-)

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

b707 пишет:

относитесь к глуму на форуме с юмором.У нас  тут вообще люди не злые

Вот +100500!

Прям уж и позмеиться в пятницу нельзя :-)

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

Вот какое описание сработало у меня в голове:

Оператор цикла while или цикл while — цикл, повторяющий одно и то же действие, пока условие продолжения цикла while остаётся истинным.

и чем отличается от того, что в книжке?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

отлично, не сдавайтесь.

И еще совет - относитесь к глуму на форуме с юмором.У нас  тут вообще люди не злые

Чтобы я сдался? ))) нет, только если неинтересно будет. Но не потому что не понял.

Знаете, это такая русская игра: подружись с авторитетом (это слово без любого негатива), стань своим и так далее. Вот тогда ты тоже "в стае". 

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

Я сейчас учу соседских детишек. Вне работы, по субботам. Плюс с английским тоже по-соседски помогаю. Никогда мне не придет в голову насмехнуться над ошибкой. Никогда. У меня два варианта: похвалить или обсудить. Очень тяжело. Но никто не знает об этом.

Миллионы дают совет: читай. А где?!!! Вот здесь ЕвгенийП давал ссылку, правда в других целях, но все ж ))) А обычно просто наотмашь. Для новичка это звучит как "иди в лес".

К чему я тут нюни распустил? Народ, я правда Вам благодарен, что Вы тянете здесь лямку. Но, бляха, юмор потом, когда проблема разрешилась. Заведите правило (моя рекомендация): новичок старается скорее всего. Или помогите, или сделайте вид, что упустили эту тему и не прочли.

Снукер вон идёт, Ронни играет, а я тут пишу.

Всем спасибо в любом случае.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Вот представляете, строчка под номером 5 меня зацепила. А сколько вариантов while я прочел и не сосчитать. 

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

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

Вот +100500!

Прям уж и позмеиться в пятницу нельзя :-)

Можно и нужно, вовремя только ))

kostyamat
Offline
Зарегистрирован: 16.11.2017

А ещё, вам стоит аккуратнее с типами переменных и их размерностью работать. У Ардуино всего лишь несколько килобайт ОЗУ

Вот это
int j = digitalRead(btn_dig);
прокатывает, но идиологически не верно.

digitalRead возвращает boolean, то есть переменная нужна boolean, размерностью в один байт (в составе структуры ее вообще в один бит можно упаковать), а вы читаете в int, размерностью в два байта, а в 32-х разрядных контроллерах в целых 4 байта. Программа то работать будет, компилятор это пропустит. Но зачем разбрасываться памятью? Да и смотрится это коряво.

Старайтесь осмысленно и явно описывать типы переменных. Это формирует правильное мышление, и убережёт от возможных ошибок в будущих проектах. Стоит почитать о типах/размерах.

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

Если бы новички старались, то все бы вели себя иначе. Увы, большинство приходят, чтобы спросить: "Дядя, а как этот текст с английского перевести?". При обсуждении начинают в бутылку лезть, объясняя, что форумы - это для того, чтобы им помогали переводить, а не учили всяким паст-перфектам. Поэтому всем последующим вопросителям сразу достаётся сполна, чтобы понять - тратить на них время или нет.

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

Zero-Botanik пишет:

Можно и нужно, вовремя только ))

Так куда уж вовремянее? Пятница ж!

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

А еще в книге нельзя написать тупой вопрос, а потом книжка сама написала и расжевала ответ и в ротик положила. Тяжело с книгами у новичков. 

Duino A.R.
Offline
Зарегистрирован: 25.05.2015

Zero-Botanik пишет:
Миллионы дают совет: читай. А где?!!!

За миллионы не скажу, а я лично читаю и на работе, и дома. На работе - по-тихому, а дома - уже открыто, практически, вызывающе.

Zero-Botanik пишет:
Вот здесь ЕвгенийП давал ссылку, правда в других целях,

О целях ЕвгенийП могу только догадываться, а вот по ссылке его книжку скачал и осваиваю. И со своей не университетской колокольни испытываю чувство глубокого удовлетворения от книжки Керниган, Ритчи "Язык программирования СИ" и чувство благодарности ЕвгенийП за рекомендацию. Он оградил меня от чтения всякой дребедени по ранее не освоенной мною теме.