Not enought current for DC 3V motor?

So I have a project that requires a 16x2 LCD, a DHT11, a servo, and a 3V DC motor. When I connect all components except for the dc motor, it all works just fine. Although, when the dc motor gets in the mix, the LCD screen stops starts behaving weirdly.

I guess that it's a current problem. My power source can output 1A.
Is that too low for these components or is it something else?

PS: I'm using a UNO

What voltage is your "power source" and where is it connected? How is everything else connected, particularly the servo and the motor? A simple wiring diagram would be useful and the code might also help.

As it is you've given us nothing to work on.

Steve

I have a 12V 1A power source connected to the barrel connector.
EDIT 1: I don't think it's a current problem now since I just tried with 6A and the LCD started going crazy when I connected the DC motor to 5V.

I don't know any apps to do the diagram of the circuit so I will try to describe it:

The code is here:

#include <Arduino.h>

/* ------------------------------- LCD screen ------------------------------- */

#include <LiquidCrystal.h>

#define REGISTER_SELECT 8
#define ENABLE 9
#define D4 10
#define D5 11
#define D6 12
#define D7 13
LiquidCrystal lcd(REGISTER_SELECT, ENABLE, D4, D5, D6, D7);

/* ------------------------------ DHT11 sensor ------------------------------ */

#include <dht.h>

#define DHT11_PIN 7

dht DHT;
int temp = 0, humid = 0;

void printTemp(int temp) {
  lcd.setCursor(0, 0);
  lcd.print("Temperat: ");
  lcd.print(temp);
  lcd.print(" ");
  lcd.print((char)223);
  lcd.print("C");
}

void printHumid(int humid) {
  lcd.setCursor(0, 1);
  lcd.print("Humidade: ");
  lcd.print(humid);
  lcd.print(" %");
}

void updateScreen(int newTemp, int newHumid) {
  if (temp != newTemp) {
    temp = newTemp;
    printTemp(temp);
  }

  if (humid != newHumid) {
    humid = newHumid;
    printHumid(humid);
  }
}

/* ------------------------------- Servo motor ------------------------------ */

#include <Servo.h>

#define SERVO_PIN 6
#define SERVO_AMPLITUDE 90

Servo servo;
int coef = 0;

/* ---------------------------------- Timer --------------------------------- */

#include <MsTimer2.h>

#define SECOND 1
#define MINUTE (60 * SECOND)
#define HOUR (60 * MINUTE)
#define DAY (24 * HOUR)

#define DHT_TIME (2 * SECOND)
#define SERVO_TIME (1 * HOUR)

volatile int elapsedDHTSeconds = 0;
volatile int elapsedServoSeconds = 0;
volatile bool hasServoTimeElapsed = false;
volatile bool hasDHTTimeElapsed = false;

void oneSecondTimer() {
  elapsedDHTSeconds++;
  elapsedServoSeconds++;

  if (elapsedDHTSeconds == DHT_TIME) {
    hasDHTTimeElapsed = true;
    elapsedDHTSeconds = 0;
  }

  if (elapsedServoSeconds == SERVO_TIME) {
    hasServoTimeElapsed = true;
    elapsedServoSeconds = 0;
  }

  // Restart the timer
  MsTimer2::start();
}

/* ---------------------------------- Main ---------------------------------- */

void setup() {
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("A iniciar...");
  lcd.setCursor(0, 1);
  lcd.print("Aguarde");

  servo.attach(SERVO_PIN);
  MsTimer2::set(1000, oneSecondTimer);
  MsTimer2::start();
}

void loop() {
  // Rotate servo.
  if (hasServoTimeElapsed) {
    hasServoTimeElapsed = false;

    coef = !coef;
    servo.write(coef * SERVO_AMPLITUDE);
  }

  // Read the values from the sensor
  if (hasDHTTimeElapsed) {
    hasDHTTimeElapsed = false;

    int chk = DHT.read11(DHT11_PIN);
    updateScreen((int)DHT.temperature, (int)DHT.humidity);
  }
}

I just fixed the issue, the motor was killing the circuit because I was connecting it directly to 5V since I was assuming that it would be a quicker way to test than using a pin on HIGH.
When connecting the motor said pin the problem gets fixed.

Sorry for wasting your time with such a silly problem.

frizd:
I just fixed the issue, the motor was killing the circuit because I was connecting it directly to 5V since I was assuming that it would be a quicker way to test than using a pin on HIGH.
When connecting the motor said pin the problem gets fixed.

I hope I am wrong but that gives me the impression that you are drawing power for a motor from a digital I/O pin. If so you will be very lucky if you have not damaged your Arduino.

I/O pins are intended for very low signal currents - up to about 20mA. Under no circumstances should a motor be connected directly to an I/O pin.

In general you should not draw power for a motor through the Arduino board. Give the motor a separate power supply with the GND connected to the Arduino GND

...R

You need to power the motor separately from the Arduino, sharing the grounds.

You need a motor driver, either an H-bridge for two-way control, or a single MOSFET for one-way
control.

Trying to connect a motor direct to an Arduino pin will cause damage to the Arduino and the motor will
be severely limited in current as the Arduino chip is overheating and failing.

how much is Amp needed for your DC motor and Servo motor ? ( motor spec )

i think it not a big problem if the motors spin separately.

cheers,
niel.