A0-A4 как цифровые пины
- Войдите на сайт для отправки комментариев
Втр, 21/01/2020 - 01:33
пытаюсь подключить 2 клавиатуры по 16 символом.
последнею подключаю к пинам аналоговым и включаю их на вход и выход.
кажется как выход A0-A4 работать не будет?
int PinOut[4] {5, 4, 3, 2}; // пины выходы int PinIn[4] {9, 8, 7, 6}; // пины входа int PinOut2[4] {14, 12, 11, 10}; int PinIn2[4] {18, 17, 16, 15}; const char value[4][4] { {'A', '4', '7', '*'}, {'2', '5', '8', '0' }, {'3', '6', '9', '#'}, {'s', 'B', 'C', 'D'} }; const char value2[4][4] { {'A', '4', '7', '*'}, {'2', '5', '8', '0' }, {'3', '6', '9', '#'}, {'s', 'B', 'C', 'D'} }; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode (2, OUTPUT); pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, INPUT); digitalWrite(6, HIGH); pinMode (7, INPUT); digitalWrite(7, HIGH); pinMode (8, INPUT); digitalWrite(8, HIGH); pinMode (9, INPUT); digitalWrite(9, HIGH); //======================вторая клавиатура===================== pinMode (10, OUTPUT); pinMode (11, OUTPUT); pinMode (12, OUTPUT); pinMode (14, OUTPUT); // ЗДЕСЬ ПРОБЛЕМА pinMode (15, INPUT); // ЗДЕСЬ ПРОБЛЕМА digitalWrite(15, HIGH); // ЗДЕСЬ ПРОБЛЕМА pinMode (16, INPUT); // ЗДЕСЬ ПРОБЛЕМА digitalWrite(16, HIGH); // ЗДЕСЬ ПРОБЛЕМА pinMode (17, INPUT); // ЗДЕСЬ ПРОБЛЕМА digitalWrite(17, HIGH); // ЗДЕСЬ ПРОБЛЕМА pinMode (18, INPUT); // ЗДЕСЬ ПРОБЛЕМА digitalWrite(18, HIGH); // ЗДЕСЬ ПРОБЛЕМА //====================конец вторая клавиатура=================== } void matrix () { for (int i = 1; i <= 4; i++) { digitalWrite(PinOut[i - 1], LOW); for (int j = 1; j <= 4; j++) { if (digitalRead(PinIn[j - 1]) == LOW) { Serial.println( value[i - 1][j - 1]); if ( value[i - 1][j - 1] == 'D' ){ Serial.println("TEST"); } delay(175); } } digitalWrite(PinOut[i - 1], HIGH); } } void matrix2 () // создаем функцию для чтения кнопок { for (int z = 1; z <= 4; z++) // цикл, передающий 0 по всем столбцам { digitalWrite(PinOut2[z - 1], LOW); for (int x = 1; x <= 4; x++) { if (digitalRead(PinIn2[x - 1]) == LOW) { Serial.println( value2[z - 1][x - 1]); if ( value2[z - 1][x - 1] == 'D' ){ Serial.println("TEST"); } delay(300); } } digitalWrite(PinOut2[z - 1], HIGH); } } void loop() { matrix(); matrix2(); //вторая клавиатура 16 кнопок //Serial.println( value[1][1]); //первая цифра номер колонки. вторая это номер столбца . число 5 из массива //delay(1000); }
Поделюсь догадкой. Может Arduino IDE не знает таких названий пинов, как 14, 15 и т.д. И это надо указать в начале?
#define 14 A0
#define 15 A1
#define 16 A2
#define 17 A3
#define 18 A4
пытаюсь подключить 2 клавиатуры по 16 символом.
последнею подключаю к пинам аналоговым и включаю их на вход и выход.
кажется как выход A0-A4 работать не будет?
Если речь идет об ардуино Уно, Нано, Микро, Мега и тп, то прины А0-А4 прекрасно работают как цифровые и на вход и на выход.
А в чем, конкретно, проблема?
кажется как выход A0-A4 работать не будет?
Перекреститесь и, кстати, используйте нормальные имена A0-A4, а не большие номера. Всё нормально работает.
Поделюсь догадкой. Может Arduino IDE не знает таких названий пинов, как 14, 15 и т.д. И это надо указать в начале?
#define 14 A0
#define 15 A1
#define 16 A2
#define 17 A3
#define 18 A4
Не сразу, но оценил! Зачётно!
Поделюсь догадкой. Может Arduino IDE не знает таких названий пинов, как 14, 15 и т.д. И это надо указать в начале?
#define 14 A0
А разве у ардуин на базе amega328 они по дефолту так не замаплены?
я на 1.8.5. попробовал -
pinMode(15, OUTPUT);
компилирует. Может в разных версиях IDE по разному?
У него может быть какой-то особенный контроллер, для которого не указаны эти цифровые названия.
Это всё от не понимания сути микроконтроллера. Основные ноги МК изначально всегда цифровые и настроенны как вход по сбросу. (328 в квадратном корпусе пока пропускаем). Что бы их сделать выходами или аналоговыми входами или какими либо функциональными, типа i2c, надо дать команды на их инициализацию. Ардуина ИДЕ это делает незаметно для пользователя в процедуре init, которую вызывает до setup. Кроме того обзывает все ноги согласно проведённой инициализации. В чём легко убедиться, посмотрев в ядре ардуино .h файл с дефайнами по пинам. Там можно увидеть, что все ноги пронумерованы от нуля до максимума простыми числами, потом некоторым даны функциональные имена - синонимы, типа А0. Так что при написании программы оказывается что одну и ту же ногу-пин можно называть например и A0 и 14 и PC0 . Конечная программа от этого не изменится.
#define 14 A0
А разве у ардуин на базе amega328 они по дефолту так не замаплены?
Так - нет :-)
спасибо всем.
странно конечно. попробую все варианты с постов. основной провод A0 вроде может на нем контакта нет.
контроллер wavgat 328 pro mini 5v
до этого проверял через
digitalRead(14);
работало нормально
контроллер wavgat 328 pro mini 5v
контроллер wavgat 328 pro mini 5v
сам в шоке от его работы :)
кажется как выход A0-A4 работать не будет?
Перекреститесь и, кстати, используйте нормальные имена A0-A4, а не большие номера. Всё нормально работает.
у меня работает и с ненормальными )))
у меня работает и с ненормальными )))
У всех работает, просто, когда ТС плавает ВО ВСЁМ - не надо полодить сущности. Нет ведь никакой уверенности, что он правильные номера поставит - так что пусть пишет то, что написано шелкографией возле пинов и не выпендривается (впрочем, уже выяснилось, что у него вавгат, только он сразу не сказал, чтобы потроллить и поиздеваться).
только он сразу не сказал, чтобы потроллить и поиздеваться...
да, а троллинг тут - надо ещё заслужить )))
да забыл дописать. туплю :)
с ним постоянные проблемы. на нормальное человеческой атмеге все заработало.
правда в скетче стояла скорость 9600 а в мониторе что бы не было крякозябры выставил 4800 кажется. на 1 ниже. но это из за TTL преобразователя дешевого. кто то писал об этом раньше что такое же было. а вот менять скорость на 1 ниже для wavgat не надо :)
а как можно этот суперКитайский wavgat заставить и на A0-A4 работать?
а как можно этот суперКитайский wavgat заставить и на A0-A4 работать?
заменить на атмегу328?
заменить на атмегу328?
Не наш метод! А как же "всегда есть место подвигу"?
да хотел бы этот wavgat все таки пихнуть на клавиатуру и забыть за него :)
атмегу328 жалко :)
да забыл дописать. туплю :)
с ним постоянные проблемы. на нормальное человеческой атмеге все заработало.
правда в скетче стояла скорость 9600 а в мониторе что бы не было крякозябры выставил 4800 кажется. на 1 ниже. но это из за TTL преобразователя дешевого. кто то писал об этом раньше что такое же было. а вот менять скорость на 1 ниже для wavgat не надо :)
а как можно этот суперКитайский wavgat заставить и на A0-A4 работать?
это не из-за TTL, а то, что аддон используете кривой
да забыл дописать. туплю :)
с ним постоянные проблемы. на нормальное человеческой атмеге все заработало.
правда в скетче стояла скорость 9600 а в мониторе что бы не было крякозябры выставил 4800 кажется. на 1 ниже. но это из за TTL преобразователя дешевого. кто то писал об этом раньше что такое же было. а вот менять скорость на 1 ниже для wavgat не надо :)
а как можно этот суперКитайский wavgat заставить и на A0-A4 работать?
это не из-за TTL, а то, что аддон используете кривой
я снова ошибся. я запрограммировал нормальную атмегу38 через wavgat. забыл поменять на pro mini в меню инструменты - плата :)
поэтому наверное из за этого и тупило
инфы в интернете нет о wavgat и A0 как digital. наверное просто придется выбросить 4 кнопки с клавиатуры .
а вообще надо было делать на mega все (