Devices & Components
Arduino Uno Rev3
Basic Piezo Buzzer
9g Servo
Hardware & Tools
Friend with a 3D printer
Software & Tools
Arduino IDE
Project description
Code
FoxBotCode
This is the code for the project.
1#include <Buzzer.h> 2#include <Servo.h> 3 4#define TAIL_MAX 50 5#define TAIL_MIN 130 6 7Servo myservo; // create servo object to control a servo 8 9//notes that will be played 10int notes[] = {NOTE_G3, NOTE_B3, NOTE_B3, 0, NOTE_D3, NOTE_D3, NOTE_F3, NOTE_F3, 0, NOTE_D3, NOTE_F3, NOTE_F3, NOTE_C3, NOTE_E3, 11NOTE_D3, NOTE_C3, NOTE_C3, 0, NOTE_G3, NOTE_G3, NOTE_F3, NOTE_F3, NOTE_D3, NOTE_D3, NOTE_F3, NOTE_F3, 0, NOTE_D3, NOTE_F3, 12NOTE_B3, NOTE_A3, NOTE_G3, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_B3, NOTE_B3, 0, NOTE_G3, NOTE_G3, NOTE_B3, 13NOTE_B3, NOTE_A3, 0, NOTE_F3, NOTE_F3, NOTE_B3, NOTE_A3, NOTE_G3, NOTE_G3, NOTE_F3, NOTE_G3, NOTE_F3, NOTE_G3, 0, NOTE_G3, 14NOTE_G3, NOTE_B3, NOTE_B3, 0, NOTE_G3, NOTE_G3, NOTE_B3, NOTE_B3, NOTE_A3, 0, NOTE_F3, NOTE_F3, NOTE_E3, NOTE_G3, NOTE_C3, 0, 15NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_B3, 0, NOTE_B3, NOTE_C4, NOTE_C4, NOTE_C4, 16NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_B3, NOTE_B3, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_C4, 17NOTE_C4, NOTE_C4, NOTE_F3, NOTE_E3, NOTE_G3, NOTE_C3, 0}; 18 19//note lengths to be played 20int note_lengths[] = {250, 250, 500, 500, 500, 250, 250, 500, 500, 500, 500, 500, 500, 500, 250, 250, 500, 500, 500, 250, 250, 500, 21500, 250, 250, 500, 750, 250, 250, 500, 250, 250, 500, 250, 250, 500, 500, 250, 250, 1000, 250, 250, 250, 250, 250, 750, 750, 22250, 250, 500, 250, 250, 250, 250, 250, 250, 750, 250, 250, 250, 250, 1000, 250, 250, 250, 250, 250, 1750, 750, 250, 250, 23250, 250, 250, 250, 250, 250, 250, 250, 250, 125, 250, 125, 250, 125, 125, 250, 250, 250, 250, 125, 250, 250, 125, 125, 125, 24250, 250, 250, 250, 125, 250, 125, 250, 250, 250, 500, 250, 250}; 25 26Buzzer buzzer(11, 13); 27 28void setup() { 29 myservo.attach(6); // attaches the servo on pin 9 to the servo object 30 myservo.write(90); //move servo to 90 degrees 31 delay(500); 32 myservo.detach(); 33} 34 35void loop() { 36 wait_minutes(40); 37 squirel_dance(); 38} 39 40void wait_minutes(int minutes) 41{ 42 int num_seconds = (60*minutes); 43 for(int i=0; i<num_seconds; i++) 44 { 45 delay(1000); //delay for 1 second 46 } 47} 48 49void squirel_dance() 50{ 51 //turn on buzzer and servo 52 buzzer.begin(10); 53 myservo.attach(6); 54 55 int servoPos = 90; //keeps track of servo speed 56 int servoDir = 0; //keeps track of servo direction 57 58 for(int i=0; i<109; i++) 59 { 60 if(servoPos >= 160) servoDir = 1; 61 if(servoPos <= 20) servoDir = 0; 62 63 if(servoDir == 0) servoPos += 7; 64 if(servoDir == 1) servoPos -= 7; 65 66 myservo.write(servoPos); 67 68 buzzer.sound (notes[i], note_lengths[i]); 69 70 } 71 buzzer.end(2000); 72 73 myservo.write(90); //move servo to 90 degrees 74 delay(500); 75 76 myservo.detach(); //turn off servo 77}
Downloadable files
FoxBotBase
This is the main part of the fox.
FoxBotBase.stl
This is the tail of the fox.
FoxBotTail
FoxBotTail.stl
Comments
Only logged in users can leave comments