Каждая плата Arduino питается от своего блока питания? Т.е. питание не общее, так? Вопрос возник, потому что есть боязнь спалить платы, ведь они соединены проводом GND помимо Rx и Tx. :)
Доброго времени суток, zkv311ot1986. Вы правильно догадались, если их отключить друг от друга, то можно загружать новый скетч! А если соединить их через конвертирующий модуль (Урок 26.2), то и отключать Arduin'ки от шины, для загрузки скетча, не нужно.
подключайте по Software.Serial в любой удобный пин, тогда не придется дергать провода. Если используете MEGA - там есть еще 3 UART, которые можно не отключать при прошивке
// Подключаем библиотеки: #include // подключаем библиотеку для работы с шиной I2C #include // подключаем библиотеку для работы с LCD дисплеем #include // подключаем библиотеку для работы с матричной клавиатурой // Объявляем переменные и константы: LiquidCrystal_I2C lcd(0x27,16,2); // объявляем переменную для работы с LCD дисплеем, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2) iarduino_KB KB(9,8,7,6,5,4,3,2); // объявляем переменную для работы с матричной клавиатурой, указывая номера aeduino подключенные к шлейфу клавиатуры, начиная с первого вывода шлейфа void setup(){ Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод KB.begin(KB1); // инициируем клавиатуру (KB1 - эастичная матричная клавиатура 4х4) lcd.init(); // инициируем LCD дисплей lcd.backlight(); // включаем подсветку LCD дисплея lcd.setCursor(0, 0); // устанавливаем курсор в позицию: столбец 0, строка 0 lcd.print("iArduino.ru"); // выводим текст "iArduino.ru" lcd.setCursor(0, 1); // устанавливаем курсор в позицию: столбец 0, строка 1 lcd.print("Received data:"); // выводим текст "Received data:" } void loop(){ if(KB.check(KEY_DOWN)){ // если нажимается кнопка (KEY_DOWN - нажимается, KEY_UP - отпускается, KEY_PRESS - удерживается), то ... Serial.print(KB.getChar); // отправляем символ кнопки в последовательный порт (для вывода цифры кнопки используйте KB.getNum ) } if(Serial.available()>0){ // если в последовательном порту есть данные для чтения, то ... lcd.setCursor(15, 1); // устанавливаем курсор в позицию: столбец 15, строка 1 lcd.print(char(Serial.read())); // выводим байт данных в виде символа, из последовательного порта на LCD дисплей } }
Классное объяснение!!! Супер!!!
А 3 ардуины так соединить можно?
Каждая плата Arduino питается от своего блока питания? Т.е. питание не общее, так?
Вопрос возник, потому что есть боязнь спалить платы, ведь они соединены проводом GND помимо Rx и Tx. :)
Мы использовали отдельное питание, для демонстрации, что для передачи надо только TX, RX и GND
Получается их потом не перепрошить? или если отключить их друг от дружки можно будет перепрошить?
Доброго времени суток, zkv311ot1986. Вы правильно догадались, если их отключить друг от друга, то можно загружать новый скетч! А если соединить их через конвертирующий модуль (Урок 26.2), то и отключать Arduin'ки от шины, для загрузки скетча, не нужно.
+Павел Панькин спасибо.
подключайте по Software.Serial в любой удобный пин, тогда не придется дергать провода. Если используете MEGA - там есть еще 3 UART, которые можно не отключать при прошивке
а нахрена этот бутерброд сверху. Что он даёт в данном проекте?
Удобство подключения
А можно таким же способом настроить взаимодействие между ардуино и esp01? Чтобы данные передавать не через АТ команды
Между любыми устройствами с аппаратным UART, хотя в целом, наверное, можно и программный использовать
Я такой алегарх , что у меня есть 2 оригинальных arduino uno
7 лет назад... Емае)
У кого есть скетч с этого видео?
// Подключаем библиотеки:
#include // подключаем библиотеку для работы с шиной I2C
#include // подключаем библиотеку для работы с LCD дисплеем
#include // подключаем библиотеку для работы с матричной клавиатурой
// Объявляем переменные и константы:
LiquidCrystal_I2C lcd(0x27,16,2); // объявляем переменную для работы с LCD дисплеем, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2)
iarduino_KB KB(9,8,7,6,5,4,3,2); // объявляем переменную для работы с матричной клавиатурой, указывая номера aeduino подключенные к шлейфу клавиатуры, начиная с первого вывода шлейфа
void setup(){
Serial.begin(9600); // открываем последовательный порт на скорости 9600 бод
KB.begin(KB1); // инициируем клавиатуру (KB1 - эастичная матричная клавиатура 4х4)
lcd.init(); // инициируем LCD дисплей
lcd.backlight(); // включаем подсветку LCD дисплея
lcd.setCursor(0, 0); // устанавливаем курсор в позицию: столбец 0, строка 0
lcd.print("iArduino.ru"); // выводим текст "iArduino.ru"
lcd.setCursor(0, 1); // устанавливаем курсор в позицию: столбец 0, строка 1
lcd.print("Received data:"); // выводим текст "Received data:"
}
void loop(){
if(KB.check(KEY_DOWN)){ // если нажимается кнопка (KEY_DOWN - нажимается, KEY_UP - отпускается, KEY_PRESS - удерживается), то ...
Serial.print(KB.getChar); // отправляем символ кнопки в последовательный порт (для вывода цифры кнопки используйте KB.getNum )
}
if(Serial.available()>0){ // если в последовательном порту есть данные для чтения, то ...
lcd.setCursor(15, 1); // устанавливаем курсор в позицию: столбец 15, строка 1
lcd.print(char(Serial.read())); // выводим байт данных в виде символа, из последовательного порта на LCD дисплей
}
}