Plot square wave

Discussion in 'Python' started by Yigit Turgut, Jan 18, 2012.

  1. Yigit Turgut

    Yigit Turgut Guest

    Hi all,

    I am trying to generate a pseudo pwm signal, low-high transition will
    take place when screen goes from black to white and high-low
    transition when white to black. As a result I am trying to plot the
    signal. Here is my code;

    import time, pylab, numpy, scipy, pygame

    def _func1():
    global end
    global white
    global k
    global t
    global i
    k = numpy.arange(4)
    t = numpy.arange(4)
    i = 0
    f = open("test.txt", "w")
    white = True
    start = time.time()
    end = time.time() - start
    screen = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
    timer = pygame.time.Clock()
    test = repr(time.time())
    while(end<8.00):
    end = time.time() - start
    if white:
    screen.fill((255, 255, 255))
    time.sleep(1)
    k = 0
    t = end
    f.write(str(t) + "\t" + str(k) + "\n")
    i = i + 1
    print repr(end)

    else:
    screen.fill((0, 0, 0))
    time.sleep(1)
    k = 1
    t = end
    f.write(str(t) + "\t" + str(k) + "\n")
    i = i+ 1
    print repr(end)

    white = not white
    pygame.display.update()
    pygame.quit()

    if __name__ == "__main__":
    _func1()
    time,data = numpy.loadtxt('test.txt', unpack=True)
    print k
    print t
    print i
    pylab.plot(time,data)
    pylab.show()


    Problem is I get a sawtooth instead of a square wave. I know that I
    need to define points between 0,1,2 time integer values to achieve
    this. But I hope there is a python trick that will yield this
    time,data plot to a square wave?
     
    Yigit Turgut, Jan 18, 2012
    #1
    1. Advertising

  2. Yigit Turgut

    Peter Otten Guest

    Yigit Turgut wrote:

    > Problem is I get a sawtooth instead of a square wave. I know that I
    > need to define points between 0,1,2 time integer values to achieve
    > this. But I hope there is a python trick that will yield this
    > time,data plot to a square wave?


    There is no "Python trick", pylab is showing the data you provide. To get a
    square wave you need two y values per x value, for example

    import pylab

    time = [0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
    data = [0, 1, 1, 0, 0, 1, 1, 0, 0, 1]
    pylab.plot(time, data)
    pylab.ylim(-.1, 1.1) # so you see the horizontal lines of the graph
    pylab.xlim(-.1, 4.1)
    pylab.show()

    A general advice: try the individual aspects of your script (plotting,
    pygame flicker, data i/o) separately to make sure you understand them well
    enough before putting them together in the final version of your code.
     
    Peter Otten, Jan 18, 2012
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Sloan

    How to plot Sin wave ?

    Sloan, Aug 3, 2004, in forum: C++
    Replies:
    3
    Views:
    4,987
    Uwe Schnitker
    Aug 5, 2004
  2. red floyd
    Replies:
    5
    Views:
    1,092
    Nathan Wijnia
    Jun 21, 2007
  3. Karthik
    Replies:
    0
    Views:
    825
    Karthik
    Sep 5, 2007
  4. rara10
    Replies:
    0
    Views:
    965
    rara10
    Jan 30, 2009
  5. Shiva
    Replies:
    2
    Views:
    1,696
    Chris Maryan
    Feb 2, 2009
Loading...

Share This Page