Mise en oeuvre d'une matrice 4x4

Bonjour à tous,

Avez-vous déjà mis en oeuvre ce type de projet ?

J’ai suivi ce tuto pour mettre en oeuvre une sécurité à code.

https://raspberrypi-tutorials.fr/connecter-un-clavier-raspberry-pi-code-lock/

J’ai donc acheté une :
-raspberry pi W V1.1
-matrice 4x4
-nape de fils

Lien d’achat pour la matrice 4x4.
https://www.amazon.fr/AZDelivery-Matrix-Clavier-Arduino-compris/dp/B08B3JR8W9/ref=sr_1_16?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=matrice+de+clavier+4x4&qid=1692689215&sr=8-16

Après avoir installé l’OS, j’ai choisi 8 pins disponible du connecteur J8 du raspberry pi W V1.1.

Voici le schématique.
https://datasheets.raspberrypi.com/rpizero/raspberry-pi-zero-w-reduced-schematics.pdf

Dans le code pour l’identification des chiffres/lettres, j’ai donc modifié.

ROW = [31, 33, 35, 37] // ce sont les N° de PIN pas N° de GPIO
COLUMN = [32, 38, 36, 40] // ce sont les N° de PIN pas N° de GPIO

Ensuite, j’ai executé le code principale mais je n’obtiens pas le résultat attendu en python3.

Le code ci-dessous est en python2.7 ou python3 ?

Auriez-vous des pistes ou déjà essayé ce tuto ?

Merci d’avance.

import time
import RPi.GPIO as GPIO
from keypad import keypad
 
GPIO.setwarnings(False)
 
if __name__ == '__main__':
    # Initialize
    kp = keypad(columnCount = 4)
 
    # waiting for a keypress
    digit = None
    while digit == None:
        digit = kp.getKey()
    # Print result
    print digit
    time.sleep(0.5)
 
    ###### 4 Digit wait ######
    seq = []
    for i in range(4):
        digit = None
        while digit == None:
            digit = kp.getKey()
        seq.append(digit)
        time.sleep(0.4)
 
    # Check digit code
    print(seq)
    if seq == [1, 2, 3, '#']:
        print "Code accepted"

hello,

normal, c est en python 2.7 ! a priori en rajoutant des parenthèses autour de la valeur que tu veux printer, tu auras une version python3
exemple :
print(seq)
print ("Code accepted")

la présence de GPIO.setmode(GPIO.BOARD) dans https://raw.githubusercontent.com/rainierez/MatrixKeypad_Python/master/matrix_keypad/RPi_GPIO.py doit indiquer une reference au GPIO …

ce que je capte pas c est le nom RPi_GPIO.py est a la fois le nom du module de pipy et le nom du programme contenant la class keypad !

mais mon niveau en python est pas top …

Finalement je suis partie sur ce projet.

Il prend en compte une matrice 4x4.

https://peppe8o.com/connect-raspberry-pi-with-matrix-keypad-to-get-user-codes-input/
https://peppe8o.com/download/python/4x4MatrixKeypad.py

Maintenant je voulais récupérer le token renvoyé d’une commande linux.

os.system('rm cookies.txt') arch = subprocess.check_output("curl -XPOST -c cookies.txt -d ...........") print (arch)

Voici la sortie du print.

{"access_token":"eyJ0eXAI1NiJ9.eyJpc3Mic3MifQ.DDY71FpHgQ","access_token_expires":7200,"refresh_token":"eyJ0eXiJ9.eyVkz__N9kliGO4Q","refresh_token_expires":86400,"credentials":"auth=d}

Je voulais récupérer le résultat d’un split via le caractère ".

token_tmp = arch.split('"')

L’erreur retournée est la suivante, mais comment déclarer un objet type bytes ?

TypeError: a bytes-like object is required, not 'str'

Ensuite, l’idée est juste de récupérer l’access token.

token_auth = token_tmp[2] print (token_tmp[2])

Merci pour vos retours.

la sortie du print semble etre un type dict ( a part q"il manque une double quote a la fin de auth=d ! ) donc tu devrais pouvoir récupérer l’access_token en faisant:

a={"access_token":"eyJ0eXAI1NiJ9.eyJpc3Mic3MifQ.DDY71FpHgQ","access_token_expires":7200,"refresh_token":"eyJ0eXiJ9.eyVkz__N9kliGO4Q","refresh_token_expires":86400,"credentials":"auth=d"}

print(type(a))

access_token = a["access_token"]
print(access_token)

SOURCE: