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