a
    ºMeí/  ã                   @   sP   d dl Z ddlmZ d dlmZ d dlmZ dZdZe  	e
¡ZG dd„ dƒZdS )	é    Né   )Ú	epdconfig)ÚImageéh   éÔ   c                   @   sÔ   e Zd Zdd„ Zg d¢Zg d¢Zg d¢Zg d¢Zg d¢Zg d¢Z	g d¢Z
g d	¢Zg d
¢Zg d¢Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'S )(ÚEPDc                 C   s0   t j| _t j| _t j| _t j| _t	| _
t| _d S )N)r   ZRST_PINÚ	reset_pinZDC_PINÚdc_pinZBUSY_PINÚbusy_pinZCS_PINÚcs_pinÚ	EPD_WIDTHÚwidthÚ
EPD_HEIGHTÚheight©Úself© r   úM/home/pi/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd2in13d.pyÚ__init__+   s    zEPD.__init__),r   é   r   r   r   é   é`   é(   r   r   r   r   r   é   r   r   r   r   r   é   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )*é@   r   r   r   r   r   é   r   r   r   r   r   r   r   r   r   r   r   é    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )*r   é   r   r   r   r   r   é   r   r   r   é   r   é
   r   r   r   r   r   é   r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )*é€   r   r   r   r   r   r   r   r   r   r   r   r#   r   r   r   r   r   éP   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ),r   é   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )*r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )*r#   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )*r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   sL   t  | jd¡ t  d¡ t  | jd¡ t  d¡ t  | jd¡ t  d¡ d S )Nr   éÈ   r   é   )r   Údigital_writer   Údelay_msr   r   r   r   Úresetš   s    

z	EPD.resetc                 C   s:   t  | jd¡ t  | jd¡ t  |g¡ t  | jd¡ d S )Nr   r   ©r   r(   r	   r   Zspi_writebyte)r   Zcommandr   r   r   Úsend_command¢   s    zEPD.send_commandc                 C   s:   t  | jd¡ t  | jd¡ t  |g¡ t  | jd¡ d S ©Nr   r   r+   ©r   Údatar   r   r   Ú	send_data¨   s    zEPD.send_datac                 C   s8   t  | jd¡ t  | jd¡ t  |¡ t  | jd¡ d S r-   )r   r(   r	   r   Zspi_writebyte2r.   r   r   r   Ú
send_data2¯   s    
zEPD.send_data2c                 C   s>   t  d¡ t | j¡dkr0|  d¡ t d¡ q
t  d¡ d S )Nze-Paper busyr   éq   éd   ze-Paper busy release)ÚloggerÚdebugr   Zdigital_readr
   r,   r)   r   r   r   r   ÚReadBusyµ   s
    

zEPD.ReadBusyc                 C   s    |   d¡ t d¡ |  ¡  d S )Nr   r3   )r,   r   r)   r6   r   r   r   r   ÚTurnOnDisplay¼   s    

zEPD.TurnOnDisplayc                 C   s  t  ¡ dkrdS |  ¡  |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  ¡  |  d¡ |  d	¡ |  d
¡ |  d¡ |  d¡ |  d¡ |  | j¡ |  | jd? d@ ¡ |  | jd@ ¡ |  d¡ |  d¡ dS )Nr   éÿÿÿÿr   r    é+   é   r   é   é¿   é   é0   é:   éa   r   éÿ   é‚   r   )r   Zmodule_initr*   r,   r0   r6   r   r   r   r   r   r   ÚinitÁ   s6    


















zEPD.initc                 C   sš   |   d¡ |  d¡ |   d¡ |  d¡ |   d¡ |  | j¡ |   d¡ |  | j¡ |   d¡ |  | j¡ |   d¡ |  | j¡ |   d	¡ |  | j¡ d S )
NrB   r   r$   é—   é    é!   é"   é#   é$   )r,   r0   r1   Ú
lut_vcomDCÚlut_wwÚlut_bwÚlut_wbÚlut_bbr   r   r   r   Ú
SetFullRegæ   s    








zEPD.SetFullRegc                 C   sš   |   d¡ |  d¡ |   d¡ |  d¡ |   d¡ |  | j¡ |   d¡ |  | j¡ |   d¡ |  | j¡ |   d¡ |  | j¡ |   d	¡ |  | j¡ d S )
NrB   r    r$   éG   rE   rF   rG   rH   rI   )r,   r0   r1   Ú	lut_vcom1Úlut_ww1Úlut_bw1Úlut_wb1Úlut_bb1r   r   r   r   Ú
SetPartReg÷   s    








zEPD.SetPartRegc                 C   s>  dgt | jd ƒ| j  }| d¡}|j\}}| ¡ }|| jkr®|| jkr®t d¡ t|ƒD ]N}t|ƒD ]@}|||f dkrh|t ||| j  d ƒ  d|d ?  M  < qhq\nŒ|| jkr:|| jkr:t d¡ t|ƒD ]`}t|ƒD ]R}|}	| j| d }
|||f dkrä|t |	|
| j  d ƒ  d|d ?  M  < qäqØ|S )	NrA   r   Ú1ZVerticalr   r#   Z
Horizontalr   )	Úintr   r   ÚconvertÚsizeÚloadr4   r5   Úrange)r   ÚimageÚbufZimage_monocolorZimwidthZimheightZpixelsÚyÚxZnewxZnewyr   r   r   Ú	getbuffer  s&    


