#include <LedControl.h>
int DIN = 12;
int CS = 11;
int CLK = 10;
int distancia = 0;
int aleatorio = 0;
int aleatorioant = 0;
//sensor de ultrasonido
long u_tiempo(int trigger_pin, int echo_pin) {
digitalWrite(trigger_pin, LOW);
delayMicroseconds(2);
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_pin, LOW);
long microseconds = pulseIn(echo_pin , HIGH);
return microseconds;
}
long u_distancia(int trigger_pin, int echo_pin) {
long microseconds = u_tiempo(trigger_pin, echo_pin);
long u_distancia;
u_distancia = microseconds / 29 / 2;
if (u_distancia == 0) {
u_distancia = 999;
}
return u_distancia;
}
//Expresiones
byte smile[8] = {0x3C, 0x42, 0xA5, 0x81, 0xA5, 0x99, 0x42, 0x3C};
byte neutral[8] = {0x3C, 0x42, 0xA5, 0x81, 0xBD, 0x81, 0x42, 0x3C};
byte heart_shape_1[8] = { B01100110, B11111111, B11111111, B11111111, B01111110, B00111100, B00011000, B00000000};
byte cat[8] = {B10001000, B11111000, B10101000, B01110001, B00100001, B01111001, B01111101, B10111110 };
byte apple [8] = {B00011000, B00001000, B01110110, B11111111, B11111111, B11111111, B01111010, B00110100};
LedControl lc = LedControl(DIN, CLK, CS, 0);
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 10);
lc.clearDisplay(0);
pinMode(3 , INPUT);
pinMode(2 , OUTPUT);
randomSeed(analogRead(0));
printByte(neutral);
}
void loop() {
aleatorio = 0;
distancia = u_distancia(2, 3);
if (distancia <= 10) {
aleatorio = random(1, 5);
}
if (aleatorio != aleatorioant) {
if (aleatorio == 0) {
printByte(neutral);
}
if (aleatorio == 1) {
printByte(smile);
}
if (aleatorio == 2) {
printByte(heart_shape_1);
}
if (aleatorio == 3) {
printByte(cat);
}
if (aleatorio == 4) {
printByte(apple);
}
}
aleatorioant = aleatorio;
delay(100);
}
void printByte(byte character []) {
int i = 0;
for (i = 0; i < 8; i++) {
lc.setRow(0, i, character[i]);
}
delay(2000);
}