Difference between revisions of "User:S8brown"
Line 15: | Line 15: | ||
And Here's the code! | And Here's the code! | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | void setup() {<br> | + | int turn1 = 12; // choose the pins for controlling direction <br> |
− | + | int turn2 = 13;<br> | |
− | + | int tilt1 = 4; // choose the input pin (for the tilt sensors)<br> | |
− | + | int tilt2 = 5;<br> | |
− | + | int val1 = 0; // variable for reading the pin status<br> | |
+ | int val2 = 0;<br> | ||
+ | |||
+ | void setup() {<br> | ||
+ | pinMode(turn1, OUTPUT); // declare turn pins as output<br> | ||
+ | pinMode(turn2, OUTPUT);<br> | ||
+ | pinMode(tilt1, INPUT); // declare tilt sensors as input<br> | ||
+ | pinMode(tilt2, INPUT);<br> | ||
− | + | digitalWrite(0,HIGH); // write a HIGH to allow for current to flow through pin<br> | |
− | + | digitalWrite(1,HIGH);<br> | |
− | } | + | } |
− | void loop(){ | + | void loop(){ |
− | + | val1 = digitalRead(tilt1); // read input value | |
− | + | val2 = digitalRead(tilt2); | |
− | + | if (val1 == HIGH) { // if tilted, turn the motor! | |
− | + | pinMode(turn1,OUTPUT); // turn the pins on | |
− | + | pinMode(turn2,OUTPUT); | |
− | + | digitalWrite(turn1, LOW); // turn the motor! | |
− | + | digitalWrite(turn2, HIGH); | |
− | + | } | |
− | + | if (val2 == HIGH) { // if tilted, turn the motor! | |
− | + | pinMode(turn1,OUTPUT); // turn the pins on | |
− | + | pinMode(turn2,OUTPUT); | |
− | + | digitalWrite(turn1, HIGH); // turn the motor the other way! | |
− | + | digitalWrite(turn2, LOW); | |
− | + | } | |
− | + | if(val1 != HIGH && val2 != HIGH){ // if it's not tilted either way | |
− | + | pinMode(turn1,INPUT); // turn the output pins "off" | |
− | + | pinMode(turn2,INPUT); | |
− | + | } | |
− | } | + | } |
+ | |||
− | |||
[[User:S8brown/Project | Other Projects]] | [[User:S8brown/Project | Other Projects]] |
Revision as of 18:48, 11 June 2009
Hi I'm Seth.
For my midterm project, I created a tilt sensing motor. I made two tilt sensors out of ball bearings and bic pens and positioned them on either side of the motor at different angles. When the motor/device is tilted in one direction, it will spin clockwise, and when tilted the other direction, counter-clockwise. Originally I wanted to control a toy that would fall over and correct itself, but the motor it used takes a little more power than I was able to supply directly from the microprocessor, so this might be considered to be a prototype. As for the aesthetic of the device, it would be fitted to the duty it was designed to perform such as a handle for a fishing pole, etc. For testing, I affixed the components to a toilet paper tube with the tilt sensors pointing up a little bit so that they won't always be triggering.
(I let my friend borrow my Arduino, so there aren't any pictures of the "device" as a whole, but here are the main components!)
And Here's the code!
int turn1 = 12; // choose the pins for controlling direction
int turn2 = 13;
int tilt1 = 4; // choose the input pin (for the tilt sensors)
int tilt2 = 5;
int val1 = 0; // variable for reading the pin status
int val2 = 0;
void setup() {
pinMode(turn1, OUTPUT); // declare turn pins as output
pinMode(turn2, OUTPUT);
pinMode(tilt1, INPUT); // declare tilt sensors as input
pinMode(tilt2, INPUT);
digitalWrite(0,HIGH); // write a HIGH to allow for current to flow through pin
digitalWrite(1,HIGH);
}
void loop(){ val1 = digitalRead(tilt1); // read input value val2 = digitalRead(tilt2); if (val1 == HIGH) { // if tilted, turn the motor! pinMode(turn1,OUTPUT); // turn the pins on pinMode(turn2,OUTPUT); digitalWrite(turn1, LOW); // turn the motor! digitalWrite(turn2, HIGH); } if (val2 == HIGH) { // if tilted, turn the motor! pinMode(turn1,OUTPUT); // turn the pins on pinMode(turn2,OUTPUT); digitalWrite(turn1, HIGH); // turn the motor the other way! digitalWrite(turn2, LOW); } if(val1 != HIGH && val2 != HIGH){ // if it's not tilted either way pinMode(turn1,INPUT); // turn the output pins "off" pinMode(turn2,INPUT); } }