#include <LiquidCrystal_I2C.h>
#include "Switch.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
pinMode(up, INPUT_PULLUP);
pinMode(down, INPUT_PULLUP);
pinMode(buzz, OUTPUT);
lcd.begin(4, 20);
lcd.createChar(0, clr);
lcd.createChar(1, Man0);
lcd.createChar(2, Man1);
lcd.createChar(3, Man2);
lcd.createChar(4, Man3);
lcd.createChar(5, Heart);
Serial.begin(9600);
randomSeed(analogRead(A0));
lcd.clear();
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
void loop() {
AnimationAndJump();
BG_print();
delay(50);
}
/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
void AnimationAndJump() {
if (digitalRead(up) == LOW && (PL_layer > 0)) {
jump_up();
}
if (digitalRead(down) == LOW && (PL_layer < 3)) {
jump_down();
}
frames();
PL(1, PL_layer, x1);
}
/////////////////////////////////////////////////////////////////////////
void PL(int xpos, int ypos, char zeichen) {
lcd.setCursor(xpos, ypos);
lcd.write(byte(zeichen));
}
/////////////////////////////////////////////////////////////////////////
void frames() {
if (x1 > 3) {
x1 = 1;
}
else {
x1++;
}
}
/////////////////////////////////////////////////////////////////////////
void BG_print(){
BG_print_layer(0);
BG_print_layer(1);
BG_print_layer(2);
BG_print_layer(3);
}
void BG_print_layer(int layer){
for(int i = 0; i < 20; i++){
lcd.setCursor(i, layer);
if((i == 1) && (PL_layer == layer) && (BG[layer][1] == !1)){
}
else{
lcd.write(BG[layer][i]);
}
}
}
/////////////////////////////////////////////////////////////////////////
void jump_up(){
if(digitalRead(up)==HIGH && LOGIC_highflank_up_memory == 1){
LOGIC_highflank_up_memory = 0;
}
if(digitalRead(up)==LOW && LOGIC_highflank_up_memory == 0){
LOGIC_highflank_up_memory = 1;
PL_layer--;
}
}
void jump_down(){
if(digitalRead(down)==HIGH && LOGIC_highflank_down_memory == 1){
LOGIC_highflank_down_memory = 0;
}
if(digitalRead(down)==LOW && LOGIC_highflank_down_memory == 0){
LOGIC_highflank_down_memory = 1;
PL_layer++;
}
}