Пример #1
0
def tracer_grille(grille, agrandissement, angle, origine):
    n = 4000
    calibre = 0.1
    pwm_X = PWM(0)
    pwm_Y = PWM(
        1)  # il n'existe que 2 canaux pour implementer les PWMs (0 et 1)
    pwm_X.export()
    pwm_Y.export()
    pwm_X.period = 100000  # les unites sont en nanosecondes, ainsi dans cet exemple la periode vaut 100000*1ns = 100 us
    pwm_Y.period = 100000

    GPIO.setmode(
        GPIO.BOARD)  # On lit les pattes dans l'ordre classique en électronique
    GPIO.setup(35, GPIO.OUT)  # La broche 35 est configurée en sortie

    ##La fréquence max du lever/baisser de stylo et 4Hz. Donc 250ms.

    ###    Ecriture de la grille

    for i in range(0, len(grille)):
        for j in range(0, len(grille[0])):

            if (grille[i][j] != 0):

                seq_chiffre = choix(grille[i][j], i, j, agrandissement, angle)

                x = seq_chiffre[0]
                y = seq_chiffre[1]
                haut = seq_chiffre[2]
                for k in range(0, len(x)):
                    x[k] += origine[0] * calibre
                    y[k] += origine[1] * calibre

                stylo_haut()

                for k in range(0, len(x)):
                    if (k != 0):
                        lever_stylo(haut[k], haut[k - 1])

                    pwm_X.duty_cycle = int(x[k] * pwm_X.period / 3.3)
                    pwm_Y.duty_cycle = int(y[k] * pwm_Y.period / 3.3)
                    pwm_X.enable = True
                    pwm_Y.enable = True
                stylo_haut()

#Lorsque l'on a termine avec la table tracante
    pwm_X.enable = False  # On desactive la PWM
    pwm_Y.enable = False
    pwm_X.unexport()
    pwm_Y.unexport()
    GPIO.cleanup(
    )  # A la fin du programme on remet à 0 les broches du Rasberry PI
    return (0)
Пример #2
0
def calibrage():
    GPIO.setmode(
        GPIO.BOARD)  # On lit les pattes dans l'ordre classique en électronique
    GPIO.setup(35, GPIO.OUT)  # La broche 35 est configurée en sortie
    pwm_X = PWM(0)
    pwm_Y = PWM(
        1)  # il n'existe que 2 canaux pour implementer les PWMs (0 et 1)
    pwm_X.export()
    pwm_Y.export()
    pwm_X.period = 100000  # les unites sont en nanosecondes, ainsi dans cet exemple la periode vaut 100000*1ns = 100 us
    pwm_Y.period = 100000
    GPIO.output(35, GPIO.HIGH)
    for i in range(0, int(pwm_Y.period / 5)):
        pwm_Y.duty_cycle = 5 * i
        pwm_Y.enable = True

    for i in range(0, int(pwm_X.period / 5)):

        pwm_X.duty_cycle = 5 * i
        pwm_X.enable = True

    for i in range(0, int(pwm_Y.period / 5)):
        pwm_Y.duty_cycle = pwm_Y.period - 5 * i
        pwm_Y.enable = True

    for i in range(0, int(pwm_X.period / 5)):
        pwm_X.duty_cycle = pwm_X.period - 5 * i
        pwm_X.enable = True

    pwm_X.enable = False
    pwm_Y.enable = False
    stylo_haut()
    time.sleep(1)
    pwm_X.duty_cycle = int(pwm_X.period / 2)
    pwm_X.enable = True
    time.sleep(1)

    camera = picamera.PiCamera()
    camera.capture('calibrage.jpg')
    time.sleep(1)
    pwm_X.enable = False

    pwm_X.unexport()
    pwm_Y.unexport()
    GPIO.cleanup()
    return 1