Arduino – CLCD with I2C – Game
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // or 0x3F int varRes=A1; int btnFire=4; int shipPositions=0; int fireHPositions=0; int fireVPositions=0; unsigned long cnt=0; unsigned long fireTime=0; void setup() { pinMode(btnFire, INPUT); lcd.init(); delay(1000); lcd.backlight(); lcd.setCursor(0,0); lcd.print(" Game Start "); delay(2000); lcd.clear(); } void loop() { if (analogRead(varRes) > 1024/2) { shipPositions=1; } else { shipPositions=0; } if (shipPositions==1) { lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(">"); } else { lcd.setCursor(0,0); lcd.print(">"); lcd.setCursor(0,1); lcd.print(" "); } if (digitalRead(btnFire) && cnt==0 && fireHPositions==0) { fireHPositions=1; fireTime=millis(); cnt=millis(); } else if (millis()-cnt>300) { cnt=0; } if (fireHPositions==1) { lcd.setCursor(1,shipPositions); lcd.print("*"); fireVPositions=shipPositions; } else if (fireHPositions>1 && fireHPositions<=15) { lcd.setCursor(fireHPositions-1,fireVPositions); lcd.print(" "); lcd.setCursor(fireHPositions,fireVPositions); lcd.print("*"); } else { lcd.setCursor(15,fireVPositions); lcd.print(" "); } if (fireHPositions>0 && millis()-fireTime>200) { fireHPositions++; fireTime=millis(); if (fireHPositions>15) { fireHPositions=0; fireTime=0; } } } |