Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola, estoy probando un programa sencillo para familiarizarme con pingüino, pero no consigo que vaya bien, seguro es alguna tontería que por lo oxidado que estoy no me doy cuenta.
En el programa solo quiero mostrar las veces que le doy al pulsador, pero solo veo caracteres raros con este programa.
#define LCD_RS 8
#define LCD_E 9
#define led 14
#define entrada 13
void lcdPulseEnable() {
digitalWrite(LCD_E, HIGH);
delayMicroseconds(1);
digitalWrite(LCD_E, LOW);
delayMicroseconds(1);
}
void lcdWriteNibble(uchar c){
int i;
for(i=0; i<4; i++){
digitalWrite(4+i, (c >> i) & 0x01);
}
lcdPulseEnable();
}
void lcdWriteByte(uchar c, int mode) {
digitalWrite(LCD_RS, mode);
lcdWriteNibble(c >> 4);
lcdWriteNibble(c);
}
void lcdSendControl(uchar c) {
lcdWriteByte(c, LOW);
}
void lcdSendData(uchar c) {
lcdWriteByte(c, HIGH);
}
void lcdSetAddress(uchar line, uchar column) {
lcdSendControl( 0x80 + 0x40 * (line - 1) + (column - 1));
}
void lcdPrint(char *string) {
int i;
for( i=0; string; i++) {
lcdSendData(string);
}
}
void lcdInit() {
int i;
pinMode(LCD_E, OUTPUT);
digitalWrite(LCD_E, LOW);
pinMode(LCD_RS, OUTPUT);
digitalWrite(LCD_RS, LOW);
for(i = 4; i < 8; i++) {
pinMode(i, OUTPUT);
}
delay(20);
lcdWriteNibble(0x03);
delayMicroseconds(1);
lcdWriteNibble(0x03);
delayMicroseconds(1);
lcdWriteNibble(0x02);
delayMicroseconds(200);
lcdSendControl(0x28); // 4 Bit, 2 Lines
delayMicroseconds(1);
lcdSendControl(0x0C); // Display On
delayMicroseconds(1);
lcdSendControl(0x01); // Clear display
delay(2);
lcdSendControl(0x02); // Cursor home
delay(2);
}
void setup() {
lcdInit();
pinMode(13,INPUT);
pinMode(14,OUTPUT);
}
void loop() {
int j=0;
int dato=0;
lcdSetAddress(1, 1);
lcdPrint("GMZ010");
lcdSetAddress(2, 1);
lcdPrint(dato);
if (digitalRead(entrada)){
digitalWrite(led,HIGH);
}
else
digitalWrite(led,LOW);{
j++;
dato=j;
}
}
Espero vuestra ayuda.Gracias.
Recuerda que Pinguino pretende ser compatible con Arduino, por lo que siempre puedes buscar la librería en Arduino y mirar ahí la documentación, que seguro que serán muy parecidas si no son iguales.
Un saludo.
Si, eso estoy haciendo, apoyándome también en los foros de arduino, esta librería por lo que he visto es copiada tal cual, haciendo el apaño para el 2550.
Muchas gracias.
Un saludo.
Tengo una duda con el tema de las funciones de pingüino, yo antes cuando programaba para leer una entrada pues era tan simple como asignar un pin como entrada y luego comparar con 0 o 1 para ver su estado, pero ahora con lo del digitalread, no me aclaro, pongo un ejemplo de lo que quiero decir:
antes:
sbit puerto10 = P1^0;
if(puerto10 ==0){...
if(puerto10 ==1){...
ahora:
#define entrada 13
pinMode(13,INPUT);
if (digitalRead(entrada)){.. aqui se que es cuando entrada vale 1, ¿pero esto no se puede hacer mas fácil de la otra forma?
¿como seria para leer cuando entrada vale 0?
se que es una tontería, pero voy a paso tortuga..
Un saludo.
if (!digitalRead(entrada)) o if (digitalRead(entrada) == 0) o if (digitalRead(entrada) != 1)
gracias BoOpS, no se como no me he dado cuenta, había probado esas combinaciones pero metiendolo dentro del paréntesis (entrada==0) y así claro que no me funcionaba, aunque no me daba error al compilar.
Un saludo.