コード例 #1
0
def ondas(maxx, puntos, K, amplitud, f, phi, tipo):
    '''Calcula puntos de una onda de tipo tipo con los parametros dados'''
    count = 0
    y_record = []  #
    y_record2 = []
    y_res = []
    T = calculadora.ulinspace(maxx, puntos)

    tx = []
    for i in T:
        tx.append(maxx - i)

    if tipo == 1:
        for t in tx:
            y_sen = amplitud * math.sin((t * 2 * math.pi * f) + phi)
            y_record2.append(y_sen)
        print(len(y_record2))
    else:
        for k in range(1, K + 1):
            for t in tx:
                if tipo == 2:
                    y = amplitud * (4 / math.pi) * (math.sin(
                        ((2 * k - 1) * (2 * math.pi * f * t + phi))) /
                                                    (2 * k - 1))
                    y_record.append(y)
                elif tipo == 3:
                    y = (4 * amplitud / math.pi**2) * (math.cos(
                        ((2 * k - 1) * (2 * math.pi * f * t + phi))) /
                                                       (2 * k - 1)**2)
                    y_record.append(y)

                #y_record.append(y) #Lista de puntos de la funcion.
                #time.sleep_ms(10)
            count = count + 1
            #gc.collect()

        print(count, "ok")
        time.sleep(1)
        #print("Puntos: ",len(T), ", tamano del arreglo ", len(y_record), " presicion: ",K)
        for i in range(puntos):
            y_res.append(y_record[i] + y_record[i + (K - 1) * puntos])
            #time.sleep_ms(10)
        K = K - 1

        while K != 1:
            for i in range(puntos):
                y_res[i] = y_res[i] + y_record[i + (K - 1) * puntos]
                #time.sleep_ms(10)
            print("Tamano del arreglo res", len(y_res), "presicion: ", K)
            K = K - 1

    if tipo == 1:
        return y_record2
    else:
        return y_res
コード例 #2
0
def urectangular(max, puntos, K, amplitud):
    print("urectangular")
    print("Iniciando...")
    count=0
    y_record=[] #
    y_res=[]
    T = calculadora.ulinspace(max,puntos)

    #print(T)
    for k in range(1,K+1):
        #print("k -> ",k)
        for t in T:
            #print("Operacion: ", "k -> ",k, ", t -> ",t)
            y = amplitud*(4/math.pi)*(math.sin((2*k-1)*t)/(2*k-1))
            y_record.append(y) #Lista de puntos de la funcion.
            time.sleep_ms(40)
        count=count+1
        gc.collect()
        #diseno: esta agregando a la lista ambas funciones.
        
    #
    print(count, "ok")
    time.sleep(1)
    print("Puntos: ",len(T), ", tamano del arreglo ", len(y_record), " presicion: ",K)
    for i in range(puntos):
                #print("Suma: ", i, " con ", i+(K-1)*puntos )
                #time.sleep(0.2)
                y_res.append(y_record[i]+y_record[i+(K-1)*puntos])
                time.sleep_ms(40)
    K=K-1
    
    while K!=1:
        for i in range(puntos):
                #print("Suma while: ", i, " con ", i+(K-1)*puntos )
                #time.sleep(0.2)
                y_res[i]=y_res[i]+y_record[i+(K-1)*puntos]
                time.sleep_ms(40)
        print("Tamano del arreglo res", len(y_res), "presicion: ",K)
        K=K-1
    print(len(y_res))
コード例 #3
0
def main(max, puntos, K, amplitud):
    print("main")
    y_sum = 0  #
    y_record = []  #
    y_res = []
    T = calculadora.ulinspace(max, puntos)
    yt = []
    #print(T)
    for k in range(1, K + 1):
        #print("k -> ",k)
        for t in T:
            #print("Operacion: ", "k -> ",k, ", t -> ",t)
            y = amplitud * (4 / math.pi) * (math.sin(
                (2 * k - 1) * t) / (2 * k - 1))
            y_record.append(y)  #Lista de puntos de la funcion.
        #dise帽o: esta agregando a la lista ambas funciones.
    #
    print("Puntos: ", len(T), ", tama帽o del arreglo ", len(y_record),
          "presicion: ", K)
    for i in range(puntos):
        #print("Suma: ", i, " con ", i+(K-1)*puntos )
        #time.sleep(0.2)
        y_res.append(y_record[i] + y_record[i + (K - 1) * puntos])
    K = K - 1

    while K != 1:
        for i in range(puntos):
            #print("Suma while: ", i, " con ", i+(K-1)*puntos )
            #time.sleep(0.2)
            y_res[i] = y_res[i] + y_record[i + (K - 1) * puntos]
        print("Tama帽o del arreglo res", len(y_res), "presicion: ", K)
        K = K - 1

    plt.plot(T, y_res, "-o")
    plt.xlabel("t")
    plt.ylabel("y(t)")
    plt.title('Fenomeno de Gibbs', fontsize=16, color='r')
    plt.grid(True)
    plt.show()
