Skocz do zawartości

Pomoc w oprogramowaniu rysującego robota


qulet

Pomocna odpowiedź

Witam !
zbudowałem draw  machine  sterowanie to GRBl _serwo.

Serwo działa na PIN D11.  Chciałbym  zmienić  oprogramowanie Arduino na standardowe   i  podłączyć moduł lasera  do pinu PWM  D11, a sterowanie  serwa podłączyć  do drugiego arduino  które na wejściu otrzymywało by sygnał:
ON 5V- Pozycja 30 -40 stopni
OFF 0V - pozycja kontowa 0 

 Opcjonalnie byłoby super  mieć na potencjometrze  regulacje  wielkości kąta wychylenia  przy sygnale ON 5V.....

Aktualnie  po podłączeniu lasera mam tylko dwie osie .Po takiej przeróbce  miałbym  do dyspozycji 3 osie i mógłbym wypalać kontury w kilku przejściach,obniżając za każdym przejściem oś "Z" . 
Wyzwalanie serwa pochodziłoby z pierwszego arduino GRBL standard   z pinu Spindle ON-OFF.



Czy  autor kursu był by tak  dobry i  napisał dla mnie  taki kod wsadu do arduino nano?

Link do filmu pokazującego działanie  mojego drawbota:
https://drive.google.com/file/d/1FLdE1gcUif-V3gG8qpacfc4B5ikwyQal/view?usp=sharing

 Z góry dziękuję za wszelką pomoc

 

 

 

IMG_20200420_165038.jpg

laser.jpg

Edytowano przez qulet
Link do komentarza
Share on other sites

(edytowany)

Witam !

Czy może mi ktoś  napisać  potrzebny kod do sterowania  serwomechanizmem  w taki sposób jak wyjaśniłem w moim powyższym poście ? 

Pozdrawiam wszystkich entuzjastów CNC i mechatroniki ! 

PS.

Gieneq  proszę umieść Mój post we właściwym miejscu na forum abym mógł uzyskać pomoc.

Edytowano przez qulet
Link do komentarza
Share on other sites

(edytowany)
*
 * Created by ArduinoGetStarted.com
 *
 * This example code is in the public domain
 *
 * Tutorial page: https://arduinogetstarted.com/tutorials/arduino-button-servo-motor
 */

#include <Servo.h>

// stałe się nie zmienią
const int BUTTON_PIN = 8; // Pin Arduino połączony z pinem przycisku 
const int SERVO_PIN  = 9; // Pin Arduino podłączony do pinu silnika serwo

Servo servo; //  utwórz obiekt serwa, aby kontrolować serwo


// zmieniące się zmienne: 
int angle = 0;          // aktualny kąt silnika serwo 
int lastButtonState;    // poprzedni stan przycisku 
int currentButtonState; //  aktualny stan przycisku


void setup() {
  Serial.begin(9600);                // zainicjuj serial
  pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode
  servo.attach(SERVO_PIN);           // attaches the servo on pin 9 to the servo object

  servo.write(angle);
  currentButtonState = digitalRead(BUTTON_PIN);
}

void loop() {
  lastButtonState    = currentButtonState;      // zapisz ostatni stan
  currentButtonState = digitalRead(BUTTON_PIN); // przeczytaj nowy stan

  if(lastButtonState == HIGH && currentButtonState == LOW) {
    Serial.println("The button is pressed");

    // zmiana kąta silnika serwo
    if(angle == 0)
      angle = 40;
    else
    if(angle == 40)
      angle = 0;

    // sterowanie serwosilnikiem zgodnie z kątem
    servo.write(angle);
  }
}

wujek google pomógł  !

Teraz potrzebuję uzależnić zmienną  "angle" od wartości  nowej zmiennej analogowej odczytanej z potencjometru. Jest jeszcze jeden problem:

tutaj serwo działa  tak  że chwilowe podanie masy na  PIN8 zmienia stan serwa o zadany kąt .  Ja potrzebuję  żeby ten stan się zmieniał  :

