Skocz do zawartości

kilerus

Użytkownicy
  • Zawartość

    10
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O kilerus

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Mam takie podłączenie i kod jak w linku: http://www.martyncurrey.com/hc-05-fc-114-and-hc-06-fc-114-part-2-basic-at-commands/ i moduł: https://botland.com.pl/pl/moduly-bluetooth/6818-modul-bluetooth-hc-06-zs-040.html klon arduino nano. Niestety po komendzie AT nie dostaję żadnej odpowiedzi. Samo urządzenie jest widoczne przez telefon. Co zrobić żeby skomunikować się z nim przez komputer i arduino?
  2. Dolutowałem anteny. Dużo wiecej komunikatów dochodzi, ale dalej silniki wykrzaczją.
  3. A ja zmieniłem miejscami kontrolery i dalej to samo. Może te silniki są jakies takie... Poza tym zauważyłem, ze często te wiadomości nie dochodzą, więc średnio się to nada do sterowania pojazdem. Na razie pobawię sę czym innym i później może do tego wrócę. Dzięki.
  4. Faktycznie muszę to przejrzeć. Zamieniłem analogWrite na DigitalWrite i dalej jest źle. Teraz ładuję akumulatorki bo najwyraźniej są już mocno rozładowane. Tylko, że podłączyłem pod Arduino zasilacz 9V 2A i dalej jest lipa. Zauważyłem jednak, ze odbiornik dużo częściej wychwytywał wiadomości.
  5. Dzięki, Przejrzę ten link. Tylko tak na szybko. Ja używam pinu 10 w nadajniku, a w odbiorniku pinu 11. Nie wiedziałem, ze są jakieś zależności między pinami, że mogę je jakoś uszkodzić.
  6. Posprawdzam wieczorem. Dzięki Wam za pomoc. Mostek jest taki jak pisałeś L293D. Nawet go zmieniłem, bo myślałem, że mi się zepsuł. Wszystko jednak działa dokładnie tak samo. Z tego co czytałem to zakłócenia mogą się brać z tego, ze silnik wiruje i z tego, że mają wspólne masy (odbiornik i silniki). Ja się na tym nie znam. Tak piszę co tam mi się rzuciło. Kod odbiornika jest w pierwszym poście. Wiem, ze niewiele widać ale nadajnik jest taki: . Kod nadajnika jest taki: #include <VirtualWire.h> // definiujemy piny #define transmit_pin 10 String stringHash = "9999999"; int value = 0; int sensorX = A0; // VRx do A0 na Arduino int sensorY = A1; // VRy do A1 na Arduino int przycisk = 7; // SW do pinu 7 na Arduino int srodekX = 497; int srodekY = 503; int maxValue = 1023; void setup() { pinMode(przycisk, INPUT); digitalWrite(przycisk, HIGH) ; Serial.begin(9600); // przygotowujemy potrzebne informacje dla biblioteki vw_set_tx_pin(transmit_pin); vw_setup(2000); } void loop() { value = analogRead(sensorX); float procentX; if (value < srodekX) procentX = -(float)(srodekX - value) / (float)srodekX; else procentX = (float)(value - srodekX) / (float)(maxValue - srodekX); int pX = 100 * procentX + 100; value = analogRead(sensorY); float procentY; if (value < srodekY) procentY = -(float)(srodekY - value) / (float)srodekY; else procentY = (float)(value - srodekY) / (float)(maxValue - srodekY); int pY = 100 * procentY + 100 ; String toSend = (stringHash + String(pX, DEC) + "_" + String(pY, DEC)); // tekst wiadomości char msg[23]; // tworzymy tablicę typu char toSend.toCharArray(msg, toSend.length() + 1); // konwertujemy nasz tekst do tablicy char'ów vw_send((uint8_t *)msg, strlen(msg));// wysyłamy Serial.println(toSend); vw_wait_tx(); delay(100); } Oczywiście wartości wyjściowe PVM (tak by jechał do przodu i skręcał) dla silników miały być jeszcze przeskalowane inaczej, ale nie było sensu tego robić póki to w ogóle nie chce wystartować. Cały układ jest zasilany z 6 akumulatorków AA. Mój powerbank ma 5V 1A, ale musiałbym go podpiąć do listwy.
  7. Tak zrobiłem. Zamiast zasilania zewnętrznego dla Arduino, podłaczyłem zasilacz do dolnej listwy +/-. Dokładnie taki sam efekt. Dalej silnik blokuje program. Co ciekawe, małe wartości do poziomu 9 przy analogWrite dla silnika są ok. Wieksze blokują wykonanie programu. Zrobiłem takie doświadczenie. Po instrukcji warunkowej odbierającej informację dodałem: if(millis()-czas>1000) { analogWrite(6, 0); analogWrite(3, 0); Serial.println(millis()-czas); } I wtedy otrzymuje informacje z odbiornika radiowego, ale silniki oczywiście mają napęd nieakceptowalny. Te silniki jak pracują to blokują odbiór sygnału RC. Nie mam pojęcia jak z tym sobie poradzić. Myślalem, ze zrobienie zdalnie sterowanego pojazdu będzie proste, a tutaj takie problemy. Czy jak podepnę zamiast odniornika RC jakieś czujniki to te silniki dalej będą mi to wszystko zakłócać? Czy jak zamienię ten mostek H na jakiś bardziej zaawansowany sterownik silników to czy jest szansa, ze te zakłócenia się ode mnie odtentegują?
  8. Jeszcze raz wszystko podłączyłem i działają same silniki: void setup() { pinMode(6, OUTPUT); //Sygnał PWM silnika nr 1 digitalWrite(6, HIGH); //Ustawiamy (na stałe) stan wysoki na pinie 6 pinMode(7, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr 1 pinMode(8, OUTPUT); digitalWrite(7, LOW); digitalWrite(8, HIGH); pinMode(3, OUTPUT); digitalWrite(3, HIGH); pinMode(5, OUTPUT); pinMode(4, OUTPUT); digitalWrite(5, LOW); digitalWrite(4, HIGH); } void loop() { for (int i = 0; i <= 100; i++) { analogWrite(6, i); //Spokojne rozpędzanie silnika analogWrite(3, 100-i); delay(25); } for (int i = 99; i >0; i--) { analogWrite(6, i); analogWrite(3, 100-i); delay(25); } } Natomiast jak zacznę zczytywać dane z odbiornika radiowego i włączę silnik to się wiesza. Co z tym zrobić? Napięcie na wyjściu do silników mam 6,8V więc teraz jest dobrze. To muszę mieć jakieś zakłócenia przez te silniki. A ile taki mostek pobiera pradu?
  9. Cześć, To jest ten mniejszy czerwony kabelek z Vin do drugiej linii płytki a za kondensatorami transportuje to zworka szara do ostatniej nóżki mostka od lewej. Po prawej stronie mostka dochodzi zasilanie z dłuższego 5V kabelka. EDIT: Wcześniej zrobiłem coś takiego jeszcze i też działo bez zarzutu: Co ciekawe. Tutaj mam zasilanie podłączone odwrotnie, czyli chyba źle, a wszystko działało.
  10. Cześć, To mój pierwszy post. Zrobiłem sobie nadajnik radiowy z fotorezystorem i odbiornik z mostkiem h i dwoma silnikami. Wszystko działało. Jeszcze podłaczyłem przetwornicę, ale to później rozmontowałem i jak dostałem joystick to postanowiłem złożyć ponownie. Efekt jest taki, że wszystko działa na diodach jak należy, a jak podłaczę silnik, to zawiesza się. Skręcam joystick diody świecą a silnik kreci się w nieskonczoność, na Monitorze portu szeregowego przestają wyskakiwać wiadomości i wystarczy, ze odłączę silnik i program leci dalej. Czym to może być spowodowane? #include <VirtualWire.h> #define receive_pin 11 unsigned long czas; String stringHash = "99999999"; void setup() { Serial.begin(9600); Serial.println("setup"); // przygotowujemy potrzebne informacje dla biblioteki pinMode(7, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr 1 pinMode(8, OUTPUT); pinMode(6, OUTPUT); //Sygnał PWM silnika nr 1 pinMode(5, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr 2 pinMode(4, OUTPUT); pinMode(3, OUTPUT); //Sygnał PWM silnika nr 2 czas = millis(); vw_set_rx_pin(receive_pin); vw_setup(2000); vw_rx_start(); // startujemy odbieranie danych (uruchamiamy) } void loop() { // częśc wymagana do poprawnego działania biblioteki uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) // jeśli odbierzemy dane { czas = millis(); int i, last; String wiadomosc, liczbaX, liczbaY; // w pętli zczytujemy dane z odbiornika int lastfirst=0; for (i = 0; i < 8; i++) { wiadomosc += char(buf[i]); // wiadomość last = i; } if (wiadomosc == stringHash) { String tt=""; for(i=last+1;i<buflen;i++) { tt=""; tt+=char(buf[i]); if(tt=="_") { lastfirst=i-1; break; } } for (i = last+1; i < lastfirst+1; i++) { liczbaX += char(buf[i]); // liczba } for (i = lastfirst+2; i < buflen; i++) { liczbaY += char(buf[i]); // liczba } //Serial.println (liczbaY); int x = atoi(liczbaX.c_str())-100; //w prawo w lewo int y = atoi(liczbaY.c_str())-100; //do przodu do tyłu int x1=1* abs(x); int y1=1* abs(y); if(x<0) MakeWalk(8, 7); else MakeWalk(7, 8); if(y<0) MakeWalk(5, 4); else MakeWalk(4, 5); analogWrite(6, x1); analogWrite(3, y1); Serial.print ("------ "); Serial.print (x1); Serial.print (";"); Serial.println (y1); } } } void MakeWalk(int pin1, int pin2) { digitalWrite(pin1, HIGH); digitalWrite(pin2, LOW); }
×
×
  • Utwórz nowe...