Paso 9: El "Código" :)) remota de código
El código es bastante grande y va a ser muy difícil explicar y también fotos no ayuda: P
Los primeros intentos conseguí 99% microcontrolador memoria, el flash y el RAM, por lo que he aprendido a usar "programem" para escribir un int en EPROM, también conductor del LCD o biblioteca... y mucho más.
OK vamos a empezar con la pantalla Lcd.
Primera vez tienes que incluir la biblioteca #include. En la biblioteca hice una clase tan "estática PCF8814 lcd;" puede ser útil por lo que se puede utilizar como "lcd.print ("coche remoto")". Escribir la pantalla lcd arriba a los lados en el caso de instalación es algo parecido a este "lcd.begin(); LCD.Rotate(1);". La función de inicio comienza la pantalla lcd y definir los pines que uso de arduino para conect con pantalla lcd, así que si usted tiene que conectar en otros pins, consulte la PCF8814.h para asegurarse el orden de los pines pero creo que es así, de lcd.begin(13,11,12,10) por defecto; Rotate() con 1 vuelta la img en la pantalla lcd arriba a los lados y con 0 es normal.
puede imprimir con la secuencia lcd.print(); establecer el cursor con lcd.setCursor(y,x), y que la fila (1 fila = 8 píxeles) en esta pantalla usted tiene 8 hileras, primera fila es 0 y la última 7, y siendo el número de píxeles de izquierda a derecha; y usted puede hacer más pero usted verá más adelante.
Cómo leer las teclas analógicas.
int analogValue = analogRead(analogKeyPin); / / devuelve un valor dependiendo de qué botón push (solo ver los esquemas y tratar de pensar donde la corriente de flujo, tienes diferit rezistance en cada botón). se puede utilizar a serial monitor para leer ellos o la lcd.print(analogValue) para imprimir en la pantalla lcd, luego algunos if-s o switch/case y se realiza, por ejemplo.
if (analogValue > 25 && analogValue < 40){ key = "meniu"; }
else if (analogValue > 40 && analogValue < 70){key = "back"; }
He usado cadena almacenar la clave porque es más fácil al programa pero se puede utilizar un int para salvar a más memoria ram.
El problema mas grande que tuve fue las cuerdas para menius usé el programem para bloquear las cadenas en memoria flash. Así que hice un arreglo como este:
prog_char meniu_0[] PROGMEM = "Obtions"; prog_char meniu_1[] PROGMEM = "Autoset"; prog_char meniu_2[] PROGMEM = "Stearing set";
PROGMEM const char *meniu[] = { meniu_0,meniu_1, meniu_2 };
Generar de esta manera usted puede easyely los menius
for (uint8_t x = 0; x < 7 ; x++){ // 7 is the number of option you have in menu, so stop the for at 6 poz lcd.setCursor(6, x); //read from progrmem strcpy_P(buffer, (char*)pgm_read_word(&(meniu[pozMeniu + x]))); lcd.print(buffer); }
7 es el número de opción que tienen en el menú, así que el "para" 7 veces, luego set cursor al imprimir desde el primer row(0) con x como esta se pondrán a la siguiente fila cuando el prog hace la segunda vez el, empiezo a las opciones de impresión del píxel 6 porque de 0 a 6 llamo cursor. Ahora strcpy_P función copia la cadena de programen en un buffer que declaro con 50 caracteres es un poco demasiado pero tienes para asegurarse que es suficiente, después de que imprimir sólo el búfer.
pgm_read_word(&(meniu[pozMeniu + x]))
Esto lee el valor menú programem array [0], si la pozMeniu y x es "0". Uso pozMeniu porque cuando pongo el cursor y quiero navegar hacia arriba y hacia abajo y vamos a decir tengo 10 obtions una a 7 filas, cuando voy con el cursor en la opción 7 y quiero ir downer sólo hará pozMeniu = 1 este se imprimirá a partir de la segunda opción y en la fila 7 tengo la opción 8. Para eso hice una pequeña función que necesita un parámetro, el número de obtions. Así que para el último ejemplo es "upDown_navigate(6);" (también empezar a contar con "0"). Si descargas el código tengo la función allí, explicó.
La upDown_navigate(); también devuelve un "pozCursor" que va a cambiar cuando vas hacia arriba y hacia abajo así que usted puede imprimir un cursor así:
lcd.setCursor(0, pozCursor);
lcd.print("\2");
El "2" es el segundo char que lo defino. es el cursor que una estaba diciendo. Sí, usted puede Agregar a caracteres personalizados, verás en el enlace con todo el código.
Si quieres hacer un sub menu puede hacerlo así (es solo una idea, he hecho esta):
"nivel" - esta i se usa en el void loop() para ir a una pantalla específica (tienen la función para cada menú)
"countUpDown" - Esto es generada por upDown_navigate(), guarda la posición en la matriz (ya sabéis qué obtion selecciona)
<p>if (key == "ok"){ switch (countUpDown) { case 0: level = 2; countUpDown = 0; pozCursor = 0; pozMeniu = 0; lcd.clear(); break; case 1: level = 3; countUpDown = 0; pozCursor = 0; pozMeniu = 0; lcd.clear(); break; case 2: level = 4; countUpDown = 0; pozCursor = 0; pozMeniu = 0; lcd.clear(); break;