Передача данных между двумя Arduino

Otheral
Offline
Зарегистрирован: 22.10.2012

Есть Mega и Uno

К уно подсоединен энкодер и запущен тестовый скетч библиотеки Encoder.h

#include <Encoder.h>

Encoder myEnc(11, 12);

void setup() 
{
  Serial.begin(9600);
}

int oldPosition  = -999;

void loop() 
{
  int newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
  }
}

Работает хорошо, выдает при повороте в монитор порта значения при повороте по часовой стрелке от 0 и по возрастанию, когда крутишь в другую сторону уменьшает до 0 и далее уходит в минус.

 

Мега должна получать эти значения, но выдает вместо положенного вот такое((( причем на один щелчок энкодера сразу несколько значений, которые не соответствуют уно.

I received: 10
I received: 55
I received: 55
I received: 13
 
Код Мега
int incomingByte=0;// переменная для хранения полученного байта
int rotateByte = 0;
 
void setup() {
    Serial.begin(9600); // устанавливаем последовательное соединение
        Serial1.begin(9600); // устанавливаем последовательное соединение
}
 
 
void loop() {
   if (Serial1.available() > 0)
  { 
        incomingByte = Serial1.read();
        if (incomingByte!=-1)
        { // отсылаем то, что получили
        Serial.print("I received: ");
        Serial.println(incomingByte);
            
}}}

Подскажите что не так, и как лучше наладить передачу данных?

 

 
Otheral
Offline
Зарегистрирован: 22.10.2012

В скетче для уно

Serial.write(newPosition); вместо print

Coolerr
Offline
Зарегистрирован: 30.06.2014

Не стал заводить другую тему. Ситуация такая. Как у ТС есть мега и уно, мега передает

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  char x = 64;
  Serial.write('D');
  Serial.write(x);
delay(1000);
}

а уно принимает 

void setup()
{
  Serial.begin(9600);
}
void loop()
{
  if(Serial.available())
  {
    if(Serial.read() == 'D')
   { 
     delay(10);
     char x = Serial.read();
      Serial.print(x,DEC);
    
   }
  }
}

по проводу все прекрасно. Но при замене провода между дуинами передатчиком 433мгц и приемником на ту же частоту. Приема не происходит. Приемник без уно все принимает, по осцилу принимаемый сигнал идентичен передаваемому

http://www.ebay.com/itm/STX882-ASK-Transmitter-Module-SRX882-Superheterodyne-Receiver-Module-Antenna-/331173237111 радио такое.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Уровни? Может приёмник не раскачивает TTL на такую нагрузку? Или питание там не то, или пины не те.

Coolerr
Offline
Зарегистрирован: 30.06.2014

Вешаю светодиод на выход приемника, мигает. По осцилу амплитуда 5в. Как только ширяю в дуину, диод зажигается и горит т.к. Serial в ожидании 1, и встроенный диод RX молчит . Пины приемника VCC, GND, CS, DATA. CS спящий режим 1-ENABLE, 0-DISABLE. На Уно 0-RX, или любой при использовании SoftwareSerial. Основная фигня в том, что даже закомментив идентификатор пакета if(Seria.read()=='D'). Просто принять, что угодно не выходит.

Coolerr
Offline
Зарегистрирован: 30.06.2014

Решил таки проверить уровни. В роли передатчика тини2313 с тем же кодом. Полевик на дата приемника расставил точки над "ё". Усе завелось. Спасибо.

Leshiy
Offline
Зарегистрирован: 19.07.2014

Хм, интересное кино. Кстати, не дороговат комплект 7 баксов? Видел по 2.

https://www.tindie.com/search/?q=srx

Coolerr
Offline
Зарегистрирован: 30.06.2014

та не, эт я ссылку как картинку вставлял, покупал на али за 150р.

Coolerr
Offline
Зарегистрирован: 30.06.2014

по 2 видел только на сверхгенераторе. 

Leshiy
Offline
Зарегистрирован: 19.07.2014

Ну вон на тинде тик в тик ваш. Правда доставка 140 рублей :)

Coolerr
Offline
Зарегистрирован: 30.06.2014

В общем, эпопея закончилась предусилителем на КТ315Б и полевиком, в итоге получаю то что отправлял.

99problems
Offline
Зарегистрирован: 18.09.2014

Я так понимаю, зря я купил себе эту пару? =D В итоге, если это на полевике, то какая схема получилась? Возможно начертить?

itjunky
Offline
Зарегистрирован: 15.09.2014

А какая конечная задача решается двумя этими девайсами? Я хотел логгировать на комп и иметь возможность иногда подправить прошивку, не разбирая устройства и не поднося его к компу. В итоге идеально подошла связка арудино с распберри. Хотя я тут подумываю, что и так все датчики можно напрямую на распберри навесить.