The purpose of my servo program was to provide a visualization for different types of numbers. In this case, numbers are divided into 3 different types, ‘happy’ (even numbers), ‘sad’ (odd numbers), and ‘special’ (numbers with special meaning like pi, and e). Each type of number has a different associated choreography. Happy numbers a received with a bouncing motion, followed by a series of accelerating claps. Conversely, sad numbers get a slow sweep and a series of ‘crawls’ back to the origin. Special numbers are explicitly spelled out by the position of the servo arm.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | def happyMotor(initPause,numClaps): #Bounce ringing_move(servo, 90.0 , duration = 1.5 ) #Clap for i in range (numClaps): if i % 2 = = 0 : servo.write( 200.0 ) else : servo.write( 0.0 ) clapPause = initPause / (i + 1 ) time.sleep(clapPause) pass def sadMotor(numDivs,initPause): #Initial Crawl linear_move(servo, 0 , 200.0 , speed = 400 ) time.sleep( 0.5 ) prevAng = 200 #Sigh x amount of times for i in range (numDivs): ang = 200.0 - (i + 1 ) * ( 200.0 ) / numDivs linear_move(servo, prevAng, ang, speed = 400 ) sighPause = initPause * (i + 1 ) time.sleep(sighPause) prevAng = ang pass def drawNum(num,start,end): for c in num: digit = int (c) ang = digit * (end - start) / 9 servo.write(ang) time.sleep( 0.5 ) while True : servo.write( 0.0 ) specialNums = { 'pi' , 'e' } num = input ( "Enter a number: " ) while not num.isdigit() and num not in specialNums: num = input ( "Haha nice try, now give me a NUMBER: " ) if num = = 'pi' : drawNum( "31415926535" , 0 , 200 ) elif num = = 'e' : drawNum( "271828" , 0 , 200 ) else : num = int (num) if num % 2 = = 0 : happyMotor( 1.0 , 15 ) else : sadMotor( 3 , 0.8 ) |
Leave a Reply
You must be logged in to post a comment.