Modifications

Sauter à la navigation Sauter à la recherche
1 886 octets ajoutés ,  5 avril 2025 à 21:06
Ligne 28 : Ligne 28 :  
Il est très facile de se faire une idée de la réponse lumière/résistance en utilisant des conditions d'illumination constante et en pratiquant une série de mesure en positionnant la main à une hauteur donnée puis en mesurant la réponse sur le convertisseur ADC.
 
Il est très facile de se faire une idée de la réponse lumière/résistance en utilisant des conditions d'illumination constante et en pratiquant une série de mesure en positionnant la main à une hauteur donnée puis en mesurant la réponse sur le convertisseur ADC.
   −
En utilisant le câblage du Theremin, le petit script [https://github.com/mchobby/pico-2-explorer/blob/main/projects/theremin/read.py read.py] (présent dans le projet Theremin) permet d'effectuer les relevés nécessaires "sans main" (la valeur 99999) puis à 30cm, 25cm, 20cm, 15cm, 10cm, 5cm et enfin 1cm?
+
En utilisant le câblage du Theremin, le petit script [https://github.com/mchobby/pico-2-explorer/blob/main/projects/theremin/read.py read.py] (présent dans le projet Theremin) permet d'effectuer les relevés nécessaires "sans main" (la valeur 99999) puis à 30cm, 25cm, 20cm, 15cm, 10cm, 5cm et enfin 1cm simplement en pressant le bouton lorsque la main est positionnée.
 +
 
 +
Les valeurs obtenues sont encodées sur 10 bits significatifs (donc de 0 à 1023) pour rester au dessus du bruit (voir [https://wiki.mchobby.be/index.php?title=P2E-Analog-Input-FR#ENOB_.3D_Bits_significatifs tutoriel sur l'entrée analogique]).
 +
 
 +
<syntaxhighlight lang="python">
 +
import micropython, time
 +
from machine import Pin, ADC
 +
micropython.alloc_emergency_exception_buf(100)
 +
 
 +
counter = 0
 +
 
 +
def bouton_cb( obj ):
 +
    global counter
 +
    counter += 1
 +
   
 +
# https://docs.micropython.org/en/latest/library/machine.Pin.html
 +
# https://docs.micropython.org/en/latest/reference/isr_rules.html
 +
btn = Pin( Pin.board.GP16, Pin.IN, Pin.PULL_UP )
 +
btn.irq( handler=bouton_cb, trigger=Pin.IRQ_FALLING )
 +
 
 +
a1 = ADC( Pin( Pin.board.GP27 ) )
 +
 
 +
read_for_cm = [99999,30,25,20,15,10,5,1]
 +
 
 +
index = 0
 +
print( "read for %i cm" % read_for_cm[index] )
 +
while True:
 +
    if counter>0: # Button pressed?     
 +
        val = 0
 +
        # Acquire analog on 10 bits
 +
        val = 0
 +
        for i in range( 10 ):
 +
            val += (a1.read_u16()>>6)
 +
        # calculer la moyenne
 +
        val = val/10
 +
       
 +
        print( "    %i of 1024" % vald )
 +
        index += 1
 +
        if index>=len( read_for_cm ):
 +
            index = 0
 +
       
 +
        # next value
 +
        print( "read for %i cm" % read_for_cm[index] )
 +
               
 +
        # Reset button detection
 +
        time.sleep_ms( 500 )
 +
        counter=0
 +
    else:
 +
        time.sleep_ms( 200 )
 +
</syntaxhighlight>
 +
 
 +
Ce qui permet de faire un relevé comme celui-ci dessous.
 +
 
 +
<nowiki>read for 99999 cm
 +
    793 of 1024
 +
read for 30 cm
 +
    770 of 1024
 +
read for 25 cm
 +
    758 of 1024
 +
read for 20 cm
 +
    755 of 1024
 +
read for 15 cm
 +
    742 of 1024
 +
read for 10 cm
 +
    708 of 1024
 +
read for 5 cm
 +
    634 of 1024
 +
read for 1 cm
 +
    499 of 1024</nowiki>
 +
 
 +
A noter également le minima de 500 et maxima de 793.
    
== Brancher ==
 
== Brancher ==
32 920

modifications

Menu de navigation