예제 #1
0
def tone(note, duration):
    if note == 0:
        time.sleep(duration)
        time.sleep(duration * 0.8)
    else:
        pwm = GPIO.PWM(32, note)
        pwm.start(50)
        time.sleep(duration)
        pwm.stop()
        time.sleep(duration * 0.8)
예제 #2
0
def pwm_led_test():
    pwm = GPIO.PWM(32, 50)
    pwm.start(100)

    for i in range(0, 10):
        for x in range(0, 101, 5):
            pwm.ChangeDutyCycle(x)
            time.sleep(0.05)
        for x in range(100, -1, -5):
            pwm.ChangeDutyCycle(x)
            time.sleep(0.05)
예제 #3
0
    def servo(angle):
        dutyCycle = (angle + 45) / 18  #convert degrees to duty cycle
        GPIO.setmode(GPIO.ASUS)
        GPIO.setwarnings(False)

        servo = 32

        GPIO.setup(servo, GPIO.OUT)
        pwm = GPIO.PWM(servo, 50)
        pwm.ChangeDutyCycle(dutyCycle)
        time.sleep(1)
예제 #4
0
    def setUp(self):
        # GPIO.setmode(GPIO.BCM)

        GPIO.setup(self.in1, GPIO.OUT)
        GPIO.setup(self.in2, GPIO.OUT)
        GPIO.setup(self.en, GPIO.OUT)
        GPIO.output(self.in1, GPIO.LOW)
        GPIO.output(self.in2, GPIO.LOW)
        self.p = GPIO.PWM(self.en, 1000)

        self.p.start(self.speeds[1])
    def __init__(self,
                 pwm_pin,
                 n1_pin,
                 n2_pin,
                 tick_pin,
                 m_pr_tick,
                 pwm_speed=100,
                 control_loop_hz=100.0):
        # pins
        self.pwm_pin = pwm_pin
        self.n1_pin = n1_pin
        self.n2_pin = n2_pin
        self.tick_pin = tick_pin
        # options
        self.pwm_speed = pwm_speed
        self.control_loop_hz = control_loop_hz
        self.m_pr_tick = m_pr_tick

        self.p_gain = 0
        self.i_gain = 0.01

        # variables
        self.last_tick = rospy.get_rostime()
        self._set_speed = 0.0
        self.speed = 0.0
        self.direction = 0.0
        self.p_reg = 0.0
        self.i_reg = 0.0
        self.last_pwm = 0.0
        self.got_tick = False
        self.direction = 0

        # Pin setup
        self.N1 = GpioTogglePin(self.n1_pin)
        self.N2 = GpioTogglePin(self.n2_pin)
        GPIO.setup(self.pwm_pin, GPIO.OUT)
        GPIO.setup(self.tick_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

        self.pwm = GPIO.PWM(self.pwm_pin, self.pwm_speed)
        self.pwm.start(0.0)

        GPIO.add_event_detect(self.tick_pin,
                              GPIO.FALLING,
                              callback=self.tick_callback,
                              bouncetime=1)

        rospy.Timer(rospy.Duration(1.0 / self.control_loop_hz),
                    self.control_loop)
        rospy.Timer(rospy.Duration(0.1), self.speed_resetter)
예제 #6
0
    def __init__(self):

        #GPIOs

        self.led_pin = 7
        self.fan_pin = 8
        self.reset_pin = 3
        self.power_pin = 5
        self.check_pin = 10

        #vars

        self.fan_hysteresis = 5
        self.fan_starttemp = 60
        self.fan_hysteresis_pwm = 20
        self.fan_starttemp_pwm = 60
        self.reset_hold_short = 100
        self.reset_hold_long = 500
        self.debounce_time = 0.1
        self.counter_time = 0.01
        self.delay_until_reset = 2
        self.is_pwm = False

        #path

        self.kintaro_folder = "/opt/KintaroSnes/"
        self.start_folder = "start/"
        self.intro_video = self.kintaro_folder + self.start_folder + "intro.mp4"
        self.config_file = self.kintaro_folder + self.start_folder + "kintaro.config"
        # self.temp_command = 'vcgencmd measure_temp'

        #Set the GPIOs

        GPIO.setmode(GPIO.BOARD)  # Use the same layout as the pins
        GPIO.setwarnings(False)
        GPIO.setup(self.led_pin, GPIO.OUT)  # LED Output
        GPIO.setup(self.fan_pin, GPIO.OUT)  # Fan normal Output
        GPIO.setup(self.power_pin, GPIO.IN)  # set pin as input
        GPIO.setup(
            self.reset_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP
        )  # set pin as input and switch on internal pull up resistor
        GPIO.setup(self.check_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
        if self.return_config_bool("PWM_FAN"):
            self.is_pwm = True
            self.pwm = GPIO.PWM(self.fan_pin, 50)
            self.pwm.start(0)
예제 #7
0
def servo():
    pwm = GPIO.PWM(32, 50)
    pwm.start(2.5)  # min 2.5, max 11.5 180 degrees

    for i in range(0, 3):
        pwm.ChangeDutyCycle(2.5)
        print("0 degree")
        time.sleep(1.0)
        pwm.ChangeDutyCycle(7.0)
        print("90 degree")
        time.sleep(1.0)
        pwm.ChangeDutyCycle(11.5)
        print("180 degree")
        time.sleep(1.0)
        pwm.ChangeDutyCycle(7.0)
        print("90 degree")
        time.sleep(1.0)

    pwm.start(0)
예제 #8
0
    def pinUpdate(self, pin, value,type = 'plain',stepDelay = 0.003):
        print "pinUpdate p,v,t,pwmref: ",pin,value,type,self.pinRef[pin]
        print "pin",pin
        print "pvalue",self.pinValue
        self.pinValue[pin] = value
        self.mFreq = max(5,abs(value/2))
        if (self.ledDim < 100) and (type == 'plain'):
            type = "pwm"
            value = value * self.ledDim
        try:
            print pin,value,type,self.pinUse[pin]
            if type[0:3] == "pwm": # 
                print "processing pwm"
                #return
                if (self.pinInvert[pin] == True): # Invert data value (needed for active low devices)
                    value = 100 - abs(value)
                    
                print "motor freq calc", self.mFreq
                try: 
                    print "try jsut updating pwm"
                    self.pinRef[pin].ChangeDutyCycle(max(0,min(100,abs(value)))) # just update PWM value
                    if type == "pwmmotor":
                        #print "motor freq used a", self.mFreq
                        self.pinRef[pin].ChangeFrequency(self.mFreq) # change freq to motor freq
                    elif type != "pwmbeep":
                        #print "motor freq used a", self.mFreq
                        self.pinRef[pin].ChangeFrequency(self.pFreq) # change freq to motor freq                        
             
                    print "updating pwm suceceed"
                except:
                    print "pwm not set so now setting up"
                    try:
                        GPIO.remove_event_detect(pin)
                        self.callbackInUse[pin] = False
                    except:
                        pass
                       
                    GPIO.setup(pin,GPIO.OUT) # Setup
                    if type == "pwmmotor":
                        #print "motor freq used b", self.mFreq
                        self.pinRef[pin] = GPIO.PWM(pin,self.mFreq) # create new PWM instance
                    elif type != "pwmbeep":
                        #print "motor freq used a", self.mFreq
                        self.pinRef[pin] = GPIO.PWM(pin,self.pFreq) # create new PWM instance
                    self.pinRef[pin].start(max(0,min(100,abs(value)))) # update PWM value
                    print "pwm setup on pin",pin, "now has ref",self.pinRef[pin]
                    self.pinUse[pin] = self.PPWM # set pin use as PWM
         
            elif type == "plain":
                print "Plain processing- Pin " , pin , " commanded to be " , value
                print "pinUpdate p,v,t,pwmref: ",pin,value,type,self.pinRef[pin]
                if (self.pinInvert[pin] == True): # Invert data value (useful for 7 segment common anode displays)
                    value = 1 - abs(value)
                if (self.pinUse[pin] == self.POUTPUT): # if already an output
                    GPIO.output(pin, int(value)) # set output to 1 ot 0
                    print 'pin' , pin , ' was already an output.  Now set to' , value
                    
                elif (self.pinUse[pin] in [self.PINPUT,self.PINPUTNONE,self.PINPUTDOWN]): # if pin is an input
                    try:
                        GPIO.remove_event_detect(pin)
                        self.callbackInUse[pin] = False
                    except:
                        pass  
                    self.pinUse[pin] = self.POUTPUT # switch it to output
                    GPIO.setup(pin,GPIO.OUT)
                    GPIO.output(pin, int(value)) # set output to 1 to 0
                    #print 'pin' , pin , ' was an input - change to output value' , value                    
               
                  
                elif (self.pinUse[pin] == self.PUNUSED): # if pin is not allocated
                    self.pinUse[pin] = self.POUTPUT # switch it to output
                    GPIO.setup(pin,GPIO.OUT)
                    GPIO.output(pin,int(value)) # set output to 1 or 0
                    print 'pin' , pin , ' was ununsed - now out value ' , value            

                elif (self.pinUse[pin] == self.PPWM): # pin was set as pwm
                    print "pinUpdate p,v,t,pwmref: ",pin,value,type,self.pinRef[pin]
                    print "pwm pin", pin , " sent digital on off: ",value
                    value = 100 if value else 0
                    self.pinRef[pin].ChangeDutyCycle(value)

                    
        except ValueError:
            print "mistake made in trying to update an invalid pin"
            print pin,value,type
            pass
예제 #9
0
import ASUS.GPIO as GPIO
import unittest
import time

GPIO.setmode(GPIO.ASUS)
GPIO.setup(252, GPIO.OUT)
pwm = GPIO.PWM(252, 50)
pwm.start(100)

while True:
    for i in range(0, 3):
        for x in range(0, 101, 5):
            pwm.ChangeDutyCycle(x)
            time.sleep(0.1)
        for x in range(100, -1, -5):
            pwm.ChangeDutyCycle(x)
            time.sleep(0.1)
예제 #10
0
#!/usr/bin/python

import select
import socket
import ASUS.GPIO as GPIO
import time
import sys
import Queue

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(32, GPIO.OUT)

pwm = GPIO.PWM(32, 50)
pwm.start(2.5)              # min 2.5, max 11.5 180 degrees

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port

# Create a TCP/IP socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setblocking(0)

# Bind the socket to the port
server.bind((HOST, PORT))

# Listen for incoming connections
server.listen(5)

# Sockets from which we expect to read
inputs = [ server ]
예제 #11
0
#Testing for software PWM
import ASUS.GPIO as GPIO
import unittest
import time

GPIO.setmode(GPIO.ASUS)

while True:
    gpiovalue = int(input("Enter the gpio number:"))
    freqvalue = int(input("Enter the frequency value:"))
    GPIO.setup(gpiovalue, GPIO.OUT)
    pwm = GPIO.PWM(gpiovalue, freqvalue)
    pwm.start(50)
예제 #12
0
import ASUS.GPIO as GPIO
import time

GPIO.setmode(GPIO.ASUS)
GPIO.setwarnings(False)

myservo = 238

GPIO.setup(myservo,GPIO.OUT)
pwm = GPIO.PWM(myservo,50) # 50hz yani 20mslik periyod
pwm.start(2.5) # 0 derece

try:
	while True:
		print "0 derece"
		pwm.ChangeDutyCycle(2.5) #0 derece
		time.sleep(1) # wait 1sec
		print "90 derece"
		pwm.ChangeDutyCycle(7.5) #90 derece
		time.sleep(1)
		print "180 derece"
		pwm.ChangeDutyCycle(12.5) #180 derece
		time.sleep(1)
		print "90 derece"
		pwm.ChangeDutyCycle(7.5)
		time.sleep(1)
except KeyboardInterrupt:
	print "Hoscakal canim"
	GPIO.cleanup()

예제 #13
0
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv[1])
colorArg = str(sys.argv[1])
speedArg = int(sys.argv[2])
timeArg = int(sys.argv[3])
#Color pins
RED = 187
BLUE = 188
GREEN = 223

GPIO.setup(GREEN, GPIO.OUT)
GPIO.setup(RED, GPIO.OUT)
GPIO.setup(BLUE, GPIO.OUT)

pwmGREEN = GPIO.PWM(GREEN, 100)
pwmRED = GPIO.PWM(RED, 100)
pwmBLUE = GPIO.PWM(BLUE, 100)

pwmGREEN.start(0)
pwmRED.start(0)
pwmBLUE.start(0)

green = [100, 0, 0]
red = [0, 100, 0]
blue = [0, 0, 100]
blueStr = "blue"

purple = [0, 100, 100]
yellow = [100, 100, 0]
cyan = [100, 0, 100]
예제 #14
0
import ASUS.GPIO as GPIO
import time

# BOARD MODE
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.OUT)
GPIO.setup(5, GPIO.OUT)
GPIO.setup(7, GPIO.OUT)
p = GPIO.PWM(7, 0.01)

GPIO.setup(19, GPIO.OUT)
GPIO.setup(21, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
p1 = GPIO.PWM(23, 0.01)

while True:
    GPIO.output(3, GPIO.HIGH)
    GPIO.output(5, GPIO.LOW)
    GPIO.output(21, GPIO.HIGH)
    GPIO.output(19, GPIO.LOW)
    p.start(100)
    p1.start(100)
예제 #15
0
#!/usr/bin/env python3
import ASUS.GPIO as GPIO
import time
import datetime

print('Starting script at: %s ' % datetime.datetime.now())

GPIO.setmode(GPIO.ASUS)
GPIO.setwarnings(False)

myservo = 238
sleepTime = 5

GPIO.setup(myservo, GPIO.OUT)
pwm = GPIO.PWM(myservo, 5)
pwm.start(100)

time.sleep(sleepTime)
try:

    while True:
        actual_temp = 41000  #in case of problem with file reed, temp 41
        file = open('/sys/class/thermal/thermal_zone0/temp', 'r')
        actual_temp_string = file.read()
        file.close()
        try:
            actual_temp = int(actual_temp_string)
            actual_temp_in_degrees = int(round(actual_temp / 1000))
            #print('Actual CPU temp: ',actual_temp_in_degrees)
        except ValueError as error:
            print('Conversion from string did not work', actual_temp_string)
예제 #16
0
import ASUS.GPIO as GPIO
from control import Control

# Configuration
FAN_PIN     = 238
WAIT_TIME   = 1
PWM_FREQ    = 10

c = Control(configfile="fan_control.config")

# Setup GPIO pin
GPIO.setmode(GPIO.ASUS)
GPIO.setwarnings(False)

GPIO.setup(FAN_PIN, GPIO.OUT)
FAN = GPIO.PWM(FAN_PIN, PWM_FREQ)
FAN.start(c.duty_min)

try:
    while True:
        if c.has_hysterie():
            # Calculate desired FAN speed
            c.get_new_duty()
        FAN.ChangeDutyCycle(c.curr_duty)
        # Wait until next refresh
        time.sleep(WAIT_TIME)

# If a keyboard interrupt occurs, the GPIO is set to 0 and the program exits.
except KeyboardInterrupt:
    if c.is_logging:
        logging.error("STOPED BY KEYBOARD")