Hello. I'm new to all this, and I'm trying to get a servo (pin 6) to loop movement after it receives input from pin 2. However, the servo starts the loop as soon as setup finishes.
// C++ code
//
#include <Servo.h>
int poop = 0;
Servo servo_6;
int counter;
void setup() {
servo_6.attach(6, 500, 2500);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(2, INPUT);
servo_6.write(0);
// countdown to active- sleeby mode
delay(1000); // Wait for 3000 millisecond(s)
// wakey mode now primed-wait for power to commence
digitalWrite(LED_BUILTIN, HIGH);
delay(500); // Wait for 500 millisecond(s)
digitalWrite(LED_BUILTIN, LOW);
}
void loop() {
if (digitalRead(2) == HIGH) {
;
servo_6.write(90);
delay(1000); // Wait for 1000 millisecond(s)
;
servo_6.write(0);
delay(1000); // Wait for 1000 millisecond(s)
}
}
Unexpected servo behavior is usually due to an inadequate power supply, like trying to use the 5V Arduino output for servo power. A separate power supply is the solution, but don't forget to connect the grounds.
This may keep some money in you pocket and save the trash haller some work.
Gil's Crispy Critter Rules for Processor Hardware:
Rule #1: An Arduino is NOT a Power Supply!
Rule #2: Never connect anything inductive (motors, speakers) directly to an Arduino!
Rule #3: Avoid connecting or disconnecting wires while the power is on.
Rule #4: Do not apply power to any pin unless you are certain of what you're doing.
Rule #5: Do not exceed the maximum voltage ratings.
Rule #6: Many Arduinos cannot power transmitters directly.
Rule #7: Before powering your project, take a break and double-check the wiring.
LaryD’s Corollaries:
Coro #1: When starting out, add a 220Ω resistor in series with both input and output pins to protect against shorts.
Coro #2: Invest in a Digital Multi-Meter (DMM) to measure voltages, currents, and resistance.
Note: Violating these rules can turn your Arduinos into crispy critters. For optimal performance, keep your wires under 25 cm (10 inches).
Additional Tips:
The L293 motor driver, though common, is inefficient as it can lose around 3V as heat when driving both legs of a motor. Consider using a motor driver with MOSFET outputs to reduce heat loss and conserve battery power.
For more on powering Arduino boards, explore this guide: Powering Alternatives for Arduino Boards.