
     f&	                     H    d dl Z d dlZd dlZ G d d          Zedk    rdS dS )    Nc                   n    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZddZd Zd Zd Zd Zd Zd ZdS )PCA9685         r               	               @   Fc                     t          j        d          | _        || _        || _        |                     | j        d           d S )N   r   )smbusSMBusbusaddressdebugwrite_PCA9685__MODE1)selfr   r   s      2/home/digit/Desktop/robocat/Code/Server/PCA9685.py__init__zPCA9685.__init__   s;    {1~~DHDLDJJJt|T"""""    c                 H    | j                             | j        ||           dS )z7Writes an 8-bit value to the specified register/addressN)r   write_byte_datar   )r   regvalues      r   r   zPCA9685.write"   s$    HT\366666r   c                 F    | j                             | j        |          }|S )z)Read an unsigned byte from the I2C device)r   read_byte_datar   )r   r!   results      r   readzPCA9685.read&   s     X$$T\377FMr   c                    d}|dz  }|t          |          z  }|dz  }t          j        |dz             }|                     | j                  }|dz  dz  }|                     | j        |           |                     | j        t          t          j        |                               |                     | j        |           t          j	        d           |                     | j        |dz             d	S )
zSets the PWM frequencyg    wAg      @g      ?g      ?      g{Gzt?   N)
floatmathfloorr&   r   r   _PCA9685__PRESCALEinttimesleep)r   freqprescalevalprescaleoldmodenewmodes         r   
setPWMFreqzPCA9685.setPWMFreq+   s    K6K5;;K3Kz++,,H ii%%G~%GJJt|W%%%JJtDJx$8$8 9 9:::JJt|W%%%JuJJt|Wt^,,,,,r   c                 &   |                      | j        d|z  z   |dz             |                      | j        d|z  z   |dz	             |                      | j        d|z  z   |dz             |                      | j        d|z  z   |dz	             dS )zSets a single PWM channelr      r   N)r   _PCA9685__LED0_ON_L_PCA9685__LED0_ON_H_PCA9685__LED0_OFF_L_PCA9685__LED0_OFF_H)r   channelonoffs       r   setPWMzPCA9685.setPWM<   s    JJt'	)29555JJt'	)27333JJt 7*C$J777JJt 7*C1H55555r   c                 4    |                      |d|           d S )Nr   )rA   )r   r>   dutys      r   setMotorPwmzPCA9685.setMotorPwmB   s    KK$r   c                 ^    |dz  dz  }|                      |dt          |                     dS )z3Sets the Servo Pulse,The PWM frequency must be 50HZi   i N  r   N)rA   r/   )r   r>   pulses      r   setServoPulsezPCA9685.setServoPulseD   s2    $JuEKKCJJ'''''r   N)r   F)__name__
__module____qualname___PCA9685__SUBADR1_PCA9685__SUBADR2_PCA9685__SUBADR3r   r.   r:   r;   r<   r=   _PCA9685__ALLLED_ON_L_PCA9685__ALLLED_ON_H_PCA9685__ALLLED_OFF_L_PCA9685__ALLLED_OFF_Hr   r   r&   r7   rA   rD   rG    r   r   r   r      s         )))'*++,,--..# # # #7 7 7  
- - -"6 6 6     ( ( ( ( (r   r   __main__)r0   r,   r   r   rH   rR   r   r   <module>rT      se      <( <( <( <( <( <( <( <(| ZD r   