Pages: [1]   Go Down
Author Topic: Iron man helmet faceplate and LED  (Read 2346 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey guys i'm new to the Arduino and i have a Arduino Uno and i don't know how to write the code.
Can some pro please write me a simple code which turn 180 to open up the faceplate and LED turn off with a press of a button, then if press again it will turn back 180 counter clock wide to close the faceplate then turn on the LED.
Logged

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 201
Posts: 8646
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
const int servoPin = 2;
const int buttonPin = 3;
const int LEDPin = 4;

#include <Servo.h>

Servo visorServo;

void setup() {
  visorServo.write(0);  // Initial position
  visorServo.attach(servoPin);

  pinMode(buttonPin, INPUT_PULLUP);  // Connect button between pin and GROUND. LOW when pushed.

  pinMode(LEDPin, OUTPUT);
  digitalWrite(LEDPin, LOW);  // LED off
}

void loop() {
  static unsigned long lastPushedTime = 0;
  static boolean visorClosed = true;
  static boolean lastButtonState = HIGH;
 
  boolean newButtonState = digitalRead(buttonPin);

  // If the button is down and it has been a while since it was last down...
  if (newButtonState  == LOW && lastButtonState == HIGH && millis() - lastPushedTime > 100) {
    lastPushedTime = millis();
    if (visorClosed) {
      visorServo.write(180); // Open visor
      visorClosed = false;
      digitalWrite(LEDPin, HIGH); // Turn on light
    }
    else {  // Viso is open
      visorServo.write(0); // Close visor
      visorClosed = true;
      digitalWrite(LEDPin, LOW); // Turn off light
    }
  }
 
  lastButtonState = newButtonState;
}
« Last Edit: January 11, 2013, 06:32:57 pm by johnwasser » Logged

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

UK
Offline Offline
Shannon Member
****
Karma: 222
Posts: 12518
-
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Turn *what* 180 degrees?
Logged

I only provide help via the forum - please do not contact me for private consultancy.

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 201
Posts: 8646
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Turn *what* 180 degrees?
I'm guessing a servo.
Logged

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

thread back from the dead, i am starting a similar project and the code provided works wonders , however i am trying to include a 2nd servo that moves in the opposite position as the 1st servo. i am new an dont know where to start. didnt mean to high jack 
Logged

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 201
Posts: 8646
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It's not hard to add a second servo:
Code:
const int servo1Pin = 2;
const int buttonPin = 3;
const int LEDPin = 4;
const int servo2Pin = 5;

#include <Servo.h>

Servo visorServo1;
Servo visorServo2;

void setup() {
  visorServo1.write(0);  // Initial position
  visorServo1.attach(servo1Pin);

  visorServo2.write(180); // initial position
  visorServo2.attach(servo2Pin);

  pinMode(buttonPin, INPUT_PULLUP);  // Connect button between pin and GROUND. LOW when pushed.

  pinMode(LEDPin, OUTPUT);
  digitalWrite(LEDPin, LOW);  // LED off
}

void loop() {
  static unsigned long lastPushedTime = 0;
  static boolean visorClosed = true;
  static boolean lastButtonState = HIGH;
  
  boolean newButtonState = digitalRead(buttonPin);

  // If the button is down and it has been a while since it was last down...
  if (newButtonState  == LOW && lastButtonState == HIGH && millis() - lastPushedTime > 100) {
    lastPushedTime = millis();
    if (visorClosed) {
      visorServo1.write(180); // Open visor
      visorServo2.write(0);
      visorClosed = false;
      digitalWrite(LEDPin, HIGH); // Turn on light
    }
    else {  // Viso is open
      visorServo1.write(0); // Close visor
      visorServo2.write(180);
      visorClosed = true;
      digitalWrite(LEDPin, LOW); // Turn off light
    }
  }
  
  lastButtonState = newButtonState;
}
Logged

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 its been 15 years since I've written code. Thanks for the quick reply
Logged

Pages: [1]   Go Up
Jump to: