Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'MPU6050'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - DIY
    • Projekty - DIY roboty
    • Projekty - DIY (mini)
    • Projekty - DIY (początkujący)
    • Projekty - DIY w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie

Kategorie

  • Quizy o elektronice
  • Quizy do kursu elektroniki I
  • Quizy do kursu elektroniki II
  • Quizy do kursów Arduino
  • Quizy do kursu STM32L4
  • Quizy do pozostałych kursów

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Imię


Strona

Znaleziono 5 wyników

  1. W końcu się zebrałem i złożyłem ustrojstwo do kupy więc niniejszym chwalę się pierwszym projektem nadającym się do chwalenia 😛 Projekt oparty o F401CCU6, sterowanie za pomocą trzech przycisków. Wyświetlacz 1.8" na ST7735S (ten z kursu). Funkcje: Dalmierz (moduł TF-Luna) z funkcją ciągłego i pojedynczego pomiaru Poziomica (MPU6050) z możliwością ustawienia "zera" użytkownika Pomiar temperatury i wilgotności (DHT11) Latarka (WS2812B) świecąca kolorem białym, czerwonym lub zielonym Ustawienia - zmiana jasności, tryb jasny/ciemny, zmiana jednostek Najwięcej pracy było oczywiście z tworzeniem interfejsu użytkownika. Ikonki brałem z http://flaticon.com przy czym musiałem je dodatkowo edytować żeby dobrze się prezentowały na wyświetlaczu. Ponadto musiałem robić po dwie wersje - dla trybu jasnego i ciemnego. Zasilanie - bateria 9v 6f22 zamknięta w obudowie. Dodatkowo dorobiłem płytkę ze stabilizatorami napięcia na 5V i 3.3V, na której dodatkowo umieściłem bufor cyfrowy dla diod programowalnych. Obudowa to ceownik aluminiowy z panelem drukowanym na drukarce 3D. Ogólnie jestem dość zadowolony z efektu ale jest kilka mankamentów: Zielony przycisk mi odstaje 😡 Wyświetlacz muli na napisach. Pasowałoby zrobić swoją bibliotekę bo ta, z której korzystałem jest średnio optymalna ale uznałem, że szkoda roboty.0 Pobór energii jest za wysoki, również po wyłączeniu urządzenia. Tu by konieczna była rozbudowa płytki zasilającej bo obecnie bateria padnie najprawdopodobniej po kilku dniach (jeszcze nie dobiłem do limitu). Spaghetti w obudowie 😛 w pewnym momencie bałem się, że nie dam rady tego tam upchnąć ale skracanie kabli załatwiło temat. Na ten moment jeszcze nie bawiłem się w rysowanie płytek więc jest jak jest. Pewnie nie będę już przy tym dłubał bo zaczynając od etapu gdzie nie wiedziałem jak podłączyć programator do BlackPilla spędziłem przy tym aż nadto czasu 😛 Pora zacząć coś nowego 🙂
  2. Witam, Jestem w 8 klasie (co pewnie da się wyczuć 🙂 ) i robię robota, który omijałby przeszkody i wracał na trasę z wykorzystaniem HC-SR04 i MPU-6050. Używam też shielda od forbota, omawianego w kursie robotyki. Nieruchomy czujnik działa prawidłowo, ale kiedy obraca się na serwie, w pozycjach około prostopadłych do tylnej osi daje odczyt 0 cm. Pozostałe odczyty są poprawne, samo podłączenie czujnika też jest w porządku, bo działa bardzo dobrze będąc nieruchomym. Założenie jest takie, żeby czujnik zamontowany na serwie wykonywał pomiary odległości wokół robota, a następnie aby serwo obróciło się tam, gdzie odległość była najmniejsza (to pozwala cały czas monitorować najbliższą przeszkodę). Cały ,,układ" jest bardzo prosty, w zasadzie można go zreplikować w 5 minut i potestować z moim kodem. Poza tym, zamieszczony plik .zip to minutowy film, który pokazuje zarówno ruchy serwa, jak i odczyty podawane na port szeregowy (Forobot nie pozwala na przesyłanie .mp4). Cały kod zdaje się działać dobrze, jedynym problemem jest to, że pomiary bywają zerowe, co sprawia, że czujnik zachowuje się bez sensu. Myślałem nad dodaniem prostego warunku: ,,Jeżeli zmierzona odległość byłaby mniejsza od minimalnej i jednocześnie większa od zera, wtedy zapisujemy ją jako nową minimalną wartość". W moim kodzie wyglądałoby to tak: if (odleglosci[x] < min_odleglosc && odleglosci[x] > 0) min_odleglosc = odleglosci[x]; Niestety, w tym przypadku robot zupełnie nie wykrywałby przeszkód bezpośrednio naprzeciwko niego, bo otrzymywałby tam pomiary 0 cm (rysunek w załącznikach). Czy ktoś wie, jak naprawić kod/elektronikę? Z góry dziękuję za pomoc. Połączenia czujnik - Arduino: Vcc - 5V Gnd - Gnd trig - D8 echo - D7 //w przod - (R_DIR, 1), (L_DIR, 0). Min. predkosc silnikow to 20 w funkcji Left- i Rightmotor. RightMotor - słabszy //w accelerate dodac zczytywanie obecnej v i porownywac z poprzednia v, plynnie zwalniac //tak naprawde wystarcza dwie zmienne: aktualna_odleglosc i max_odleglosc. Jezeli aktualna_odleglosc > max_odleglosc, staje sie max_odleglosc. Jesli nie, w ogole jej nie potrzebujemy #define L_PWM 5 #define L_DIR 4 #define R_PWM 6 #define R_DIR 9 #define PWM_MAX 165 #define v_min 20 #define trig 8 #define echo 7 #define SERWO_PIN 11 #include <Servo.h> Servo serwo; float odleglosc; float LeftMotorMargin = 5; int max_odleglosc_global = 0; int min_odleglosc_global = 100; int min_odleglosc = 100; int max_odleglosc = 0; int odleglosci [20]; int powtorzenia = 0; int v_previous = 0; int j, x; int do_usuniecia = 0; int poprzedni_kat_serwa; int czestotliwosc_obrotu_serwa = 18; int int_numer_pomiaru; void LeftMotor (int v)//funkcja sterująca silnikiem lewym z jednym argumentem, prędkością. { if (v>0) //jeżeli podana wartość jest dodatnia { v+=LeftMotorMargin; v = map(v,0,100,0,PWM_MAX);//zmieniamy wartość podaną w programie na PWM digitalWrite (L_DIR, 0);//wyznaczamy kierunek - do przodu analogWrite (L_PWM, v);//PWM równy temu, co wyznaczył uzytkownik } else//jeżeli podana liczba jest ujemna { v = abs(v);//zamieniamy liczbę na dodatnią v+=LeftMotorMargin; //v = v - LeftMotorMargin; v = map(v,0,100,0,PWM_MAX);//zmieniamy podaną wartość na PWM digitalWrite (L_DIR, 1);//wyznaczamy kierunek - do tyłu analogWrite (L_PWM, v);//PWM równy temu, co wyznaczył użytkownik } } void RightMotor (int v)//analogiocznie do lewego silnika { if (v>0) { v = map(v,0,100,0,PWM_MAX); digitalWrite (R_DIR, 1); analogWrite (R_PWM, v); } else { v = abs(v); v = map(v,0,100,0,PWM_MAX); digitalWrite (R_DIR, 0); analogWrite (R_PWM, v); } } void stopMotors()//zatrzymanie silników { analogWrite(L_PWM, 0); analogWrite(R_PWM,0); } void accelerate (int v)//funkcja na płynne przyspieszanie i zwalnianie { if (abs(v)<20)//jeżeli podana liczba jest mniejsza niż 20 { v=20; //prędkość równa się 20 (unikamy prędkości zbyt małych, by ruszyć). } Serial.println (v); if (v>v_previous)//jeżeli przyspieszamy { for (int i = v_previous; i<v; i++)//zacznij od poprzedniej wartości, zwiększaj do wyznaczonej do wyznaczonej { RightMotor(i);//do przodu LeftMotor(i); delay(50); } } if (v<v_previous)//jeżeli zwalniamy { for (int i=v_previous; i>v; i--)//zacznij od wartości poprzedniej, zmniejszaj do wyznaczonej { RightMotor(i); LeftMotor(i); delay(50); } } v_previous = v;//zapisz obecną wartość jako wyznaczoną } float pomiar_odleglosci () { float odleglosc, czas; digitalWrite (trig, LOW); delayMicroseconds (2); digitalWrite (trig, HIGH); delayMicroseconds (10); digitalWrite (trig, LOW); czas = pulseIn (echo, HIGH); odleglosc = czas / 58; return odleglosc; } void serwo_right () { min_odleglosc = 100; for (int i = poprzedni_kat_serwa; i>0; i--) { serwo.write(i); delay(10); //czujnik wychyla sie w prawo, resetujemy min_odleglosc } poprzedni_kat_serwa = serwo.read(); } void serwo_left () { odleglosci[x] = pomiar_odleglosci (); Serial.println ("odleglosc prawa"); Serial.println (x); Serial.println (odleglosci[x]); x++;//wykonujemy pierwszy pomiar (w innym wypadku miałby on miejsce dopiero po wychyleniu serwa o czestotliwosc_obrotu_serwa, czyli 18 stopni) for (int i = poprzedni_kat_serwa; i<=180; i++) { //posuwamy sie az do skrajnie lewego wychylenia (zaczynamy ze skrajnie prawego) if (x>180/czestotliwosc_obrotu_serwa) x=0; //jezeli wykonalismy pelen cykl pomiarow resetujemy ich licznik if (j>=czestotliwosc_obrotu_serwa)//kiedy czujnik skrecil o kat podany jako czestotliwosc_pomiaru (kiedy trzeba wykonac pomiar) { j=0; //resestujemy licznik umozliwiajacy wykonanie pomiaru co czestotliwosc_pomiaru odleglosci[x] = pomiar_odleglosci();//wykonujemy pomiar if (odleglosci[x]>max_odleglosc)//jezeli aktualna odleglosc jest wieksza od zapisanej jako najwieksza odleglosc, staje sie nowa najwieksza odlegloscia max_odleglosc = odleglosci[x]; if (odleglosci[x]<min_odleglosc)//jezeli aktualna odleglosc jest mniejsza od zapisanej jako najmniejsza odleglosc min_odleglosc = odleglosci[x]; if (i < 90)//kiedy czujnik jest wychylony w lewo { Serial.println ("odleglosc prawa");//wypisujemy aktualna odleglosc Serial.println (x); Serial.println (odleglosci[x]); }else //kiedy czujnik jest wychylony w prawo { Serial.println ("odleglosc lewa"); //wypisujemy aktualna odleglosc Serial.println (x); Serial.println (odleglosci[x]); } x++; //zwiekszamy licznik pomiarow } //Serial.print ("Kat serwa = "); opcjonalnie mozna odkomentowac, pozwala zobaczyc kat serwa //Serial.println (serwo.read()); serwo.write(i);//przesuwamy serwo j++;//zmieniamy licznik przesuniec, dzieki temu mozemy robic pomiary kiedy osiognie wartosc = czestotliwosc_pomiaru delay(10); } poprzedni_kat_serwa = serwo.read();//zapisujemy obecny kat obrotu jako poprzedni_kat_serwo, co pomaga w wykonywaniu innych obrotow } void serwo_mid ()//kierujemy serwo do pozycji prostopadlej do tylnej do osi { if (poprzedni_kat_serwa > 90)//jezeli serwo jest zwrocone w lewo { for (int i = poprzedni_kat_serwa; i>90; i--)//zmniejszamy, czyli idziemy do prawej { serwo.write(i); } }else //kiedy serwo jest zwrocone w lewo { for (int i = poprzedni_kat_serwa; i<90; i++)//zwiekszamy, czyli idziemy do lewej { serwo.write(i); } } poprzedni_kat_serwa = serwo.read();//zapisujemy obecny kat obrotu jako poprzedni_kat_serwo, co pomaga w wykonywaniu innych obrotow } void zadany_obrot (int kat)//obrot serwa do zadanego katu { if (poprzedni_kat_serwa > kat)//jezeli zadany kat jest na prawo od obecnego { for (int i = poprzedni_kat_serwa; i>kat; i--)//skrecamy serwo w prawo { serwo.write(i); } }else //jezeli zadany kat jest na lewo od obecnego { for (int i = poprzedni_kat_serwa; i<kat; i++)//skrecamy serwo w lewo { serwo.write(i); } } poprzedni_kat_serwa = serwo.read();//zapisujemy obecny kat obrotu jako poprzedni_kat_serwo, co pomaga w wykonywaniu innych obrotow } int numer_pomiaru ()//zczytujemy tablice odleglosci[] (wyniki pomiarow) i szukamy tego, ktory jest najmniejszy { for (int i = 0; i <180/czestotliwosc_obrotu_serwa; i++)//przeszukujemy wszystkie pomiary { if (odleglosci[i] == min_odleglosc)//jezeli odleglosc o numerze 'i' jest najmniejsza { return i;//zwracamy numer pomiaru } } } float pomiar_odleglosci_serwo()//uzywamy trzech wyzej opisanych funkcji do zrobienia pomiaru odleglosci { serwo_right(); serwo_left(); serwo_mid(); return min_odleglosc; } void setup() { //definicja pinow, start komunikacji pinMode(L_DIR, OUTPUT); pinMode(R_DIR, OUTPUT); pinMode(L_PWM, OUTPUT); pinMode(R_PWM, OUTPUT); pinMode (trig, OUTPUT); pinMode (echo, INPUT); serwo.attach(SERWO_PIN); Serial.begin (9600); serwo_mid(); } void loop() { //wypisywanie wynikow pomiarow w porcie szeregowym Serial.println ("Pomiar odleglosci"); min_odleglosc_global = pomiar_odleglosci_serwo();//sprawdzamy odleglosci od przeszkod wokol robota delay(1000); int_numer_pomiaru = numer_pomiaru();//znajdujemy najmniejszy pomiar Serial.println ("numer pomiaru"); Serial.println (int_numer_pomiaru); Serial.println ("min_odleglosc"); Serial.println (min_odleglosc_global); delay(1000); Serial.println ("zadany obrot"); zadany_obrot(int_numer_pomiaru*czestotliwosc_obrotu_serwa);//obracamy serwo do kata, na ktorym byl najmniejszy pomiar Serial.println ("kat"); Serial.println (int_numer_pomiaru*czestotliwosc_obrotu_serwa); } film z dzialania robota.zip
  3. Witam, jestem nowy więc nie wiem czy to dobry dział na forum, ale ten najbardziej był adekwatny. Otóż mam problem z komunikacją Arduino UNO z czujnikiem MPU-6050(GY-521). Głównie problem jest taki, że przy wykorzystywaniu biblioteki pana Jarzębskiego i po odpaleniu serial monitora, wyskakuje błąd: Pomimo iż, podłączyłem zgodnie z poradnikami, czyli VCC do 5V, SCL do SCL(Bądź A5), SDA do SDA(Bądź A4) oraz INT do pinu Digital 2. Ta sama sytuacja następuje przy wykorzystaniu biblioteki Jeffa Rowberga I2Cdev, tak samo próbowałem podpinać i nadal ten sam błąd: Co dziwne, czujnik jest sprawny ponieważ gdy chce wyświetlić surowe dane, to nie ma problemu i mogę je z niego normalnie odczytać.
  4. Nie wiem czy można to nazwać pełnoprawnym DIY ale dzisiaj zaprezentuję drugie życie robota z kursu budowy robotów. Komentarz dla czepialskich: tak, mogę tego robota nazwać robotem ponieważ jest wyposażony w akcelerometr który jest pewnego rodzaju czujnikiem. Wykorzystałem tą konstrukcję, ponieważ chciałem zrobić coś małego co będzie mogło jeździć po całym domu z kamerką. Najpierw omówimy sobie co było gotowe a później co dodałem albo zmieniłem. Cała konstrukcja, Arduino i shield forbota przez cały czas były na swoim miejscu nic w tej kwestii nie ruszałem (oprócz przylutowania paru kabelków do shielda, i wkręcenia wyższych dystansów pod Arduino). Natomiast ze zmian jest jedna ale za to ważna sprawa jaką jest zasilanie. W oryginalnym robocie całość była zasilana z 6 paluszków AA co daje razem 9 woltów (1,5V * 6 = 9V) . Wady takiego rozwiązania były dwie - brak możliwości ponownego naładowania i zajmowały sporo miejsca. Pozbyłem się problemu i zamieniłem na 2 akumulatorki 18650 co daje 8.4 woltów (4.2V * 2 = 8,4V). Ale ktoś może powiedzieć zaraz zaraz, ale 2 takie akumulatorki 18650 wcale nie zajmują jakoś mniej miejsca i w ogóle to 8.4 V to nie za mało ? I ma rację bo przy 8.4V mogłem jeździć niecałe dwie minuty (to wszystko wina malinki) dlatego dodałem przetwornicę step- up która podnosi napięcie do 10V. Wracając do kwestii zajmowanego miejsca przez baterie to może faktycznie 18650 nie zajmuje mniej miejsca objętościowo ale za to kształtem idealnie wpasowały się pod przestrzeń między podwoziem a Arduino. Swoją drogą, gdybym nie odkrył tego miejsca to ten projekt by nie powstał. To tyle ze zmian teraz czas na dodatki. Najważniejszym dodatkiem jest mój samodzielnie zlutowany shield na shielda, może śmiesznie to brzmi ale tak właśnie jest. Zawiera on: moduł radiowy nRF24l01 który odpowiada za sterowanie wszystkim, akcelerometr MPU6050 który daje możliwość cieszyć się w miarę prostą jazdą do przodu, wyprowadzenia na 2 serwa które pozwalają poruszać kamerą aby uzyskać większy kąt widzenia, tranzystor do którego podpięte są 2 ledy 1w każda. Drugim dodatkiem jest Raspberry Pi 4B razem z kamerką . Tak zdaję sobie sprawę że rpi 4 to overkill do takiego projektu, zajmuje połowę platformy i potrafi zużywać więcej prądu niż cała reszta robota. Ale po prostu nie mam nic innego pod ręką. Teraz powiem kilka słów o poszczególnych funkcjach i podzespołach (jeśli można tak to nazwać). Zasilanie - nie będę się już powtarzał ale dla tych co jeszcze się nie domyślili dopowiem tylko że malinka jest zasilana przez przetwornicę step-down ( 8.4V przetwarza na 5V) Sterowanie - jak już mówiłem za sterowanie odpowiada nRF24l01, jako transmitera używam własnoręcznie zlutowanego pilota którego używałem już w moich poprzednich projektach i o dziwo cały czas jest sprawny. Na razie pilot ma 10 kanałów z czego 8 używam w tym robocie. Krótka rozpiska co obsługuje poszczególny kanał: lewy joystick góra dół - jazda przód tył, lewy joystick lewo prawo - obrót lewo prawo, prawy joystick góra dół - ruch kamerą góra dół, prawy joystick lewo prawo - ruch kamerą lewo prawo, potencjometr - trymer (albo jakoś tak, nie wiem jak to się pisze) do kamery lewo prawo, chodzi o taki minimalny ruch serwem który pomaga ustawić kamerę w miarę prosto, środkowy(pod nrf'em) toggle switch - włącza funkcję w miarę prostej jazdy do przodu, prawy toggle switch - światła on/off, przycisk w lewym joysticku - włącza buzzer (ten wbudowany w forbotowego shielda). Akcelerometr - sprawił mi najwięcej problemów, a właściwie to program którego nie umiałem poprawnie napisać. Okej przyznam się że funkcji przetwarzającej dane z akcelerometru nie napisałem w pełni samodzielnie. Działa to tak że program odczytuje przyspieszenie w osi Z i w zależności od tej danej steruje prędkością poszczególnych silników. Kamera - podłączona do RPI 4B przekazuje obraz przez Wi-Fi w sieci WLAN . Ja siedząc przy komputerze widzę ten obraz z programu VNC. Oczywiście najpierw muszę wywołać jakąś komendę którą się z wami podzielę, może ktoś skorzysta: raspivid -o -t 0 -w 800 -h 400 -rot 180 -fps 30 Ta część też zajęła mi trochę czasu. Chciałem żeby opóźnienie obrazu nie przekraczało 200ms więc przekopywałem internet żeby znaleźć jak streamować obraz za pomocą netcata. Niestety nie udało się znaleźć żadnego właściwego poradnika. Po dłuższym czasie poszukiwań znalazłem tą komendę która pozwoliła mi streamować obraz z kamery na naprawdę sensownym opóźnieniu (postaram się później podesłać filmik w komentarzu). Wady - oczywiście, tak jak wszystko na tym świecie robot ma wady i to nie jedną, a kilka: środek ciężkości - można głównym ciężarem są akumulatorki które są położone z tyłu co znacznie przesuwa środek ciężkości (czerwony - gdzie jest, zielony - gdzie powinien być), Raspberry Pi 4B - zajmuje za dużo miejsca i pobiera za dużo prądu, Zasilanie - pomimo że je zmieniłem to nadal 18650 nie są najlepszym rozwiązaniem. Na końcu zamieszczę jeszcze filmik pokazujący moc akcelerometru, ruch kamery i jazdę po dywanie.
  5. Witam, jest to mój pierwszy wpis na tym forum dlatego witam wszystkich bardzo serdecznie. Swoją przygodę z Arduino zacząłem około 5 lat temu, przez ten czas udało mi się zgromadzić wiele czujników, modułów oraz rozwinąć się w dziedzinie programowania i elektroniki. Dodam jeszcze, że wszystko to traktuję jako jedno z wielu hobby, które w "zdrowy" sposób zapełnia mój wolny czas. To tyle o mnie 🙂 Dawno temu zakupiłem moduł akcelerometru GY-521 oparty o scalak MPU-6050, przeleżał dość długo nieużywany (właściwie nigdy nie sprawdzony) aż niedawno nadszedł czas na praktyczne jego wykorzystanie. Do obsługi tego modułu posłużyłem się gotową biblioteką znalezioną na blogu pana Korneliusza (jarzebski.pl) adres: https://github.com/jarzebski/Arduino-MPU6050. Po załadowaniu biblioteki wziąłem się do podłączenia modułu z płytką Arduino Nano. Scalak z modułu pracuje pod napięciem 3,3V, jednak zamontowany jest w nim stabilizator napięcia stąd został podłączony bezpośrednio pod 5V z Arduino. W module piny SDA i SCL są "fabrycznie" podciągnięte na płytce rezystorami 2,2kΩ pod 3,3V. Jako że I2C w Arduino działa w konfiguracji otwarty dren zrezygnowałem z konwertera stanów logicznych podłączając bezpośrednio piny A5 i A4 do akcelerometru. Reasumując podłączenie wygląda w sposób następujący: 5V -> VCC GND -> GND A4 -> SDA A5 -> SCL Nadszedł czas na pierwszy program, był to gotowy przykład z wyżej wymienionej biblioteki MPU6050_gyro_pitch_roll_yaw gdyż idealnie nadawał się do krótkiej modyfikacji i zmontowania układu już na gotowo. Po wgraniu i przetestowaniu byłem bardzo mile zaskoczony stabilnością działania tego modułu gdyż wszystkie wartości wyświetlane na SerialMonitorze odpowiadały rzeczywistości. W pełni zadowolny wziąłem się za szybką modyfikacje, która polegała na tym, że gdy moduł zostanie odchylony o co najmniej 5 stopni w jednej z trzech osi to zostanie uruchomiony alarm. Wszystko przebiegło bez żadnych problemów, program działa bardzo stabilnie ale... tylko wtedy kiedy jest podłączony do komputera przez USB a na SerialMonitorze wyświetlam wartości kąta odchylenia. Nie mogę pojąć tego ewenementu i nie mam pojęcia co robię źle. Sytuacja wygląda tak, zamówiłem nowy, taki sam moduł - efekt ten sam, wgrałem program na inna płytkę Nano - problem ten sam co wcześniej, zamieniłem Nano na Uno - nic to nie zmieniło. Po wielu godzinach spędzonych na szukaniu odpowiedzi w internecie oraz rozmyślaniu o rozwiązaniu i kolejnych próbach uruchomienia stwierdziłem, że sprawdzę czy moduł cokolwiek "mówi" do Arduino kiedy komputer "nie patrzy". Nie posiadam oscyloskopu więc wymyśliłem bardzo prosty test z diodami. Moduł leży poziomo: kiedy obrót w prawo - uruchamia prawą diodę, kiedy w lewo - lewą. Tu problem był dokładnie taki sam, kiedy Arduino wpięte jest do komputera i uruchomiony jest SerialMonitor to działa bez zarzutu, bardzo stabilnie. Kiedy uruchamiane jest z powerbanka, czy to z gniazda DC baterią 9V (w przypadku UNO) czy chociażby przetwornicą DC DC ustawioną na 7,5V wpiętą pod Vin to diody przy obrocie nie świecą albo wariują. Dodam też, że po wpięciu płytki Arduino do komputera w przypadku, w którym to nie uruchamiam SerialMonitora, raz działa a raz nie, z SerialMonitorem za każdym razem działa poprawnie. Na obecną chwilę skończyły mi się pomysły, próbowałem kompilacji na różnych wersjach AdruinoIDE, wywalałem z kodu cały Serial do komunikacji z komputerem i nic. Czy ktoś z was spotkał się z takim problemem z modułem GY-521? Bardzo proszę o pomoc lub sugestie. Pozdrawiam
×
×
  • 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.