예제 #1
0
    def __init__(self):
        # Create an advancedServo object
        try:
            self.__advancedServo = AdvancedServo()
        except RuntimeError as e:
            print('[ERROR] [ServoControl] Runtime Exception: %s' % e.details)
            return 1

        # set up our event handlers
        try:
            # logging example, uncomment to generate a log file
            #self.__advancedServo.enableLogging(PhidgetLogLevel.PHIDGET_LOG_VERBOSE, 'phidgetlog.log')

            self.__advancedServo.setOnAttachHandler(self.__attached)
            self.__advancedServo.setOnDetachHandler(self.__detached)
            self.__advancedServo.setOnErrorhandler(self.__error)
        except PhidgetException as e:
            print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details))
            return 1

        print('[INFO] [ServoControl] Opening phidget object....')

        try:
            self.__advancedServo.openPhidget()
        except PhidgetException as e:
            print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details))
            return 1

        print('[INFO] [ServoControl] Waiting for attach....')

        try:
            self.__advancedServo.waitForAttach(10000)
        except PhidgetException as e:
            print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details))
            try:
                self.__advancedServo.closePhidget()
            except PhidgetException as e:
                print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details))
                return 1
            return 1
        else:
            # self.__DisplayDeviceInfo()
            pass
예제 #2
0
    def __openSer(self):
        try:
            self._advancedServo = AdvancedServo()
        except RuntimeError as e:
            print("Servo - Runtime Exception: %s" % e.details)
            return False

        try:
            self._advancedServo.setOnAttachHandler(self.__onAttachedSer)
            self._advancedServo.setOnDetachHandler(self.__onDetachedSer)
            self._advancedServo.setOnErrorhandler(self.__onErrorSer)
        except PhidgetException as e:
            print("Servo - Phidget Exception %i: %s" % (e.code, e.details))
            return False

        try:
            self._advancedServo.openPhidget()
        except PhidgetException as e:
            print("Servo - Phidget Exception %i: %s" % (e.code, e.details))
            return False
        self._openSer = True
        return True
