Threading Megapi Python


#1

Hello I wanted two functions parallel with threading run however functioned the night since already in Megapi a threading runs.
How can I run multiple functions in parallel?

Megapi import
from megapi import *
import time, os, random


from threading import Thread



global stopp_turn
global time_stopp


def onRead(v):
    global Ultraschall;
    Ultraschall = v;
    #print "distance:"+str(Ultraschall)+" cm";
    

   # So lange stopp = 0 arbeitet dieser Thread in der
   # Endlosschleife.
def control():
    global stopp_control
    global time_stopp
    stopp_control = 0
    turn_degree = 0
    bot = MegaPi()
    bot.start()
    sleep(1);
    while stopp_control == 0: 
            sleep(1);
            bot.encoderMotorRun(1,100);
            bot.encoderMotorRun(2,100);
            sleep(1);
            bot.encoderMotorRun(1,0);
            bot.encoderMotorRun(2,0);
            if time_stopp < time.time():
                stopp_control = 1
                print "Programm Ende";
            

def sensoren():
    global stopp_control
    global time_stopp
    stopp_control = 0
    bot = MegaPi()
    bot.start()
    sleep(1);
    while stopp_control == 0:
        bot.ultrasonicSensorRead(7,onRead);
        print "Thread Sensor Run";
        sleep(1);
        
        
    
laufzeit=input("Bitte die Zeit in Minuten eingeben die das Roboter-Auto fahren soll: ")    
time_stopp = laufzeit*60 + time.time()

t_control = Thread(target=control)
t_sensoren = Thread(target=sensoren)

t_control.start()
t_sensoren.start()

#2

Can someone take a sample post how I can let the robot drive with Python over an ultrasonic sensor?
I just can not get it running

#Megapi import
from megapi import *
import time, os, random

# Threads Bibliothek importieren.
#from threading import Thread


# stopp Bedingung für die While Schleifen der Threads.
global stopp_turn
global time_stopp
global leftSpeed
global rigthSpeet


    #Funktion Fahren in welche Richtung
    def move(direction,speed):
        if direction == 1:
            #Vorwärz
            leftSpeed =  -speed
            rigthSpeet =  speed
        elif direction == 2:
            #Rückwärz
            leftSpeed =   speed
            rigthSpeet = -speed
        elif direction == 3:
            #Rückwärz
            leftSpeed =   speed
            rigthSpeet =  speed
        elif direction == 4:
            #Rückwärz
            leftSpeed =  -speed
            rigthSpeet = -speed
        else:
            leftSpeed =  0
            rigthSpeet = 0
        bot.encoderMotorRun(1,rigthSpeet);
        bot.encoderMotorRun(2,leftSpeed);
        print("move",direction)



    def onRead(v):
        global ultrasonic;
        ultrasonic = v;
        print "distance:"+str(v)+" cm";
                

       # So lange stopp = 0 arbeitet dieser Thread in der
       # Endlosschleife.
    def control():
        global stopp_control
        global time_stopp
        stopp_control = 0
        turn_degree = 0
        bot = MegaPi()
        bot.start()
        sleep(1);
        while stopp_control == 0:
            bot.ultrasonicSensorRead(7,onRead);
            if ultrasonic > 100:
                move(1,100)
                print "move(FWD)"
            else:
                move(1,0)
                print "move(STOP)"
            print "Programm Run";
            time.sleep( 1 )    
            if time_stopp < time.time():
                stopp_control = 1
                print "Programm Ende";
                

               
        
    laufzeit=input("Bitte die Zeit in Minuten eingeben die das Roboter-Auto fahren soll: ")    
    time_stopp = laufzeit*60 + time.time()

    
    control()

#4

What is the error you are getting?


#5

@roboterpi - Hi, were you able to use the Ultrasonic Sensor with Python and Raspberry Pi ?
Thanks again.


#6