Skocz do zawartości

hawaya

Użytkownicy
  • Zawartość

    8
  • Rejestracja

  • Ostatnio

Reputacja

2 Neutralna

O hawaya

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Łódź
  • Zainteresowania
    automatyka i robotyka
  • Zawód
    student
  1. Cześć, mam problem już na samym początku, error związany z termometrem.
  2. Cześć mam pytanie. Będę robił w tym semestrze projekt kompetencyjny polegający na skonstruowaniu prostego oscyloskopu na procesorze STM i wyświetlaczu graficznym. Do tej pory korzystałem tylko z arduino wiec trochę się martwię czy mnie to nie przerośnie ale oscyloskop by mi się przydał wiec zamiast go kupować mogę go sobie teraz sam zrobić. Naukę zacznę oczywiście od tego kursu ale nie będę kupował gotowego zestawu bo większość elementów mam już z zestawu do arduino. Mogę zatem kupić innego ARMA niż proponowany ale nie wiem, który wybrać żeby był najodpowiedniejszy do mojego oscyloskopu. Który powinienem wybrać?
  3. Cześć, mam pytanie. Chcę zbudować pierwszego robota, będzie tylko jeździł w przód/tył i skręcał. Zależy mi po prostu na tym, żeby nauczyć się sterować arduino przez bluetooth i zbudować w końcu coś bardziej konkretnego. Moje pytanie dotyczy sterowania silnikami z przekładnią. Czy sterowanie nimi wygląda tak samo jak silnikami bez przekładni? Chcę użyć silników 12VDC z przekładnią 70 obrotów MT-90 0,78Nm. Czy to oznacza, że przy maksymalnym wypełnieniu PWM=255 silnik będzie się obracał 70 razy na minutę? A przy mniejszych wypełnieniach z prędkością proporcjonalną do wypełnienia?
  4. Mam pytanie, jeśli ustawię za małą wartość PWM tak, że silnik się jeszcze nie zaczyna kręcić to wydobywa się z niego jakiś pisk, tak samo jest kiedy zatrzymam go palcami. Trochę się boję, że mu to zaszkodzi dlatego przy rozruchu zaczynam od wartości 100. Czy moje obawy są uzasadnione? Jakby co to mam taki silnik http://botland.com.pl/silniki-dc-bez-przekladni/951-silnik-mt78.html I jeszcze jedno pytanie co do tego silnika, jeśli dobrze rozumiem notę katalogową to maksymalne natężenie jest 810 mA ale przy rozruchu jest aż 3,1 A (myślałem, że maksymalne to właśnie jest przy rozruchu?). Czy mogę go w takim razie używać z mostkiem L293D ?
  5. Zadania 7.1 Zadanie 7.4 Trochę długi ten kod wyszedł ale chyba nie da się krócej, przynajmniej z komendami, które były dotychczas w kursie. #include <LiquidCrystal.h> LiquidCrystal lcd (13,11,9,7,5,3); byte sekundy = 0; byte minuty = 0; byte godziny = 0; bool statusStopera = 0; void setup() { lcd.begin(16,2); pinMode(0, INPUT_PULLUP); pinMode(1, INPUT_PULLUP); lcd.setCursor(0,0); lcd.print("Stoper"); lcd.setCursor(0,1); lcd.print("00:00:00"); } void loop() { if (digitalRead(0) == LOW && digitalRead(1) == LOW){ // wcisniecie obu guzikow zeruje stoper sekundy = 0; minuty = 0; godziny = 0; lcd.setCursor(0,1); lcd.print("00:00:00"); statusStopera = 0; } if (digitalRead(0) == LOW){ // wlaczenie stopera statusStopera = 1; } if (digitalRead(1) == LOW){ // zastopowanie stopera statusStopera = 0; } if (statusStopera == 1){ // zaczyna odliczanie po wcisnieciu pierwszego guzika sekundy = sekundy + 1; if (sekundy == 60){ // zmienia 60 sekund na kolejna minute minuty = minuty + 1; sekundy = 0; if (minuty == 60){ // zmienia 60 minut na kolejna godzine godziny = godziny + 1; minuty = 0; if (godziny < 10){ // ustawia kursor w odpowiednie miejsce dla godzin lcd.setCursor(1,1); } else { lcd.setCursor(0,1); } lcd.print(godziny); lcd.setCursor(3,1); lcd.print("00"); // zeruje minuty na wyswietlaczu po przekroczeniu 59 } if (minuty < 10){ // ustawia kursor w odpowiednie miejsce dla minut lcd.setCursor(4,1); } else { lcd.setCursor(3,1); } lcd.print(minuty); lcd.setCursor(6,1); lcd.print("00"); // zeruje sekundy na wyswietlaczu po przekroceniu 59 } if (sekundy < 10){ // ustawia kursor w odpowiednie miejsce dla sekund lcd.setCursor(7,1); } else { lcd.setCursor(6,1); } lcd.print(sekundy); delay(1000); } } Jedyne co mi tu przeszkadza to to, że żeby zastopować stoper trzeba guzik trzymać około sekundę. Czas zmierzy dobrze bo nie przeskoczy do następnej sekundy ale denerwuje mnie to.
  6. cześć, wstawiam swój kod do zadania 6.3, bez zdjęć bo przyznam, że nie chciało mi się robić tarczy ze skalą. Program działa poprawnie. początkowo miałem problem w momencie gdy ustawiałem wartość maksymalną na jakimś niskim poziomie ale szybko "odkryłem", ze przyczyną byl typ zmiennej pozycja, ktory byl ustawiony na byte. nie wiedzialem jak dokładnie działa mapowanie. #include <Servo.h> Servo serwo; int pozycja = 0; int odczytanaWartosc = 0; int wartoscPoprzednia = 0; int wartoscMaks = 800; void setup() { Serial.begin(9600); serwo.attach(3); pinMode(12, INPUT_PULLUP); } void loop() { odczytanaWartosc = analogRead(A5); if (digitalRead(12) == LOW){ // w momencie wcisniecia guzika wartoscMaks = odczytanaWartosc; // ustawiam maksymalne natezenie } pozycja = map(odczytanaWartosc, wartoscMaks, 0, 0, 180); if (abs(pozycja-wartoscPoprzednia) > 5){ serwo.write(pozycja); wartoscPoprzednia = pozycja; } Serial.println(wartoscMaks); delay(1000); } Piszę jednak głownie z innego powodu. Moje serwo nie działa do końca poprawnie i nie wiem co jest przyczyną. Filmik demonstruje co się dzieje Chodzi mi o te drgania. Delay jest ustawiony na jedna sekundę, do tego używam wartości bezwzględnej żeby serwo nie uwzględniało bardzo małych zmian. Początkowo myślałem, że to wina braku kondensatorów przy stabilizatorze bo ich nie używałem ale znalazłem kondensatory 220nF (nie wiem jakie są w zestawie bo Arduino miałem już wcześniej więc kupiłem pozostałe elementy oddzielnie) i nic to nie zmieniło.
  7. Treker, nie wiem co o tym myśleć. Zrobiłem tak jak kazałeś. Poza dopisaniem trzech linijek do UARTa nie zmieniłem w kodzie absolutnie nic a nagle zaczęło działać tak jak chciałem ... Jedyne co zaobserwowałem to, że dioda świeci się maksymalnie przy wypełnieniu równym ok. 120 (mam rezystor 220 Ohm) więc może po prostu nie zauważyłem kiedy dioda ciemniała bo większość czasu świeciła się maksymalnie. Wydaje mi się to jednak bardzo mało prawdopodobne bo bardzo uważnie jej się wczoraj przyglądałem. Tak czy siak teraz już steruję serwem i jest super dzięki za odpowiedź.
  8. Cześć, chciałem rozwiązać zadanie 5.2 z wykorzystaniem zmiennej bool, wydaje mi się, że ona do tego typu rzeczy służy. Jednak nie bardzo wiem jak z niej korzystać. Napisałem program tak jak mi się wydaje, że można z bool'a korzystać ale niestety nie działa poprawnie, dioda powoli rozświetla się do maksimum ale nie chce ściemnieć. #define diodaPIN 3 byte wypelnienie = 0; int zmiana = 1; bool kierunek = false; void setup() { pinMode(diodaPIN, OUTPUT); } void loop() { if (wypelnienie == 255){ kierunek = true; } if (wypelnienie == 0){ kierunek = false; } if (kierunek == false){ wypelnienie = wypelnienie + zmiana; } if (kierunek == true){ wypelnienie = wypelnienie - zmiana; } analogWrite(diodaPIN, wypelnienie); delay(50); } Od razu przepraszam za brak komentarzy ale wszystko jest chyba oczywiste.
×
×
  • Utwórz nowe...