Add default hull pixelbot dance script
This commit is contained in:
parent
4d4b4ac71d
commit
5fc0a74263
1 changed files with 101 additions and 0 deletions
101
HullPixelBotDance/HullPixelBotDance.ino
Normal file
101
HullPixelBotDance/HullPixelBotDance.ino
Normal file
|
@ -0,0 +1,101 @@
|
|||
// This example drives the stepper motors directly
|
||||
// It makes the robot perform the "HullPixelBot Dance"
|
||||
// See if you can change the moves.
|
||||
// www.robmiles.com/hullpixelbot
|
||||
////////////////////////////////////////////////
|
||||
|
||||
//declare variables for the motor pins
|
||||
int rmotorPin1 = 0; // Blue - 28BYJ48 pin 1
|
||||
int rmotorPin2 = 1; // Pink - 28BYJ48 pin 2
|
||||
int rmotorPin3 = 2; // Yellow - 28BYJ48 pin 3
|
||||
int rmotorPin4 = 3; // Orange - 28BYJ48 pin 4
|
||||
// Red - 28BYJ48 pin 5 (VCC)
|
||||
|
||||
int lmotorPin1 = 4; // Blue - 28BYJ48 pin 1
|
||||
int lmotorPin2 = 5; // Pink - 28BYJ48 pin 2
|
||||
int lmotorPin3 = 6; // Yellow - 28BYJ48 pin 3
|
||||
int lmotorPin4 = 7; // Orange - 28BYJ48 pin 4
|
||||
// Red - 28BYJ48 pin 5 (VCC)
|
||||
|
||||
|
||||
int motorSpeed = 1200; //variable to set stepper speed
|
||||
int count = 0; // count of steps made
|
||||
int countsperrev = 512; // number of steps per full revolution
|
||||
int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
void setup() {
|
||||
//declare the motor pins as outputs
|
||||
pinMode(lmotorPin1, OUTPUT);
|
||||
pinMode(lmotorPin2, OUTPUT);
|
||||
pinMode(lmotorPin3, OUTPUT);
|
||||
pinMode(lmotorPin4, OUTPUT);
|
||||
pinMode(rmotorPin1, OUTPUT);
|
||||
pinMode(rmotorPin2, OUTPUT);
|
||||
pinMode(rmotorPin3, OUTPUT);
|
||||
pinMode(rmotorPin4, OUTPUT);
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
const int STOP = 0;
|
||||
const int FORWARD = 1;
|
||||
const int BACK = 2;
|
||||
const int LEFT = 3;
|
||||
const int RIGHT = 4;
|
||||
|
||||
int moveState = FORWARD;
|
||||
|
||||
void loop(){
|
||||
if(count < countsperrev ) {
|
||||
moveStep();
|
||||
}
|
||||
else
|
||||
{
|
||||
moveState++;
|
||||
if(moveState > RIGHT)
|
||||
moveState = FORWARD;
|
||||
count=0;
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
void moveStep()
|
||||
{
|
||||
for(int i = 0; i < 8; i++)
|
||||
{
|
||||
switch(moveState)
|
||||
{
|
||||
case STOP:
|
||||
return;
|
||||
case FORWARD:
|
||||
setOutputDir(i,7-i);
|
||||
break;
|
||||
case BACK:
|
||||
setOutputDir(7-i,i);
|
||||
break;
|
||||
case LEFT:
|
||||
setOutputDir(7-i,7-i);
|
||||
break;
|
||||
case RIGHT:
|
||||
setOutputDir(i,i);
|
||||
break;
|
||||
}
|
||||
delayMicroseconds(motorSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
void setOutputDir(int leftOut, int rightOut)
|
||||
{
|
||||
|
||||
digitalWrite(lmotorPin1, bitRead(lookup[leftOut], 0));
|
||||
digitalWrite(lmotorPin2, bitRead(lookup[leftOut], 1));
|
||||
digitalWrite(lmotorPin3, bitRead(lookup[leftOut], 2));
|
||||
digitalWrite(lmotorPin4, bitRead(lookup[leftOut], 3));
|
||||
|
||||
digitalWrite(rmotorPin1, bitRead(lookup[rightOut], 0));
|
||||
digitalWrite(rmotorPin2, bitRead(lookup[rightOut], 1));
|
||||
digitalWrite(rmotorPin3, bitRead(lookup[rightOut], 2));
|
||||
digitalWrite(rmotorPin4, bitRead(lookup[rightOut], 3));
|
||||
}
|
||||
|
Loading…
Reference in a new issue