Skocz do zawartości

Czy można podłączyć drugi żyroskop DFRobot SEN0386 w jednym arduino UNO


MKopec

Pomocna odpowiedź


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  

#include <DFRobot_WT61PC.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);

// software serial #2: RX = digital pin 8, TX = digital pin 9
// on the Mega, use other pins instead, since 8 and 9 don't work on the Mega

SoftwareSerial portTwo(8, 9);
//Use software serial port RX:10,TX:11


DFRobot_WT61PC sensor_1(&mySerial);
DFRobot_WT61PC sensor_2(&portTwo);

void setup()
{
   //Use Serial as debugging serial port 
  Serial.begin(115200);
  //Use software serial port mySerial as communication seiral port 
  mySerial.begin(9600);
  //Revise the data output data frequncy of sensor FREQUENCY_0_1HZ for 0.1Hz, FREQUENCY_0_5HZ for 0.5Hz, FREQUENCY_1HZ for 1Hz, FREQUENCY_2HZ for 2Hz, 
  //                        FREQUENCY_5HZ for 5Hz, FREQUENCY_10HZ for 10Hz, FREQUENCY_20HZ for 20Hz, FREQUENCY_50HZ for 50Hz, 
  //                        FREQUENCY_100HZ for 100Hz, FREQUENCY_125HZ for 125Hz, FREQUENCY_200HZ for 200Hz.
  portTwo.begin(9600);
  sensor_1.modifyFrequency(FREQUENCY_50HZ);
sensor_2.modifyFrequency(FREQUENCY_50HZ);
}

void loop()
{
  if (sensor_1.available());(sensor_2.available()); {
   
    Serial.print("Angle\t"); Serial.print(sensor_1.Angle.X); Serial.print("\t"); Serial.print(sensor_1.Angle.Y); Serial.print("\t"); Serial.println(sensor_1.Angle.Z); //angle information of X, Y, Z
    Serial.print("Angle\t"); Serial.print(sensor_2.Angle.X); Serial.print("\t"); Serial.print(sensor_2.Angle.Y); Serial.print("\t"); Serial.println(sensor_2.Angle.Z); //angle information of X, Y, Z 
    Serial.println(" ");
  }
  lcd.init();                      // initialize the lcd 
 
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("X "); lcd.print(sensor_1.Angle.X); lcd.print(sensor_2.Angle.X);
  lcd.setCursor(0,1);
  lcd.print("Y "); lcd.print(sensor_1.Angle.Y);
  lcd.setCursor(0,2);
  lcd.print("Z "); lcd.print(sensor_1.Angle.Z);
  lcd.setCursor(0,3);
  lcd.print("kat");
}

Racja już mam portTwo ale teraz są dane z drugiego czujnika a nie ma z pierwszego. Co jeszcze poprawić?

monitor portu 2.jpg

Link do komentarza
Share on other sites

1 minutę temu, MKopec napisał:

Racja już mam portTwo ale teraz są dane z drugiego czujnika a nie ma z pierwszego. Co jeszcze poprawić?

Z drugiego bo podczas uruchomienia ".begin()" nasluchyjesz wlasnie z tego uarta...musisz sie przelaczac pomiedzy nimi...tak jak pisalem "listen()"..nie wiem jak to dziala, te zyroskopy, ale jak to nie problem to np. nasluchuj jeden uart pol sekundy a pozniej drugi pol sekundy...i ten dziwny zapis "available()" w jednym if rozpisz na dwa...(no ja tak jeszcze nie widzialem)

  • Lubię! 1
Link do komentarza
Share on other sites

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  

#include <DFRobot_WT61PC.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);

// software serial #2: RX = digital pin 8, TX = digital pin 9
// on the Mega, use other pins instead, since 8 and 9 don't work on the Mega

SoftwareSerial portTwo(8, 9);
//Use software serial port RX:10,TX:11


DFRobot_WT61PC sensor_1(&mySerial);
DFRobot_WT61PC sensor_2(&portTwo);

void setup()
{
   //Use Serial as debugging serial port 
  Serial.begin(115200);
  //Use software serial port mySerial as communication seiral port 
  mySerial.begin(9600);
  //Revise the data output data frequncy of sensor FREQUENCY_0_1HZ for 0.1Hz, FREQUENCY_0_5HZ for 0.5Hz, FREQUENCY_1HZ for 1Hz, FREQUENCY_2HZ for 2Hz, 
  //                        FREQUENCY_5HZ for 5Hz, FREQUENCY_10HZ for 10Hz, FREQUENCY_20HZ for 20Hz, FREQUENCY_50HZ for 50Hz, 
  //                        FREQUENCY_100HZ for 100Hz, FREQUENCY_125HZ for 125Hz, FREQUENCY_200HZ for 200Hz.
  portTwo.begin(9600);
  sensor_1.modifyFrequency(FREQUENCY_50HZ);
sensor_2.modifyFrequency(FREQUENCY_50HZ);
}

void loop()
{
  if (sensor_1.available()); {
   
    Serial.print("Angle\t"); Serial.print(sensor_1.Angle.X); Serial.print("\t"); Serial.print(sensor_1.Angle.Y); Serial.print("\t"); Serial.println(sensor_1.Angle.Z); //angle information of X, Y, Z
   
    Serial.println(" ");
    listen(500)
   if (sensor_2.available());
    Serial.print("Angle\t"); Serial.print(sensor_2.Angle.X); Serial.print("\t"); Serial.print(sensor_2.Angle.Y); Serial.print("\t"); Serial.println(sensor_2.Angle.Z); //angle information of X, Y, Z 
   Serial.println(" ");
   listen(500)
  }
  lcd.init();                      // initialize the lcd 
 
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("X "); lcd.print(sensor_1.Angle.X); lcd.print(sensor_2.Angle.X);
  lcd.setCursor(0,1);
  lcd.print("Y "); lcd.print(sensor_1.Angle.Y);
  lcd.setCursor(0,2);
  lcd.print("Z "); lcd.print(sensor_1.Angle.Z);
  lcd.setCursor(0,3);
  lcd.print("kat");
}

A więc znów coś poprawiłem ale znów nie jest dobrze. Tak jak pisałem jestem zielony. Co mam dopisać żeby działało?

  • Lubię! 1
Link do komentarza
Share on other sites

 


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  

#include <DFRobot_WT61PC.h>
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);

// software serial #2: RX = digital pin 8, TX = digital pin 9
// on the Mega, use other pins instead, since 8 and 9 don't work on the Mega

SoftwareSerial portTwo(8, 9);
//Use software serial port RX:10,TX:11


DFRobot_WT61PC sensor_1(&mySerial);
DFRobot_WT61PC sensor_2(&portTwo);

void setup()
{
   //Use Serial as debugging serial port 
  Serial.begin(115200);
  //Use software serial port mySerial as communication seiral port 
  mySerial.begin(9600);
  listen(500);
  //Revise the data output data frequncy of sensor FREQUENCY_0_1HZ for 0.1Hz, FREQUENCY_0_5HZ for 0.5Hz, FREQUENCY_1HZ for 1Hz, FREQUENCY_2HZ for 2Hz, 
  //                        FREQUENCY_5HZ for 5Hz, FREQUENCY_10HZ for 10Hz, FREQUENCY_20HZ for 20Hz, FREQUENCY_50HZ for 50Hz, 
  //                        FREQUENCY_100HZ for 100Hz, FREQUENCY_125HZ for 125Hz, FREQUENCY_200HZ for 200Hz.
  portTwo.begin(9600);
  listen(500);
  sensor_1.modifyFrequency(FREQUENCY_50HZ);
sensor_2.modifyFrequency(FREQUENCY_50HZ);
}

void loop()
{
  if (sensor_1.available()); {
   
    Serial.print("Angle\t"); Serial.print(sensor_1.Angle.X); Serial.print("\t"); Serial.print(sensor_1.Angle.Y); Serial.print("\t"); Serial.println(sensor_1.Angle.Z); //angle information of X, Y, Z
   
    Serial.println(" ");
    
   if (sensor_2.available());
    Serial.print("Angle\t"); Serial.print(sensor_2.Angle.X); Serial.print("\t"); Serial.print(sensor_2.Angle.Y); Serial.print("\t"); Serial.println(sensor_2.Angle.Z); //angle information of X, Y, Z 
   Serial.println(" ");
  
  }
  lcd.init();                      // initialize the lcd 
 
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("X "); lcd.print(sensor_1.Angle.X); lcd.print(sensor_2.Angle.X);
  lcd.setCursor(0,1);
  lcd.print("Y "); lcd.print(sensor_1.Angle.Y);
  lcd.setCursor(0,2);
  lcd.print("Z "); lcd.print(sensor_1.Angle.Z);
  lcd.setCursor(0,3);
  lcd.print("kat");
}

Tak też nie działa. Jak używać listen()  ?

 listen(500);
   ^~~~~~
   system
exit status 1
'listen' was not declared in this scope

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Spróbuj jeszcze tak:

if (sensor_1.available()) {
   
    Serial.print("Angle\t"); Serial.print(sensor_1.Angle.X); Serial.print("\t"); Serial.print(sensor_1.Angle.Y); Serial.print("\t"); 		       Serial.println(sensor_1.Angle.Z); //angle information of X, Y, Z
 Serial.println(" ");
}    
   if (sensor_2.available()) {
    Serial.print("Angle\t"); Serial.print(sensor_2.Angle.X); Serial.print("\t"); Serial.print(sensor_2.Angle.Y); Serial.print("\t"); Serial.println(sensor_2.Angle.Z); //angle information of X, Y, Z 
   Serial.println(" ");
  
  }

 

Link do komentarza
Share on other sites

(edytowany)
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  

#include <DFRobot_WT61PC.h>
#include <SoftwareSerial.h>
  
SoftwareSerial mySerial(10, 11);
SoftwareSerial portTwo(8, 9);

DFRobot_WT61PC sensor_1(&mySerial);
DFRobot_WT61PC sensor_2(&portTwo);