2
0zEPD.getbufferc                 C   s˜   t d krd S | jd dkr*t| jd ƒ}nt| jd ƒd }|  d¡ |  dg| j | ¡ t d¡ |  d¡ |  |¡ t d¡ |  ¡  |  	¡  d S )Nr   r   r   é   r!   é   )
r   r   rX   r,   r1   r   r   r)   rO   r7   )r   r]   Ú	linewidthr   r   r   Údisplay   s    




zEPD.displayc                 C   s2  t d krd S |  d¡ |  d¡ |  d¡ |  | jd ¡ |  d¡ |  d¡ |  t| jd ƒ¡ |  | jd d ¡ |  d¡ | jd dkržt| jd ƒ}nt| jd ƒd }dg| j | }t| j| ƒD ]}||  ||< qÎ|  d¡ |  |¡ t 	d	¡ |  d
¡ |  |¡ t 	d	¡ |  
¡  |  ¡  d S )Né‘   r   r   r   é   r   r   rb   r!   rc   )r   r,   r0   r   rX   r   r\   r1   r   r)   rV   r7   )r   r]   rd   r^   Úir   r   r   ÚDisplayPartial4  s2    











zEPD.DisplayPartialc                 C   s˜   | j d dkrt| j d ƒ}nt| j d ƒd }|  d¡ |  dg| j | ¡ t d¡ |  d¡ |  dg| j | ¡ t d¡ |  ¡  |  ¡  d S )Nr   r   r   rb   r!   rc   rA   )	r   rX   r,   r1   r   r   r)   rO   r7   )r   rd   r   r   r   ÚClearX  s    



z	EPD.Clearc                 C   sH   |   d¡ |  d¡ |   d¡ |   d¡ |  d¡ t d¡ t ¡  d S )Nr$   é÷   r   é   é¥   iÐ  )r,   r0   r   r)   Úmodule_exitr   r   r   r   Úsleepi  s    





z	EPD.sleepN)Ú__name__Ú
__module__Ú__qualname__r   rJ   rK   rL   rM   rN   rQ   rR   rS   rT   rU   r*   r,   r0   r1   r6   r7   rC   rO   rV   ra   re   ri   rj   ro   r   r   r   r   r   *   s2   






%$r   )ÚloggingÚ r   ÚPILr   ZRPi.GPIOZGPIOr   r   Ú	getLoggerrp   r4   r   r   r   r   r   Ú<module>   s   
