소스 검색

could work

Nico 1 년 전
부모
커밋
007926b581
2개의 변경된 파일51개의 추가작업 그리고 5개의 파일을 삭제
  1. 42 1
      Gripper/Gripper.ino
  2. 9 4
      Gripper_gui_test.py

+ 42 - 1
Gripper/Gripper.ino

@@ -18,7 +18,13 @@ SoftwareSerial servoSerial(10, 11);
 int input = 0;
 XYZrobotServo servo1(servoSerial, 2);
 
-const uint8_t playtime = 200;
+const uint8_t playtime = 100;
+
+int button_oben = 2;
+int button_unten = 3;
+int ain1 = 4;
+int ain2 = 5;
+int pwma = 8;
 
 int x ,position;
 int val[10] = {0,0,0,0,0};
@@ -46,6 +52,18 @@ void a116(int position){
   servo1.setPosition(position, playtime);
 }
 
+void motor(int speed, int dir){
+  if (dir == 1){
+    digitalWrite(ain1,HIGH);
+    digitalWrite(ain2,LOW);
+    }
+    else{
+    digitalWrite(ain1,LOW);
+    digitalWrite(ain2,HIGH);
+    }
+    analogWrite(pwma,speed);
+  }
+
 void setup() {
   Serial.begin(9600);
   Serial.setTimeout(1);
@@ -59,6 +77,12 @@ void setup() {
   ax12a.move(ID1,512);
   ax12a.move(ID2,512);
   servo1.setPosition(512, playtime);
+
+  pinMode(button_oben,INPUT_PULLUP);
+  pinMode(button_unten,INPUT_PULLUP);
+
+  attachInterrupt(digitalPinToInterrupt(button_oben),interrupt1, LOW);
+  attachInterrupt(digitalPinToInterrupt(button_unten),interrupt2,LOW);
 }
 void loop() {
  if (Serial.available()){
@@ -89,6 +113,23 @@ void loop() {
     ax12_2(position);
     Serial.print("Ready");
     break;
+    case 4:
+    motor(position,val[1]);
+    Serial.print("Ready");
+    break;
   }
  }
 }
+
+void interrupt1(){
+    Serial.println("interrupt button oben");
+    motor(254,' ');
+    delay(200);
+    motor(0,' ');
+  }
+void interrupt2(){
+    Serial.println("interrupt button unten");
+    motor(254,'a');
+    delay(200);
+    motor(0,'a');
+    }

+ 9 - 4
Gripper_gui_test.py

@@ -1,5 +1,6 @@
 import PySimpleGUI as sg
 import serial
+import numpy
 import time
 slider_width = 100
 slider_hight = 40
@@ -15,7 +16,7 @@ layout = [
     [sg.Text('Servomotor 3')],
     [sg.Slider(range=(300, 700), size=(slider_width, slider_hight), default_value=512, orientation='h', key='-SLIDER3-'), sg.Button('Reset', key='-BUTTON3-',size=(button_width,button_hight))], #enable_events=True,
     [sg.Text('Motor')],
-    [sg.Slider(range=(300, 700), size=(slider_width, slider_hight), default_value=512, orientation='h', key='-SLIDER4-'), sg.Button('Reset', key='-BUTTON4-',size=(button_width,button_hight))],
+    [sg.Slider(range=(-254, 254), size=(slider_width, slider_hight), default_value=0, orientation='h', key='-SLIDER4-'), sg.Button('Reset', key='-BUTTON4-',size=(button_width,button_hight))],
     [sg.Button('OK',size=(button_width,button_hight)),sg.Button('Reset',key='-BUTTON5-',size=(button_width,button_hight))]
 ]
 arduino = serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=.1)
@@ -56,8 +57,8 @@ while True:
         values['-SLIDER2-']=512.0
         window['-SLIDER3-'].update(512)
         values['-SLIDER3-']=512.0
-        window['-SLIDER4-'].update(512)
-        values['-SLIDER4-']=512.0
+        window['-SLIDER4-'].update()
+        values['-SLIDER4-']=0
     # Werte der Schieberegler abrufen
     slider1_value = values['-SLIDER1-']
     slider2_value = values['-SLIDER2-']
@@ -69,6 +70,10 @@ while True:
     print("Slider 2:", slider2_value)
     print("Slider 3:", slider3_value)
     print("Slider 4:", slider4_value)
+    val_1 = "0"
+    if slider4_value < 0:
+        slider4_value = numpy.abs(slider4_value)
+        val_1 = "1"
     print("1 " + str(int(slider1_value)))
     print("2 " + str(int(slider2_value)))
     print( "3 " + str(int(slider3_value)))
@@ -76,7 +81,7 @@ while True:
     write_read(str("1 "+str(int(slider1_value))))
     write_read(str("2 "+str(int(slider2_value))))
     write_read(str("3 "+str(int(slider3_value))))
-    write_read(str("4 "+str(int(slider4_value))))
+    write_read(str("4"+val_1+str(int(slider4_value))))
 
 # GUI schließen
 window.close()