Cambiar los pines analógicos a digital de Arduino UNO r3

Buenas:

Lo bueno del asm en PIC, qu epuedes hacer la tabla de la verdad como desees y on tardas nada en entenderlo, ejjejejee.
El de arriba es para el PIC16F84A, si quieres hacerlo en otro PIC diferente, solo tienes que cambiar los registros para adaptarlo al PIC correspondiente. Por ahora, PIC de la firma de Microchip.com es el más usado en todas partes y en asm, luego en C, Arduino se extá impulsado, hasta con el AVR. AVR parece ser que lo ha dejado un poco de lado, no tiene el apoyo al 100 % con Arduino, ahora Arduino, le está dando por ARM, el mejor microcontrolador recomendado, al menos la marca. Está así, para que hagan libros de ARM en español, porque PIC hay de sobre y siguen haciéndolo, Arduino tiene muchos también en poco tiempo y habrá más y en español, solo en AVR no hay ninguno en español, una lástima.

Hay otros ejemploe en asm y en C de CCS para PIC16F886.

Ejemplo en ASM:

;Entradas/salidas digitales: Programa combinacional
;                                                                         
;Según el estado de los interruptores E0 y E1 conectados en RA0 y RA1,
;activar los leds S0-S7 conectados a la puerta B, según la siguiente tabla de la verdad:
;
;	RA1	RA0		RB7	RB6	RB5	RB4	RB3	RB2	RB1	RB0
;	--	--		--	--	--	--	--	--	--	--
;	0	0		1	0	1	0	1	0	1	0
;	0	1		0	1	0	1	0	1	0	1
;	1	0		0	0	0	0	1	1	1	1
;	1	1		1	1	1	1	0	0	0	0
					
		List	p=16F886		;Tipo de procesador
		include	"P16F886.INC"	;Definiciones de registros internos

;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades

		__config	_CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF 	;Palabra 1 de configuración
		__config	_CONFIG2, _WRT_OFF									;Palabra 2 de configuración

Temp		equ	0x20			;Variable temporal

			org		0x00
			goto	Inicio		;Vector de reset
			org		0x05

Inicio		clrf 	PORTB		;Borra los latch de salida
			bsf		STATUS,RP0
			bsf		STATUS,RP1	;Selecciona banco 3
			clrf	ANSEL		;Puerta A digital
			clrf	ANSELH		;Puerta B digital
			bcf		STATUS,RP1	;Selecciona banco 1
			clrf	TRISB		;RB7:RB0 se configuran como salida
			movlw	b'00111111'		
			movwf	TRISA		;RA5:RA0 se configuran como entrada
			bcf		STATUS,RP0	;Selecciona banco 0			

Loop:		movf	PORTA,W		;Leer el puerto de entrada
			andlw	b'00000011'	;Máscara para las líneas RA0 y RA1
			btfsc	STATUS,Z	;Están a 00 ?
			goto	Valen_00	;Si
			movwf	Temp		;Almacena el resultado
			movlw	b'00000001'
			subwf	Temp,W
			btfsc	STATUS,Z	;Están a 01 ?
			goto	Valen_01
			movlw	b'00000010'
			subwf	Temp,W
			btfsc	STATUS,Z	;Están a 10 ?
			goto	Valen_10

Valen_11	movlw	b'11110000'
			movwf	PORTB		;Salida de 11110000
			goto	Loop
Valen_00	movlw	b'10101010'
			movwf	PORTB		;Salida de 10101010
			goto	Loop
Valen_01	movlw	b'01010101'
			movwf	PORTB		;Salida de 01010101
			goto	Loop
Valen_10	movlw	b'00001111'
			movwf	PORTB		;Salida de 00001111
			goto	Loop		

			end					;Fin del programa fuente

Ejemplo en C:

/* 
Entradas/salidas digitales: Programa combinacional

Programa combinacional. Según el estado de los interruptores RA0 y RA1, activar
los leds RB0-RB7 conectados a la puerta B, conforme a la siguiente tabla de
la verdad:

RA1 RA0  RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
--- ---  --- --- --- --- --- --- --- ---
 0   0    1   0   1   0   1   0   1   0
 0   1    0   1   0   1   0   1   0   1
 1   0    0   0   0   0   1   1   1   1
 1   1    1   1   1   1   0   0   0   0
*/

#include <16f886.h>

/* Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades */

#fuses 	NOLVP,PUT,NOWDT,EC_IO,NOFCMEN,NOBROWNOUT	//Palabra 1 de configuración
#fuses	NOWRT,BORV40								//Palabra 2 de configuración

/* Con estas directivas las funciones "input" y "output_bit" no reprograman
 el pin de la puerta cada vez que son utilizadas. Si no se indica el
modo fast_io se asume por defecto standard_io el cual reprograma el pin
siempre antes de ser utilizadas estas funciones. */

#use fast_io (A)
#use fast_io (B)

main()
{
  	output_b(0x0);					//Borra las salidas
	setup_adc_ports(NO_ANALOGS);	//Puertas A y B digitales
  	set_tris_a(0x3F);				//Puerta A entrada
  	set_tris_b(0x00);				//Puerta B salida

	  while(1)
	{
 	   	switch(input_a() & 0b00000011)// Máscara para RA0 y RA1
    	{
      		case 0: output_b(0b10101010); break;
      		case 1: output_b(0b01010101); break;
      		case 2: output_b(0b00001111); break;
      		case 3: output_b(0b11110000); break;
			default:;
    	}
	}
}

Adaptar estos ejemplos en Arduino no es complicado.

Un saludo.

Edito:
Preguntaba los temas digitales y dejar una entrada analógica, ya que esta es para ajustar las revoluciones RPM del centrifugado de una lavadora. Tiene un potenciómetro.

Estoy en primera fase en buscar muchos ejemplos sobre controlar velocidad del motor y cosas así con Arduino, que ya he encontrado por cierto. Le dejo la Web aquí para tener más información y los que quieran aportar ideas al proyecto.

Por otro lado estoy haciendo un simulador de lavadoras para hacer pruebas mediante códigos con Visual Studio .net. Por ahora tengo hecho esto.

Haré un dibujo que se parezca una lavadora con sus Led y botones con el tiempo.

Poryecto placa labadora:

Saludo.