Como puedes ver, no puedo usar los pines indicados aquí porque es para la LCD.
4, 5, 6, 7, 8, 9 y 10.
El pin 0 y el 1 como están con el puerto serie, tampoco los quiero tocar. No quiero usar ningún IC a parte para ampliar puertos. El A0 analógico no está disponible. Como estoy controlando datos de entradas digitales y que lo muestre al puerto serie, no se si es conveniente o le afecta el funcionamiento si lo uso como puerto serie. Tambi´ñen tengo libre el 2 y el pin 3.
Resumen, pines libres, 0, 1, 2, 3 y del A1 a al A5.
Quiero usar 4 entradas digitales para pulsadores y otras 4 salidas digiales para Leds.
En el LCD muestra información cuando esté activado o no los Led. Desde el ordenador o PC, controlo los Led, también muestra información de los estados de los interruptores, pero esta parte es otra cosa, solo me interesa consejos de usar pines.
1) ¿Qué me recomiendan?
2) ¿Cómo se convierte en entrada analógica a digital? (Usar el A1 a al A5).
El Arduino Uno tiene disponibles 20 pines de entradas/salidas. Si hacemos cuentas usas del 4 al 10 mas el A0 para el shield lcd (8 gastados). Quieres dejar el 0,1 para la comunicación serie (2 gastados). Entonces quedan disponibles el 2, 3, 11, 12, 13, y del A1 al A5 (10 pines disponibles). Si quieres tener 4 entradas y 4 salidas, aún te quedan dos.
Si quieres usas los pines analógicos como digitales, tienes que tratarlos como tal. Por ejemplo:
void setup()
{
pinMode(A1,OUTPUT); // Ponemos A1 como salida.
pinMode(A2,INPUT); // Ponemos A2 como entrada.
}
void loop()
{
digitalRead(A2); // lee A2.
digitalWrite(A1,HIGH); // escribe A1.
}
Ahora bien, si quisieras mas entradas/salidas, mas allá de esos dos pines que te quedan disponibles, entonces ya tendrías que recurrir a alguna solución hardware, ya sea mediante expansores i2c o registros de desplazamiento. En ese caso deberías hacer una redistribución de pines a ver cuales son los que se necesitas para cada caso y como conectarles, por ejemplo, si usas un expansor i2c sabes que los pines A4 y A5 no los puedes usar para otra cosa (SDL y SDA del bus i2c). Otra solución pasaria por usar un MEGA que tiene muchas mas E/S.
El ic he probado con la probotoard la entrada y fucniona, me falta el de salida.
Quiro evitar usar placas grandes, ya que el proyecto final quedará en el Arduino Micro, pero antes, lo probaré con el UNO como prototipo, para hacer pruebas.
Eso si, en el futuro usaré el esquema con Arduino UNO y MICRO, a parte de ello, parece ser que se usan los 5 interruptores que puse llamados, Clock, Data, Latch del 74HC595 y CLK, PL para el 74HC165 indicado en el esquema de arriba.
Fijándome bien en la Shield, no te deja usar desde el poin 4 hasta el 13. Solo te deja el 0, 1, 2,3, 13 A1 a al A5. 8 en total.
Seguiré haciendo más pruebas con la Shield moestrando y lo comentaré por aquí.
Otra vez este tema Metaconta, no la habías resuelto en el pasado cuando estudiaste 595 y 165?
El comando de los shift registeres solo necesitan los pines digitales descriptos asi que no hay mucho por investigar. Eso funciona.
No tengas dudas, armalo y funcionará perfectamente. Si no lo hace es por un mal contacto del protoboard.
Buenas. Si lo hago a parte solo para LCD, funciona, si lo hago solo para Monitor serie, funciona, si lo hago los dos al mismo tiempo, da problema por un tubo, carácteres raros y eso que lo enviaba dos buffer diferentes para no haber conflicto, ese es el problema.
Por lo que veo, mejor lo que dices para el LCD. Si es solo para VS funciona bien.
El null lo tengo para indicar que ahí hay un pin nulo, es como una referencia. Según leí hace tiempo, es recomendable dejarlo claro de esa manera a pesar de ver normalmente como nada. En C de los PIC, tienes que ponerlo si o si, en Arduino IDE no es obligatorio.
El otro vídeo lo subiré, voy a ser el código que dijiste pero solo para LCD la información.
Si miras la clase en la librería LiquidCrystal verás que no hace falta usarlo.
Igualmente no tiene importancia.
Solo que cada vez que leo algo peculiar me detengo a investigarlo.
Luego lo simulo y te digo.
Estoy trabajando en quehaceres de mi casa y tengo poco tiempo para el foro.
Se perfectamente bien que no hace falta, aún así hay personas que lo ponen para dejar las cosas claras, sobre todo si vas a explicarlo, luego se le dice que no hace falta. Como vengo del asm de los PIC, se de lo que hablo, que por cierto, se programa de una manera que tampoco haga falta, pero en asm, se guardaba dicha variable por si acaso.
No te preocupes, no hace falta gracias a la librería si no llega hacer por la librería y controlas el LCD en asm, a más de uno se le cae la cara.
El R/W se pone a masa, antiguamente se usaba mucho, luego aprendieron a no usarlo.
; En la primera línea de la pantalla aparece un mensaje fijo. En la segunda línea aparece
; un mensaje parpadeante.
;
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
ENDC
; ZONA DE CÓDIGOS ********************************************************************
ORG 0
Inicio
call LCD_Inicializa
movlw MensajeFijo ; Apunta al mensaje fijo y lo visualiza.
call LCD_Mensaje
Principal
call LCD_Linea2 ; Pasa a la segunda línea.
movlw MensajeParpadeante ; Apunta al mensaje parpadeante.
call LCD_Mensaje ; Lo visualiza.
; call Retardo_500ms ; Durante este tiempo.
call LCD_Linea2 ; Vuelve a situarse al principio de la línea 2.
; call LCD_LineaEnBlanco ; Visualiza línea en blanco.
; call Retardo_500ms ; Durante este tiempo, produciendo un efecto de
goto Principal ; parpadeo.
;
; "Mensajes" ----------------------------------------------------------------------------
;
Mensajes
addwf PCL,F
MensajeFijo
DT "Hola amig@s", 0x00;
MensajeParpadeante
DT "www.arduino.cc", 0x00
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <RETARDOS.INC>
END
No todo el mundo está dispuesto programar en asm hoy en día.
A mi me costó encontrar un ejemplo en el que se use NULL en la librería LCD. Es mas, la primer referencia que tiró Google fue precisamente a un post TUYO viejo. Asi que creo que es un vicio que tiene tu metaconta, por eso quítalo que no hace falta.
Y dime que ocurre cuando no lo usas. Elimina la referencia a RW si no lo usas. Asi que te queda la inicialización del objeto con un pin menos, okay?
Luego me dices del resto.
Lo de null que se puede hacer es cosa mia porque vengo de los PIC. En Arduino no hace falta, lo tengo claro. No te preocupes.
Es m´sa, lo h edejado así por si quiero hacer pruebas. En otras LCD que no sea de la marca y modelo lcd hitachi hd44780 como la que conocemos, hay que uar el R/W si o si, por suerta, son viejas, ya no las encuentro como antes, es de la época cuando eran los LDC gris y verdes.