예제 #3
0
"""

#Basic imports
from ctypes import *
import sys
from time import sleep
#Phidget specific imports
from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException
from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, CurrentChangeEventArgs, PositionChangeEventArgs, VelocityChangeEventArgs
from Phidgets.Devices.AdvancedServo import AdvancedServo
from Phidgets.Devices.Servo import ServoTypes
from Phidgets.Phidget import PhidgetLogLevel

#Create an advancedServo object
try:
    advancedServo = AdvancedServo()
except RuntimeError as e:
    print("Runtime Exception: %s" % e.details)
    print("Exiting....")
    exit(1)

#stack to keep current values in
currentList = [0, 0, 0, 0, 0, 0, 0, 0]
velocityList = [0, 0, 0, 0, 0, 0, 0, 0]


#Information Display Function
def DisplayDeviceInfo():
    print(
        "|------------|----------------------------------|--------------|------------|"
    )
예제 #4
0
 def __init__(self, serial_number, yservo, zservo):
     self.controller = AdvancedServo()
     self.serial_number = serial_number
     self.yservo = yservo
     self.zservo = zservo
예제 #5
0
from Phidgets.Devices.AdvancedServo import AdvancedServo
from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException
from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, CurrentChangeEventArgs, PositionChangeEventArgs, VelocityChangeEventArgs
from Phidgets.Devices.AdvancedServo import AdvancedServo
from Phidgets.Devices.Servo import ServoTypes
import time
import sys
import socket

######################
# globals
stop = False

# Boards
servos = [AdvancedServo(), AdvancedServo()]  # two boards for the cube
serials = [392856, 392822]  # Boards IDs
actuators = [
    8, 4
]  #8 motors on the first board (top and vertical edges), and 4 motors for the other board

# a socket for listening UDP messages and then update actuators
address = ('localhost', 6006)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(address)


######################
# funcs
def engage():
    """Engage the 8 actuators and set position to 0"""
예제 #6
0
def AttachAdvancedServo(databasepath, serialNumber):
    def onAttachHandler(event):
        logString = "AdvancedServo Attached " + str(
            event.device.getSerialNum())
        DisplayAttachedDeviceInfo(event.device)

    def onDetachHandler(event):
        logString = "AdvancedServo Detached " + str(
            event.device.getSerialNum())
        DisplayDetachedDeviceInfo(event.device)

        event.device.closePhidget()

    def onErrorHandler(event):
        logString = "AdvancedServo Error " + str(
            event.device.getSerialNum()) + ", Error: " + event.description
        print(logString)

        DisplayErrorDeviceInfo(event.device)

    def onServerConnectHandler(event):
        logString = "AdvancedServo Server Connect " + str(
            event.device.getSerialNum())

    def onServerDisconnectHandler(event):
        logString = "AdvancedServo Server Disconnect " + str(
            event.device.getSerialNum())

    def currentChangeHandler(event):
        logString = "AdvancedServo Current Changed"

        try:
            conn = sqlite3.connect(databasepath)

            conn.execute(
                "INSERT INTO ADVANCEDSERVO_CURRENTCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
                (event.device.getSerialNum(), event.index, event.current))

            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    def positionChangeHandler(event):
        logString = "AdvancedServo Position Changed"
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)

            conn.execute(
                "INSERT INTO ADVANCEDSERVO_POSITIONCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
                (event.device.getSerialNum(), event.index, event.position))

            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    def velocityChangeHandler(event):
        logString = "AdvancedServo Velocity Changed"
        #print(logString)

        try:
            conn = sqlite3.connect(databasepath)

            conn.execute(
                "INSERT INTO ADVANCEDSERVO_VELOCITYCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)",
                (event.device.getSerialNum(), event.index, event.velocity))

            conn.commit()
            conn.close()
        except sqlite3.Error as e:
            print "An error occurred:", e.args[0]

    try:
        p = AdvancedServo()

        p.setOnAttachHandler(onAttachHandler)
        p.setOnDetachHandler(onDetachHandler)
        p.setOnErrorhandler(onErrorHandler)
        p.setOnServerConnectHandler(onServerConnectHandler)
        p.setOnServerDisconnectHandler(onServerDisconnectHandler)

        p.setOnCurrentChangeHandler(currentChangeHandler)
        p.setOnPositionChangeHandler(positionChangeHandler)
        p.setOnVelocityChangeHandler(velocityChangeHandler)

        p.openPhidget(serialNumber)

    except PhidgetException as e:
        print("Phidget Exception %i: %s" % (e.code, e.details))
        print("Exiting...")
        exit(1)
예제 #7
0
import threading  # Multi threading
from Phidgets.Devices.MotorControl import MotorControl  # Motor control
from Phidgets.Devices.AdvancedServo import AdvancedServo  # Servo control
from Phidgets.Devices.Servo import ServoTypes  # Servo type setting
import pygame  # General Pygame imports
from pygame import init as startPygame  # Initialize imported Pygame modules
from pygame import joystick, locals  # Logitech attack 3 joystick support
import tornado.web  # Tornado web framework
import tornado.ioloop  # I/O event loop for non-blocking sockets
import tornado.websocket  # Bi directional messages from server (this) to client (webpage)

# Motors and servo control boards
m1 = MotorControl()
m2 = MotorControl()
m3 = MotorControl()
s1 = AdvancedServo()

# Websocket list for storing values
wss = []


# Set motor acceleration
def setAllMotorsAcceleration(v):
    m1.setAcceleration(0, v)
    m1.setAcceleration(1, v)
    m2.setAcceleration(0, v)
    m2.setAcceleration(1, v)
    m3.setAcceleration(0, v)


# Tornado website application settings
예제 #8
0
파일: main.py 프로젝트: jackharrhy/bitbot
        servos = nServos
        outputs = nOutputs

        return True


from Phidgets.PhidgetException import *
from Phidgets.Events.Events import *
from Phidgets.Manager import Manager
from Phidgets.Phidget import PhidgetLogLevel

from Phidgets.Devices.MotorControl import MotorControl
motorC = MotorControl()

from Phidgets.Devices.AdvancedServo import AdvancedServo
servoC = AdvancedServo()

from Phidgets.Devices.InterfaceKit import InterfaceKit
interC = InterfaceKit()


def motorInpChange(e):
    inp = e.state
    print('[M] Motor Input: ' + str(inp))


def motorCurChange(e):
    cur = e.current
    print('[M] Motor Cur: ' + str(cur))