Arduino Fortune Teller (6 / 6 steg)
Steg 6: Fortune Teller kod
#include < LCD4Bit.h >#define countof(array) (sizeof(array) / sizeof(*(array)))
LCD4Bit lcd = LCD4Bit(2);
Todd Miller 2008
int ledPin = 13. Välj den PIN-kod för LED
int inPin = 4; Välj ingångsstift (för en tryckknapp)
int val = 0; variabel för att läsa pin status
int pos1 = 1;
int pos2 = 0;
int x = 0;
int b = 0;
int y = 0;
int tv = 0;
int tv2 = 0;
lång previousMillis = 0; kommer att lagra förra gången LED uppdaterades
långa intervall = 1100; intervall som blinka (millisekunder)
char * msgs1 = {"en befordran är" ",", "du kommer snart","skratt är","Live lång och", "skratta hårt och", "Ät gott och", "En kreativ", "Någon", "En god hjärta", "gripa dag.", "Du är", "rikedom", "Happy gånger", "Jag ser robotar", "Leende och du", "tur kommer snart"};
char * msgs2 = {"kommer snart.", "vara lycklig", "bästa medicin.", "prosper", "skratta ofta.", "göra god", "sinnet är ditt.", "älskar dig.", "är bra.", "","mycket lycklig!", "snart ditt.", "är vidare", "i din framtid.", "kommer att vara rik.", "följa dig"};
char * msgs3 = {"!",""%","&"," * "," "?", "="};
char * msgs4 = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "14", "15", "16", "17", "18", "19", "20"};
int NUM_MSGS = 11;
int NUM_MSGS2 = 19.
int jag = 0;
char my_str;
void setup() {
pinMode (ledPin, produktionen); deklarera LED som utdata
pinMode (inPin, ingång); deklarera tryckknapp som indata
pinMode(0,INPUT);
pinMode (6, OUTPUT);
pinMode (5, OUTPUT);
pinMode (3, OUTPUT);
pinMode (13, OUTPUT);
digitalWrite 13, hög.
Serial.BEGIN(9600);
randomSeed(analogRead(0));
}
void loop() {
digitalWrite 13, hög.
LCD.init();
lcd.printIn ("Fortune Teller");
lcd.cursorTo (2, 0);
lcd.printIn ("Robot 3000");
Delay(2000);
LCD.Clear();
lcd.cursorTo (1, 0);
lcd.printIn("Thinking");
för (int jag = 0; jag < 3; i ++)
{
LCD.Print('.');
Delay(400);
animation();
}
lcd.cursorTo (1, 0);
LCD.Clear();
för (int jag = 0; jag < 9; i ++)
{
POS2 = pos2 + 1.
Pos1 = pos1 + i.
int plocka = random(NUM_MSGS);
int randy = random(1,10);
char * msg3 = msgs3;
lcd.printIn(msg3);
Delay(300);
om (pos2 > = 2) pos2 = 0;
animation();
}
LCD.Clear();
lcd.cursorTo (1, 0);
lcd.printIn("Your");
lcd.cursorTo (2, 0);
lcd.printIn ("fortune är");
digitalWrite (6, hög).
digitalWrite 5, hög,
digitalWrite (3, hög).
Delay(1200);
för (int jag = 0; jag < 3; i ++)
{
LCD.Print('.');
Delay(300);
}
lcd.leftScroll (20, 50);
LCD.Clear();
plocka ett slumpmässigt meddelande från array
int svål = random (1,21) -10;
om (svål == x)
{
svålen = svål + 1.
}
annat
{
svålen = random(rind);
}
x = svål;
int randNumber = random (1, countof(msgs1));
char * msg1 = msgs1;
char * msg2 = msgs2;
lcd.printIn(msg1);
lcd.cursorTo (2, 0);
lcd.printIn(msg2);
Delay(2500);
LCD.Clear();
int pick2 = random(NUM_MSGS2);
char * msg4 = msgs4;
lcd.cursorTo (1, 0);
strcpy (my_str, "är");
strcat (my_str, msg4);
strcat (my_str, ".");
lcd.printIn ("din tur");
lcd.cursorTo (2, 0);
lcd.printIn(my_str);
Delay(1200);
för (int jag = 0; jag < 3; i ++) {
LCD.Print('.');
Delay(300);
}
Delay(300);
lcd.leftScroll (20, 50);
LCD.Clear();
lcd.cursorTo (1, 0);
Val = digitalRead(inPin); Läs indatavärde
animation2();
}
void animation()
{
om (jag = 1) digitalWrite (6, hög). ljus i firstLED
om (jag = 1) digitalWrite (5, låg). ljus i firstLED
om (jag = 1) digitalWrite (3, låg). ljus i firstLED
Delay(70);
om (jag = 2) digitalWrite(6, LOW); ljus i firstLED
om (jag = 2) digitalWrite(5, HIGH); ljus i firstLED
om (jag = 2) digitalWrite(3, LOW); ljus i firstLED
Delay(70);
om (jag = 3) digitalWrite (6, låg). ljus i firstLED
om (jag = 3) digitalWrite (5, låg). ljus i firstLED
om (jag = 3) digitalWrite (3, hög). ljus i firstLED
Delay(70);
om (jag = 9) digitalWrite (6, låg). ljus i firstLED
om (jag = 9) digitalWrite (5, låg). ljus i firstLED
om (jag = 9) digitalWrite (3, låg). ljus i firstLED
}
void animation2()
{
digitalWrite 13, hög.
göra {
Val = digitalRead(inPin); Läs indatavärde
om (val == hög) {/ / kolla om ingången är hög (knappen släppt)
b = 0;
} annat {
b = 1;
y = 0;
TV = 0;
TV2 = 0;
digitalWrite (6, låg).
digitalWrite (5, låg).
digitalWrite (3, låg); / / slå LED
}
om (millis() - previousMillis > intervall) {
previousMillis = millis(); kom ihåg sista gången vi tryckt
TV = tv + 1;
TV2 = tv2 + 1.
om (tv == 1)
{
LCD.Clear();
lcd.printIn ("Fortune Teller");
digitalWrite (6, låg).
digitalWrite 5, hög,
digitalWrite (3, låg).
}
om (tv == 2)
{
lcd.cursorTo(2,0);
lcd.printIn ("Robot 3000");
digitalWrite (6, hög).
digitalWrite (5, låg).
digitalWrite (3, låg).
}
om (tv == 3 & & tv2! = 9 & & tv2! = 10)
{
LCD.Clear();
lcd.cursorTo(1,0);
lcd.printIn ("Tryck på knappen");
digitalWrite (6, hög).
digitalWrite (5, låg).
digitalWrite (3, låg).
}
om (tv == 4 & & tv2! = 9 & & tv2! = 10)
{
lcd.cursorTo(2,0);
lcd.printIn ("för en förmögenhet!");
digitalWrite (6, låg).
digitalWrite (5, låg).
digitalWrite (3, hög).
}
om (tv2 == 7)
{
LCD.Clear();
lcd.cursorTo(1,0);
lcd.printIn ("din förmögenhet");
digitalWrite (6, låg).
digitalWrite 5, hög,
digitalWrite (3, låg).
}
om (tv2 == 8)
{
lcd.cursorTo(2,0);
lcd.printIn väntar ("på dig.");
digitalWrite (6, låg).
digitalWrite 5, hög,
digitalWrite (3, låg).
TV = 0;
TV2 = 0;
}
}
} medan (b == 0);
}