uint8_t stan = 0;
uint32_t last = 0;

void setup()
{
   
  Serial.begin(115200);
  mySerial.begin(9600);
  portTwo.begin(9600);
  
  sensor_1.modifyFrequency(FREQUENCY_50HZ);
sensor_2.modifyFrequency(FREQUENCY_50HZ);
}

void loop()
{
  if (millis() - last > 1000UL && stan == 0) { 
    mySerial.listen();
    stan = 1;
    last = millis();
   }
  if (millis() - last > 1000UL && stan == 1) { 
    portTwo.listen();
    last = millis();
    stan = 0;
    }
  
  
  if (sensor_1.available())  {
   
    Serial.print("Angle\t"); Serial.print(sensor_1.Angle.X); Serial.print("\t"); Serial.print(sensor_1.Angle.Y); Serial.print("\t"); Serial.println(sensor_1.Angle.Z); //angle information of X, Y, Z
    }
   
    Serial.println(" ");
   
   if (sensor_2.available())  {
    Serial.print("Angle\t"); Serial.print(sensor_2.Angle.X); Serial.print("\t"); Serial.print(sensor_2.Angle.Y); Serial.print("\t"); Serial.println(sensor_2.Angle.Z); //angle information of X, Y, Z 
   Serial.println(" ");
   }
  lcd.init();                      // initialize the lcd 
 
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("X "); lcd.print(sensor_1.Angle.X); lcd.print(sensor_2.Angle.X);
  lcd.setCursor(0,1);
  lcd.print("Y "); lcd.print(sensor_1.Angle.Y);
  lcd.setCursor(0,2);
  lcd.print("Z "); lcd.print(sensor_1.Angle.Z);
  lcd.setCursor(0,3);
  lcd.print("kat");
}

Spruboj tego...

bo "listen()" to nie "delay()" a komenda ktora powoduje nasluchiwanie jednego uarta

Edytowano przez farmaceuta
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Program Farmaceuty

Serdeczne podziękowania dla WAS WSZYSTKICH.

DZIAŁA!!!!

Pozostały drobne szlify z wyświetlaniem lcd.

Jest super.

Dziękuje

  • Lubię! 1
Link do komentarza
Share on other sites

2 minuty temu, MKopec napisał:

Co jestem wam winien za pomoc?

Spoko😉 po to to forum tu jest zeby pomoc...zmieniajac "1000UL" na inna liczbe zmienisz odswiezanie...poprostu po 1000 ms zmieniaja sie teraz uarty...jak dasz 500 to beda zmieniac sie co pol sekundy

Link do komentarza
Share on other sites

Zapamiętam tą lekcje. Może kiedyś spotkamy się przy piwie.

Jeszcze raz dziękuje i pozdrawiam.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  

#include <DFRobot_WT61PC.h>
#include <SoftwareSerial.h>
  
SoftwareSerial mySerial(10, 11);
SoftwareSerial portTwo(8, 9);

DFRobot_WT61PC sensor_1(&mySerial);
DFRobot_WT61PC sensor_2(&portTwo);

uint8_t stan = 0;
uint32_t last = 0;

void setup()
{
   
  Serial.begin(115200);
  mySerial.begin(9600);
  portTwo.begin(9600);
  
  sensor_1.modifyFrequency(FREQUENCY_50HZ);
sensor_2.modifyFrequency(FREQUENCY_50HZ);
}

void loop()
{
  if (millis() - last > 1000UL && stan == 0) { 
    mySerial.listen();
    stan = 1;
    last = millis();
   }
  if (millis() - last > 1000UL && stan == 1) { 
    portTwo.listen();
    last = millis();
    stan = 0;
    }
  
  
  if (sensor_1.available())  {
   
    Serial.print("Angle\t"); Serial.print(sensor_1.Angle.X); Serial.print("\t"); Serial.print(sensor_1.Angle.Y); Serial.print("\t"); Serial.println(sensor_1.Angle.Z); //angle information of X, Y, Z
    }
   
    Serial.println(" ");
   
   if (sensor_2.available())  {
    Serial.print("Angle\t"); Serial.print(sensor_2.Angle.X); Serial.print("\t"); Serial.print(sensor_2.Angle.Y); Serial.print("\t"); Serial.println(sensor_2.Angle.Z); //angle information of X, Y, Z 
   Serial.println(" ");
   }
  lcd.init();                      // initialize the lcd 
 
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("X "); lcd.print(sensor_1.Angle.X); lcd.print(" X1 "); lcd.print(sensor_2.Angle.X);
  lcd.setCursor(0,1);
  lcd.print("Y "); lcd.print(sensor_1.Angle.Y); lcd.print(" Y1 "); lcd.print(sensor_2.Angle.Y);
  lcd.setCursor(0,2);
  lcd.print("Z "); lcd.print(sensor_1.Angle.Z); lcd.print(" Z1 "); lcd.print(sensor_2.Angle.Z);
  lcd.setCursor(0,3);
  lcd.print("kat");
}

 

20210504_215419.jpg

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.