Официальный сайт компании Arduino по адресу arduino.cc
Обмен данными по UART
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Добрый день, коллеги!
У меня возникла проблема с объединением 2х ардуинов по UART. Пока не приехали модули на MAX485 создаю алгоритм работы на UART, ну а потом уже и на RS-485 все перекину...
Вообщем суть какая: 2 ардуинки первая - mini, вторая - mega 2560. К мини подключен переменный резистор (pin A0) и два светодиода (pin 8, pin 9) - эти светодиоды эмуляторы ключа реле, на mege стоит LCD и две кнопки (pin 46, pin 47). Задача состоит в том чтобы значение A0 mini перередовалось постоянно mege и выводилось на дисплей и в этот же момент чтобы действовали кнопки при нажатии которых на mege загарались бы светодиоды на mini.
Создавши код у меня никак не получается создать протокол для обмена данными. По отдельности кнопки и значение A0 mini работают, но как только загоняю все в один скетч кнопки начинают криво работать.
Вот собственно и скетчи
MINI
void setup() { Serial.begin(19200); pinMode(8, OUTPUT); pinMode(9, OUTPUT); } void loop() { digitalWrite(9, 0); digitalWrite(8, 0); byte x=analogRead(A0)/4; Serial.print("S"); Serial.write(x); Serial.println(); delay(332); } void serialEvent() { if (Serial.available()) { digitalWrite(9, 0); digitalWrite(8, 0); char inChar = (char)Serial.read(); if (inChar=='B') { delay(10); inChar = (char)Serial.read(); if (inChar=='1') { //Serial.print("B1=1"); digitalWrite(9, HIGH); delay(413); } delay(10); inChar = (char)Serial.read(); if (inChar=='1') { // Serial.print("B2=1"); digitalWrite(8,1); delay(413); } } } }
MEGA 2560
#include <LiquidCrystal.h> LiquidCrystal lcd(4, 5, 10, 11, 12, 9); #define LEFT 46 #define RIGHT 47 byte firstSensor = 0; byte secondSensor = 0; void setup() { lcd.begin(16, 2); pinMode(LEFT, INPUT); pinMode(RIGHT, INPUT); Serial.begin(19200); } void loop() { firstSensor = digitalRead(LEFT); secondSensor = digitalRead(RIGHT) ; delay(10); if (firstSensor != secondSensor){ Serial.print("B"); Serial.print(!firstSensor); Serial.print(!secondSensor); delay(413); } } void serialEvent() { if (Serial.available()) { // get the new byte: byte inChar = (char) Serial.read(); if (inChar == 'S') { //delay(200); byte inChar = (char) Serial.read(); digitalWrite(22,inChar); if (inChar <10) { lcd.setCursor(12, 0); lcd.print(inChar); lcd.print(' ');} else if (inChar <100){ lcd.setCursor(12, 0); lcd.print(inChar); lcd.print(' ');} else{ lcd.setCursor(12, 0); lcd.print(inChar); Serial.print('inChar');} delay(332); } } }
Подскажите, что не так?
Заранее спасибо!
http://www.billporter.info/2011/05/30/easytransfer-arduino-library/
Спасибо большое, ознакомлюсь!
А можно как-нибудь без дополнительных библиотек реализовать обмен данными?