Pin8 +5V  kąt 40

Pin8 0V  kąt 0         - no i przydał by się potencjometr  regulujący zakres tego konta w momencie  wyzwalania (czyli podawania +5V na Pin8)

próbuje to  zaprogramować ale moja wiedza w temacie kodowania jest niewielka........

Edytowano przez qulet
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

(edytowany)


Pomijam już użycie potencjometru.

Wydaje się że zmiana tego programu tak  aby działał jak wyżej napisałem dla  znawców nie powinna być trudna w realizacji.
  NIKT NIE MOŻE POMÓC ?

To forum ma chyba spełniać taką rolę. 

Panie Moderatorze "Gieneq" czy bywalcy tego forum mogą odczytać moje posty  z tego tematu?

Bo chciałbym założyć no wy temat z Tym problemem i tam umieścić   wszystkie  posty powyżej. Nie wiem jak to zrobić .

Edytowano przez qulet
Link do komentarza
Share on other sites

7 godzin temu, qulet napisał:

próbuje to  zaprogramować ale moja wiedza w temacie kodowania jest niewielka........

Wszystko co trzeba jest w kursach, jeśli czegoś konkretnego nie rozumiesz to zapytaj, ktoś Ci wyjaśni.

Link do komentarza
Share on other sites

(edytowany)

Nie wiem jak  zmienić  cytowany powyżej  kod  i pytam??????   

Jak go zmienić  aby działał jak opisałem to jest konkretne pytanie. No chyba jaśniej nie można.   ethanak stwierdzenie :

 "Wszystko co trzeba jest w kursach " jest odkrywcze  i bardzo  pomocne .  Dzięki!

Edytowano przez qulet
Link do komentarza
Share on other sites

5 godzin temu, qulet napisał:

stwierdzenie :

 "Wszystko co trzeba jest w kursach " jest odkrywcze  i bardzo  pomocne

Wiesz, po co są kursy na Forbocie? Po to, aby każdy mógł się z nich czegoś nauczyć bez zadawania zbędnych pytań na forum. Czego w kursie nie zrozumiałeś w odcinku i przetworniku AD? Czego nie rozumiesz w przykładach do biblioteki Servo? Zapytaj - odpowiemy.

5 godzin temu, qulet napisał:

Nie wiem jak  zmienić  cytowany powyżej  kod  i pytam??????   

Nieprawda. Nie wiesz jak zmienić ten kod i masz pretensje do całego świata, że nikt nie rzuca wszystkiego i nie zmienia tego kodu zaraz teraz natychmiast. To tak nie działa.

Link do komentarza
Share on other sites

Chyba trafiłem pod zły adres. Te nasze dialogi niczego nowego  do tematu nie wnoszą... Nie mam  pretensji do całego świata  jak piszesz , liczyłem tylko na prostą ludzką życzliwość i podpowiedź co by należało w tym kodzie zmienić aby serwo po podaniu napięcia ciągłym nie impulsowym 5V wychylało się o zadany kąt  a po podaniu GND (ciągły stan na pinie)  wracało do pozycji zerowej. Teraz to działa tak  1 naciśnięcie (impuls) podanie GND na Battonn_PIN  powoduje właściwe wychylenie. Drugi raz podane GND (impuls) powoduje  powrót serwa do zera. Zachowanie serwa jest OK. Chcę zmienić sposób wyzwalania i powrotu serwa tak jak opisałem. Co powinno być w "void loop" próbowałem przez cały dzień różnych wariantów a serwo wpadało w drgania albo chodziło w tą i s powrotem.

Link do komentarza
Share on other sites

33 minuty temu, qulet napisał:

Chcę zmienić sposób wyzwalania i powrotu serwa tak jak opisałem. Co powinno być w "void loop" próbowałem przez cały dzień różnych wariantów a serwo wpadało w drgania albo chodziło w tą i s powrotem.

To pokaż Twoją ostatni kod (ten z Twoimi próbami) - zobaczymy co da się zrobić 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.