Ara us ensenyaré a crear caràcters per a que podeu crear els vostres propis!
Intentarem escriure: I (cor) Xnergic! (careta que somriu)
A sota: una figura humana que pugi els braços o els baixi segons un valor analògic que llegirem.
El circuit:
- pin LCD RS al pin digital nº12
- pin LCD Enable al pin digital nº11
- pin LCD D4 al pin digital nº5
- pin LCD D5 al pin digital nº4
- pin LCD D6 al pin digital nº3
- pin LCD D7 al pin digital nº2
- pin LCD RW al negatiu
- pin LCD A al positiu
- pin LCD K al negatiu
- pin LCD Vss al negatiu
- pin LCD Vdd al positiu
La resistència variable:
- els pins dels costats a +5V i a GND
- el pin OUT al pin V0 de la LCD
- l'altre resistència al pin A0
Així és com tindrem el nostre circuit: (conté spoiler de la LCD!)
El codi:
// incloem la llibreria:
#include <LiquidCrystal.h>
// Carreguem els pins on està connectada la LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// creem els caracters:
byte cor[8] = { //Primer de tot haurem de fer una matriu de 8x5, i per això hi ha el [8]
0b00000, //El 5 no apareix, perquè pot ser tan llarg com vulguem
0b01010, //un 0 és el pixel apagat
0b11111, //un 1 és el pixel encès
0b11111, //aquí fem un cor
0b11111,
0b01110,
0b00100,
0b00000
};
byte rialla[8] = { //aquí una careta rient
0b00000,
0b00000,
0b01010,
0b00000,
0b00000,
0b10001,
0b01110,
0b00000
};
byte tristesa[8] = { //aquí una cara trista, però no la farem servir...
0b00000,
0b00000,
0b01010,
0b00000,
0b00000,
0b00000,
0b01110,
0b10001
};
byte bracosavall[8] = { //aquí una figura amb els braços amunt
0b00100,
0b01010,
0b00100,
0b00100,
0b01110,
0b10101,
0b00100,
0b01010
};
byte bracosamunt[8] = { //i per acabar una figura amb els braços avall
0b00100,
0b01010,
0b00100,
0b10101,
0b01110,
0b00100,
0b00100,
0b01010
};
void setup() {
// creem el nou caracter
lcd.createChar(0, cor);
// creem el nou caracter
lcd.createChar(1, rialla);
// creem el nou caracter
lcd.createChar(2, tristesa);
// creem el nou caracter
lcd.createChar(3, bracosavall);
// creem el nou caracter
lcd.createChar(4, bracosamunt);
// definim com sempre files i columnes:
lcd.begin(16, 2);
// Escriurem "I (cor) Xnergic! (careta)"
lcd.print("I ");
lcd.write(byte(0));
lcd.print(" Xnergic! ");
lcd.write(byte(1));
}
Fins aquí obtindrem:
void loop() {
// llegim el potenciòmetre A0:
int sensorReading = analogRead(A0);
// fem un map de 200 - 1000:
int delayTime = map(sensorReading, 0, 1023, 200, 1000);
// col·loquem el cursor a la línia de sota, 5na posició:
lcd.setCursor(4, 1);
// dibuixem l'humà, amb els braços avall:
lcd.write(byte(3));
delay(delayTime);
lcd.setCursor(4, 1);
// dibuixem la figura amb els braços amunt:
lcd.write(byte(4));
delay(delayTime);
}
//El que fem es canviar el temps en que la figura canvia de pujar a baixar els braços
I acabem tenint això:
Cap comentari:
Publica un comentari a l'entrada