Offline
Newbie
Karma: 0
Posts: 18
|
 |
« Reply #3 on: June 22, 2011, 03:09:34 pm » |
I have been assigned to program this project and i have hit a wall. I have limited experience in a class setting playing around with arduino so i am using that experience o lead me in programming and set up.
So first of all I am using this circuit to control the motors. [http://arduino-for-beginners.blogspot.com/2011/03/controlling-12v-dc-motorfan-with.html]
Its a series of optisolators and relays to get the 12v power. (external Power supply)
I have been using some blink tutorails to get the language down. I am using LED@HIGH for a period of time to represent the printers printing. I can get them to cycle but stopping is a problem. I want to stop them at the exact moment of a buttom press. Currentlly the loop has to cycle through all 8 at least once after the button is pressed in order to stop. SHould I move this over to the programming area? Anything to assit will be amazing.
int switchPin2 = 2; int switchPin = 1; int led1Pin = 13; int led2Pin = 12; int led3Pin = 11; int led4Pin = 10; int led5Pin = 9; int led6Pin = 8; int led7Pin = 7; int led8Pin = 6;
int val; int val2; int buttonState; int lightMode = 0;
void setup() { pinMode(switchPin, INPUT);
pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); pinMode(led5Pin, OUTPUT); pinMode(led6Pin, OUTPUT); pinMode(led7Pin, OUTPUT); pinMode(led8Pin, OUTPUT); Serial.begin(9600); // Set up serial communication at 9600b buttonState = digitalRead(switchPin); // read the initial state }
void loop(){ val = digitalRead(switchPin); // read input value and store it in val delay(100); // 10 milliseconds is a good amount of time val2 = digitalRead(switchPin); // read the input again to check for bounces if (val == val2) { // make sure we got 2 consistant readings! if (val != buttonState) { // the button state has changed! if (val == LOW) { // check if the button is pressed if (lightMode == 0) { // if its off lightMode = 1; // turn lights on! } else { if (lightMode == 1) { // if its all-on lightMode = 2; // make it blink! } else { if (lightMode == 2) { // if its blinking lightMode = 3; // make it wave! } else { if (lightMode == 3){ // if its waving, lightMode == 0; // turn light off! } } } } } } buttonState = val; // save the new state in our variable }
// Now do whatever the lightMode indicates if (lightMode == 0) { // all-off digitalWrite(led1Pin, LOW); digitalWrite(led2Pin, LOW); digitalWrite(led3Pin, LOW); digitalWrite(led4Pin, LOW); digitalWrite(led5Pin, LOW); digitalWrite(led6Pin, LOW); digitalWrite(led7Pin, LOW); digitalWrite(led8Pin, LOW); }
if (lightMode == 1) { // all-on test digitalWrite(led1Pin, HIGH); digitalWrite(led2Pin, HIGH); digitalWrite(led3Pin, HIGH); digitalWrite(led4Pin, HIGH); digitalWrite(led5Pin, HIGH); digitalWrite(led6Pin, HIGH); digitalWrite(led7Pin, HIGH); digitalWrite(led8Pin, HIGH); }
if (lightMode == 2) { // test done digitalWrite(led1Pin, LOW); digitalWrite(led2Pin, LOW); digitalWrite(led3Pin, LOW); digitalWrite(led4Pin, LOW); digitalWrite(led5Pin, LOW); digitalWrite(led6Pin, LOW); digitalWrite(led7Pin, LOW); digitalWrite(led8Pin, LOW); delay(100); } if (lightMode == 3) { // "wave" digitalWrite(led1Pin, HIGH); delay(1000); digitalWrite(led1Pin, LOW); digitalWrite(led3Pin, HIGH); delay(1000); digitalWrite(led3Pin, LOW); digitalWrite(led6Pin, HIGH); delay(1000); digitalWrite(led6Pin, LOW); digitalWrite(led4Pin, HIGH); delay(1000); digitalWrite(led4Pin, LOW); digitalWrite(led5Pin, HIGH); delay(1000); digitalWrite(led5Pin, LOW); digitalWrite(led7Pin, HIGH); delay(1000); digitalWrite(led7Pin, LOW); digitalWrite(led2Pin, HIGH); delay(1000); digitalWrite(led2Pin, LOW); digitalWrite(led8Pin, HIGH); delay(1000); digitalWrite(led8Pin, LOW); } }
|