Les oscilloscopes sont utilisés pour mesurer les intervalles de différents types de vagues et des signaux électriques . Leurs lectures aident à fournir des chercheurs au sein de comprendre la fréquence et l'intensité des ondes émises par les appareils électriques et d'autres sources . Pour le matériel dans un oscilloscope à travailler , il doit être relié à un programme logiciel qui interprète les mesures et les affiche dans un graphe . Instructions
1
Ouvrez une application d'édition de code ou d'utiliser une application d'édition de texte tel que TextEdit sous Mac OS X ou Bloc-notes dans Microsoft Windows. Créez un nouveau document pour abriter le script de l'oscilloscope Python.
2
définir les paramètres qui seront utilisés dans le script , ainsi que les deux bibliothèques Python nécessaires pour le script en utilisant le code suivant : Photos
import os , sysimport Imageimport serialimport pygameimport temps
de pyBusPirateLite.UART import * à partir de pyBusPirateLite.BitBang import *
3
Définir le débit de données et utiliser la fonction d'impression pour permettre au programme de graphique les entrées faites par l'oscilloscope :
DATA_RATE = 5720,0 # mesures /seconde ( estimé experimenticaly ) DEFAULT_TIME_SCALE = RES_X /DATA_RATE # temps par défaut en secondes pour faire une fenêtre fillpygame . init () pb = UART ( BUS_PIRATE_DEV , 115200 ) print " Entrer binmode : " si bp.BBmode () : print " OK. " else : print " . échoué" sys.exit ()
4
définir les paramètres de la fenêtre de l'application en utilisant la fonction de pygame.display : fenêtre
= pygame.display.set_mode ( ( RES_X , RES_Y ) ) background = (0,0 , 0) = ligne ( 0,255,0 ) trig_color = ( 100,100,0 )
5
créer le script de l'oscilloscope lui-même en définissant les paramètres qui seront écrites sur le graphique et fournissant des arguments pour le x et y- axe :
bp.port.write ("\\ x15" ) while 1: complot = {} {} = tension maxv = 0minv = 100time_scale = DEFAULT_TIME_SCALE * time_divprev_voltage = 0measure = 0; si ( trig_mode = NO_SYNC ! ): pour k in range ( 1,2000 ) : prev_voltage = voltagemeasure = bp.response (2 , True) tension = ord ( mesure [0]) << 8voltage = tension + ord ( mesure [ ,"1] ) = tension ( voltage/1024.0 ) * 6.6 # hausse slopeif ( (tension > = trigger_level ) et ( prev_voltage < (tension * TRIG_CAL ) ) et ( trig_mode == RISING_SLOPE ) ) : breakif ( (tension < trigger_level ) et (tension > 0,01) et ( prev_voltage > tension /TRIG_CAL ) et ( trig_mode == FALLING_SLOPE ) ) : breakfor i in range ( RES_X ): pour k in range ( time_div - 1): # ignorant ( time_div -1 ) échantillons pour atteindre resolutionbp.response de l'heure (2 , True) = mesure bp.response (2 , True) = tension ord ( mesure [0]) << 8voltage = tension + ord ( mesure [ 1] ) = tension ( voltage/1024.0 ) * 6.6plot [i] = voltagefor i in range (1, RES_X ) : si complot [ i ]> maxv : maxv = plot [ i ] si complot [ i ] < minv : minv = plot [ ,"i ] y = ( RES_Y ) - terrain [ i ] * ( RES_Y /MAX_VOLTAGE ) - OFFSETx = IPX = i-1 ; py = ( RES_Y ) - terrain [i- 1 ] * ( RES_Y /MAX_VOLTAGE ) - OFFSETpygame.draw . La ligne ( fenêtre , une ligne, ( px , py) , (x, y ) ) = trig_y RES_Y - trigger_level * ( RES_Y /MAX_VOLTAGE ) pygame.draw.line ( fenêtre , trig_color , ( 0 , trig_y ) , ( RES_X , trig_y ) )
6
finaliser l' oscilloscope en définissant les paramètres de l'interface utilisateur graphique de l'oscilloscope :
# # GUI) font = pygame.font.Font (None , 19) = text_max_voltage police . render ( "Max : % f V "% maxv , 1, (255, 255, 255 ) ) = text_min_voltage font.render ( "Min : % f V "% minv , 1, (255, 255, 255 ) ) text_time_scale = font.render ( " Délai: de % f" % time_scale , 1, (255, 255, 255 ) ) = text_maxv_Rect text_max_voltage.get_rect () text_minv_Rect = text_min_voltage.get_rect () text_time_scale_Rect = text_time_scale.get_rect () text_maxv_Rect . x = 10text_maxv_Rect.y = 10text_minv_Rect.x = 10text_minv_Rect.y = 30text_time_scale_Rect.x = 10text_time_scale_Rect.y = 50window.blit ( text_max_voltage , text_maxv_Rect ) window.blit ( text_min_voltage , text_minv_Rect ) window.blit ( text_time_scale , text_time_scale_Rect )