コード例 #4
0
def urectangular(max, puntos, K, amplitud, w0, phi):
    print("urectangular")

    import framebuf
    spi = SPI(1, baudrate=328125, polarity=0, phase=0)
    cs = Pin(2)  #D4
    dc = Pin(15)  #D8
    rst = Pin(0)  #D3
    #bl = Pin(12, Pin.OUT, value=1) #D6
    print("Variables:OK")
    lcd = pcd8544.PCD8544(spi, cs, dc, rst)
    print("lcd ok")
    buffer = bytearray((lcd.height // 8) * lcd.width)
    framebuf = framebuf.FrameBuffer1(buffer, lcd.width, lcd.height)
    framebuf.fill(1)
    lcd.data(buffer)
    time.sleep(1)
    framebuf.fill(0)
    lcd.data(buffer)

    print("Iniciando...")
    count = 0
    y_record = []  #
    y_res = []
    T = calculadora.ulinspace(max, puntos)

    #print(T)
    for k in range(1, K + 1):
        #print("k -> ",k)
        for t in T:
            #print("Operacion: ", "k -> ",k, ", t -> ",t)
            y = amplitud * (4 / math.pi) * (math.sin(
                ((2 * k - 1) * (w0 * t + phi))) / (2 * k - 1))
            y_record.append(y)  #Lista de puntos de la funcion.
            time.sleep_ms(10)
        count = count + 1
        gc.collect()
        #diseno: esta agregando a la lista ambas funciones.

    #
    print(count, "ok")
    time.sleep(1)
    print("Puntos: ", len(T), ", tamano del arreglo ", len(y_record),
          " presicion: ", K)
    for i in range(puntos):
        #print("Suma: ", i, " con ", i+(K-1)*puntos )
        #time.sleep(0.2)
        y_res.append(y_record[i] + y_record[i + (K - 1) * puntos])
        time.sleep_ms(10)
    K = K - 1

    while K != 1:
        for i in range(puntos):
            #print("Suma while: ", i, " con ", i+(K-1)*puntos )
            #time.sleep(0.2)
            y_res[i] = y_res[i] + y_record[i + (K - 1) * puntos]
            time.sleep_ms(10)
        print("Tamano del arreglo res", len(y_res), "presicion: ", K)
        K = K - 1
    print(len(y_res))

    count = 1
    for y in y_res:
        print(y, round(y))
        time.sleep_ms(10)
        framebuf.pixel(count, 24 - round(y), 1)
        count = count + 1
    #eje y
    framebuf.vline(0, 0, 96, 0xffff)
    #eje x
    framebuf.hline(0, 24, 96, 0xffff)
    #escribiendo datas
    lcd.data(buffer)
コード例 #5
0
def ondas(max, puntos, presicion, amplitud, w0, phi):
    buf = bytearray(puntos)
    for i in range(len(buf)):
        buf[i] = 128 + int(amplitud*math.sin((i*w0)+phi))
        print(buf[i])
    return buf


  
#dac.write_timed(buf, 400 * len(buf), mode=DAC.CIRCULAR)
if __name__ == "__main__":
    #parametros=[max, puntos, presicion, amplitud, w0, phi]
    max=100
    puntos=100 #no funciona para puntos>200
    presicion=9 #K =presicion
    amplitud=16
    w0=0.1
    phi=90 
    res=ondas(max, puntos, presicion, amplitud, w0, phi)
    T = calculadora.ulinspace(max,puntos)
    #plt.plot(res[0],res[0])
    plt.plot(T, res, '*' )
    plt.xlabel("t")
    plt.ylabel("y(t)")
    plt.title('Onda test', fontsize=16, color='r')
    plt.grid(True)
    plt.show()
else:
    print("Ondas.py importado")