Go Down

Topic: Arduino UNO: Using Analog Input as Digital In/Out (Read 2 times) previous topic - next topic

ghiblipg

Any things I should watch out when using Analog pins as Digital In/Out.
I understand this is possible and allowed according to Arduino website learning.
However, is that any item I should watch out in my design or application?

fungus

You don't have to worry.

The only that's special about them is that the Arduino board puts an 'A' next to them on the PCB.

(And they can be routed to the ADC if you want...)
No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

mmoscz

Analog Pins not have PULL-UP resistors, so, pinmode(A0, OUTPUT_PULLUP) not will have effect.
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

Krodal

Are you sure ?
In my opinion the analog inputs do also have the internal pull-up resistors.

retrolefty

#4
Feb 10, 2013, 06:23 pm Last Edit: Feb 10, 2013, 06:26 pm by retrolefty Reason: 1

Analog Pins not have PULL-UP resistors, so, pinmode(A0, OUTPUT_PULLUP) not will have effect.



That is not correct. Run the example sketch ReadAnalogVoltage sketch without anything wired to the A0 pin. Then add the mode and pull-up commands shown below in the setup function and run again. I think you will see the effect of the pull-up resistor being enabled.

And besides pinmode(A0, OUTPUT_PULLUP) would not be a valid command, pinMode(A0, INPUT_PULLUP) would be.

Lefty

Code: [Select]

/*
 ReadAnalogVoltage
 Reads an analog input on pin 0, converts it to voltage, and prints the result to the serial monitor.
 Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

This example code is in the public domain.
*/

// the setup routine runs once when you press reset:
void setup() {
 // initialize serial communication at 9600 bits per second:
 Serial.begin(9600);
 pinMode(14,INPUT);   // set pin to input mode
 digitalWrite(14,HIGH); // enable internal pull-up resistor
  // or pinMode(A0, INPUT_PULLUP);
}

// the loop routine runs over and over again forever:
void loop() {
 // read the input on analog pin 0:
 int sensorValue = analogRead(A0);
 // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
 float voltage = sensorValue * (5.0 / 1023.0);
 // print out the value you read:
 Serial.println(voltage);
}

mmoscz


Are you sure ?
In my opinion the analog inputs do also have the internal pull-up resistors.


You are right, Analog Pins have PULL-UP resistors too.

from http://arduino.cc/en/Tutorial/DigitalPins

Quote

Digital Pins

The pins on the Arduino can be configured as either inputs or outputs. This document explains the functioning of the pins in those modes. While the title of this document refers to digital pins, it is important to note that vast majority of Arduino (Atmega) analog pins, may be configured, and used, in exactly the same manner as digital pins.


Sorry my mistake.
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

Go Up