como mi principal cosa con la electrónica es el hardware, tengo algunas dificultades para aprender a programar. Desafortunadamente, mi universidad en la que estudio no ofrece este tipo de curso, así que para mi proyecto este año decidí incorporar algunos, para forzarme a aprenderlo, sin embargo, ¡estoy luchando por entender algo de eso! He estado creando partes separadas de mi código y la mayoría está funcionando, sin embargo, estoy tratando de mostrar un recuento en una pantalla LCD, y cada vez que se presiona un botón, quiero que se incremente en 1.
Logré hacer esto exitosamente en un Arduino (ya que hay muchos bocetos de ejemplo) pero quiero hacer mi proyecto usando un Núcleo STM (F103RB). Intenté transferir el código de ejemplo y editarlo con los comandos que el IDE de mbed en línea entendería, pero no funcionaría. Luego encontré algunos ejemplos diferentes y cada uno me dio resultados diferentes. Finalmente encontré mi propio código siguiendo una guía para agregar / presentar en el libro 'Programación en C: un enfoque mordaz'. El código que he encontrado está aquí:
#include "mbed.h"
#include "TextLCD.h"
DigitalIn ip(D7);
TextLCD lcd(A0, A1, A2, A3, A4, A5);
int i =0;
int main() {
lcd.cls();
lcd.locate(0,0);
lcd.printf("COUNT:");
lcd.locate(0,1);
lcd.printf("%d",i);
while(1) {
if (ip ==1) {
lcd.locate(0,1);
lcd.printf("%d", ++i);
}
}
Y finalmente, el conteo comenzó a responder cuando presioné el botón. Sin embargo, el problema que tengo es que el conteo se incrementa todo el tiempo que tengo presionado el botón, por lo que incluso una pequeña pulsación aumentará el conteo en 50-80 (dependiendo de la rapidez con la que lo presione) y quiero que aumente 1 cada pulsación.
He intentado estructurarlo de forma diferente, con la frase 'while' al principio, etc., pero eso solo provocó que la pantalla LCD oscilara de forma extraña.
¡He estado estancado en esto por aproximadamente 6 horas antes de llegar a este punto! ¡Realmente apreciaría si alguien me pudiera dar algunos consejos en la dirección correcta!
En caso de que alguien lo necesite, mi esquema (simplificado) está aquí:
Así que puedes ver que realmente es muy simple. Pero tengo un conocimiento nulo de la programación en C y nunca me han enseñado cómo hacerlo correctamente, ¡por lo que será necesario explicar cualquier solución!