Skocz do zawartości

kuba3122

Użytkownicy
  • Zawartość

    9
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O kuba3122

  • Ranga
    2/10
  1. Właśnie miałem pisać co poradzić na ten fakt , że wejście jest bardzo wrażliwe wystarczy wpiąć do wejścia przewód i dotknąć jego końca aby program ruszył. Poczytam coś jutro na temat pull-upa i pull-downa i bębę pytał dalej. Dzięki
  2. Pin jest zmostkowany przez krańcówke z pinem arduino na którym występuje 5V, wciśnięcie krańcówki zwiera obwód. PULLUP dlatego , że wcześniej próbowałem z samym INPUT na którym program również nie działał i tak już zostało. Sugerowałem się tym kodem: void setup() { pinMode(8, OUTPUT); //Dioda jako wyjście pinMode(7, INPUT_PULLUP); //Przycisk jako wejście digitalWrite(8, LOW); //Wyłączenie diody } void loop() { if (digitalRead(7) == LOW) { //Jeśli przycisk wciśnięty digitalWrite(8, HIGH); //Włącz diodę } else { //Jeśli warunek nie został spełniony (przycisk nie jest wciśnięty) digitalWrite(8, LOW); //Wyłącz diodę } } Rozumiem już różnicę w pojawia się a występuje. Natomiast skoro jest tak jak piszesz to na pinie 8 nie ma napięcia - krańcówka jest normalnie rozwarta czyli warunek nie zostaje spełniony i program nie powinien wykonać instrukcji w nawiasie klamrowym funkcji if a sytuacja jest taka , że wykonuje i powoduje obroty silnika.
  3. Mógłby ktoś rzucić okiem dlaczego pomimo niespełnienia warunku program wykonuje instrukcje w funkcji if ? Program ma działać tak, że gdy na pinie 8 pojawi się napięcie wysyła sygnał na sterownik silnika krokowego który wykona 4 obroty. // defines pins numbers const int stepPin = 5; const int dirPin = 2; int czujnik=8; void setup() { // Sets the two pins as Outputs pinMode(stepPin,OUTPUT); pinMode(dirPin,OUTPUT); pinMode(czujnik,INPUT_PULLUP); } void loop() { if(digitalRead(8)==HIGH){ digitalWrite(dirPin,LOW); for(int x = 0; x <= 800; x++) { digitalWrite(stepPin,HIGH); delayMicroseconds(800); digitalWrite(stepPin,LOW); delayMicroseconds(800);} } delay(3000); }
  4. No tak zwiększając delay zmniejszam częstotliwość a zwiększam wypełnienie. A od czego zależy przy jakiej najmniejszej wartości delay silnik krokowy będzie chciał wykonywać jeszcze obroty ? tutaj około delayMicroseconds(800);
  5. To w takim razie jak wytłumaczyć fakt , że silnik ma większe obroty na ustawieniach wartości : delay(1) [...] delay(1) niż np na wartościach 5 i 1 gdzie jak rozumiem wypełnienie sygnału powinno wynosić 5/6 z 100% ?
  6. Zostawmy tamten program. Mam kilka pytań na temat mechaniki działania programu. // defines pins numbers const int stepPin = 5; const int dirPin = 2; void setup() { // Sets the two pins as Outputs pinMode(stepPin,OUTPUT); pinMode(dirPin,OUTPUT); } void loop() { digitalWrite(dirPin,LOW); for(int x = 0; x <= 200; x++) { digitalWrite(stepPin,HIGH); delay(2); digitalWrite(stepPin,LOW); delay(2); } delay(5000); } Czy dobrze rozumiem , że program napisany w pętli for generuje sygnał PWM , ustawia wyjście stepPin w stan wysoki i utrzymuje go przez 2/1000 sek następnie to samo wyjście ustawia w stan niski na 2/1000sek , powtarza pętle 200 razy wychodzi z pętli , czeka 5 sekund i powtarza program od nowa. Czy zmieniając wartości w delay mogę sterować wypełnieniem sygnału ?
  7. W takim razie jak pisać program na taki sterownik ? Aby obrócić wirnikiem muszę na wejście PUL + wysłać sygnał z arduino. Może ktoś to objaśnić ?
  8. Witam, mam problem z działaniem układu z załącznika. Program banalnie prosty: int sygnal=6; int kierunek=5; void setup(){ pinMode(sygnal,OUTPUT); pinMode(kierunek,OUTPUT); } void loop(){ digitalWrite(kierunek, HIGH); for(int a=0 ;a<=800, a++;){ digitalWrite(sygnal,HIGH); delay(3000); } } Silnik 60HS100 - 200 kroków na obrót, prąd znamionowy 3,5 A sterownik TB6600 4A - przełączniki SW ustawione tak aby sterownik dawał możliwie jak większy prąd. Sterownik zasilany zasilaczem komputerowym 12V. Według tego co napisane jest w kodzie, silnik powinien obrócić wirnikiem 4 razy po czym odczeka 3 sekundy i ponownie wykona pętle for, efekt jest taki, że układ jak w załączniku nie reaguje, silnik krokowy jedynie "świszczy". Gdzie popełniłem błąd ?
×
×
  • Utwórz nowe...