From ae36a1a39a0d2694651bcb1fb4353872fdde2b86 Mon Sep 17 00:00:00 2001 From: brice Date: Wed, 10 Dec 2014 13:41:39 +0100 Subject: [PATCH] first commit --- README.md | 105 ++++++++++++ binherov0_91.pde | 403 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 508 insertions(+) create mode 100644 README.md create mode 100644 binherov0_91.pde diff --git a/README.md b/README.md new file mode 100644 index 0000000..008ee1a --- /dev/null +++ b/README.md @@ -0,0 +1,105 @@ +binary hero by phil + + + Hardware part + + +5V-------------------------------------------------- + | | | | | | | | + | | | | | | | | + +-/ + / + / + / + / + / + / + / + / / / / / / / / + / / / / / / / / + | | | | | | | | + +-D2 +-D3 +-D4 +-D5 +-D6 +-D7 +-D10 +-D11 + | | | | | | | | + - - - - - - - - + |R| |R| |R| |R| |R| |R| |R| |R| + |1| |1| |1| |1| |1| |1| |1| |1| + - - - - - - - - + | | | | | | | | + | | | | | | | | + GND-------------------------------------------------- + + + + + + +5V------------------------------------ + | | | | | | + | | | | | | + +-/ +-/ + / + / + / + / + [--/ / / / / / + / / / / / / + | | | | | | + +-D12 +-D13 +-A0 +-A1 +-A2 +-A3 + | | | | | | + - - - - - - + |R| |R| |R| |R| |R| |R| + |1| |1| |1| |1| |1| |1| + - - - - - - + | | | | | | + | | | | | | + GND------------------------------------ + + + + D8-| D8-| + | | + _ _ + \ / \ / + - - + | | + - - + |R| |R| + |2| |3| + - - + | | + | | + --------- + | + |---- + | | + | - + | |R| + | |4| + | - + | | + | |----->To Gnd + To To + RCA RCA + Pin GND + + ________________________________ + Pin| Role |Information | + ________________________________ + D2 |Bit 2^0 |NC switch | + D3 |Bit 2^1 |NO switch | + D4 |Bit 2^2 |NO switch | + D5 |Bit 2^3 |NO switch | + D6 |Bit 2^4 |NO switch | + D7 |Bit 2^5 |NO switch | + D8 |Tvout Video | | + D9 |Tvout Sync | | + D10|Bit 2^6 |NO switch | + D11|Bit 2^7 |NO switch | + D12|Help button |NC switch | + D13|Pap button |NC button | + A0 |nb bits select|NO switch | + A1 |nb bits select|NO switch | + A2 |speed select |NO switch | + A3 |speed select |NO switch | + ________________________________ + + + NO = Normaly open + NC = Normaly close + + + R1 = 10 Kohms + R2 = 330 ohms + R3 = 1 Kohms + R4 = 75 ohms + For leds I use basic red leds (I suppose you can use basic signal diode, but I haven't make the test...) + +You need TVout lib on http://code.google.com/p/arduino-tvout/downloads/list + diff --git a/binherov0_91.pde b/binherov0_91.pde new file mode 100644 index 0000000..f458001 --- /dev/null +++ b/binherov0_91.pde @@ -0,0 +1,403 @@ + /* + + binary hero + + + + + Hardware part + + +5V-------------------------------------------------- + | | | | | | | | + | | | | | | | | + +-/ + / + / + / + / + / + / + / + / / / / / / / / + / / / / / / / / + | | | | | | | | + +-D2 +-D3 +-D4 +-D5 +-D6 +-D7 +-D10 +-D11 + | | | | | | | | + - - - - - - - - + |R| |R| |R| |R| |R| |R| |R| |R| + |1| |1| |1| |1| |1| |1| |1| |1| + - - - - - - - - + | | | | | | | | + | | | | | | | | + GND-------------------------------------------------- + + + + + + +5V------------------------------------ + | | | | | | + | | | | | | + +-/ +-/ + / + / + / + / + [--/ / / / / / + / / / / / / + | | | | | | + +-D12 +-D13 +-A0 +-A1 +-A2 +-A3 + | | | | | | + - - - - - - + |R| |R| |R| |R| |R| |R| + |1| |1| |1| |1| |1| |1| + - - - - - - + | | | | | | + | | | | | | + GND------------------------------------ + + + + D8-| D8-| + | | + _ _ + \ / \ / + - - + | | + - - + |R| |R| + |2| |3| + - - + | | + | | + --------- + | + |---- + | | + | - + | |R| + | |4| + | - + | | + | |----->To Gnd + To To + RCA RCA + Pin GND + + ________________________________ + Pin| Role |Information | + ________________________________ + D2 |Bit 2^0 |NC switch | + D3 |Bit 2^1 |NO switch | + D4 |Bit 2^2 |NO switch | + D5 |Bit 2^3 |NO switch | + D6 |Bit 2^4 |NO switch | + D7 |Bit 2^5 |NO switch | + D8 |Tvout Video | | + D9 |Tvout Sync | | + D10|Bit 2^6 |NO switch | + D11|Bit 2^7 |NO switch | + D12|Help button |NC switch | + D13|Pap button |NC button | + A0 |nb bits select|NO switch | + A1 |nb bits select|NO switch | + A2 |speed select |NO switch | + A3 |speed select |NO switch | + ________________________________ + + + NO = Normaly open + NC = Normaly close + + + R1 = 10 Kohms + R2 = 330 ohms + R3 = 1 Kohms + R4 = 75 ohms + For leds I use basic red leds (I suppose you can use basic signal diode, but I haven't make the test...) + */ + + + #include + // You can found this lib on http://code.google.com/p/arduino-tvout/downloads/list + // I use this one : TVout_w_audio.zip R5.91 with added sound output on port B pin 3 (digital pin 11 m168/328 only for now) by adam wolf + + #include //for itoa function + + //button setup + #define b1 2 + #define b2 3 + #define b4 4 + #define b8 5 + #define b16 6 + #define b32 7 + #define b64 10 + #define b128 11 + + #define bhelp 12 + + #define bbutton 13 + + #define bbit1 14 + #define bbit2 15 + + #define bspeed1 16 + #define bspeed2 17 + + + + TVout TV; + //bonus variables + int x = 0; + char xx[10]; + //help string + char charhelp[10]; + //score string + char charscore[10]; + //number string + char charnum[10]; + int number = 0; + + + long previousMillis = 0; + //low limit + int limitebasse = 64; + int pas = 1; + + //decimal value for binary swtich + int valeur = 300; + int previousvaleur = 300; + int score = 0; + int previousscore = 0; + + char* _speed [4] = {"slow","normal","fast","hardcore"}; + int Ispeed = 0; + char* bits[4] = {"4","5","6","8",}; + int Ibits = 0; + char* help [2] = {"yes","no"}; + int Ihelp = 0; + + int highscore; + + + void setup() { + pinMode(b1, INPUT); + pinMode(b2, INPUT); + pinMode(b4, INPUT); + pinMode(b8, INPUT); + pinMode(b16, INPUT); + pinMode(b32, INPUT); + pinMode(b64, INPUT); + pinMode(b128, INPUT); + pinMode(bhelp, INPUT); + pinMode(bbutton, INPUT); + pinMode(bbit1, INPUT); + pinMode(bbit2, INPUT); + pinMode(bspeed1, INPUT); + pinMode(bspeed2, INPUT); + + TV.start_render(_PAL); //for devices with only 1k sram(m168) use TV.begin(_PAL,128,56) + TV.clear_screen(); + //Serial.begin(9600); + } + + void loop() + { + int _Ispeed = 100; + boolean gameover = false; + int i = 0; + int maxbit = 4; + int help = 0; + + TV.clear_screen(); + TV.print_str(0,8," TETALAB "); + TV.print_str(0,16," WE MAKE PORN"); + TV.print_str(0,32," Binary Hero v0.91"); + TV.print_str(0,48," Complex Solutions"); + TV.print_str(0,56," to "); + TV.print_str(0,64," Inexistant problems"); + delay(2000); + + TV.clear_screen(); + menu(); + TV.clear_screen(); + + if (Ispeed == 0) _Ispeed = 200; + if (Ispeed == 1) _Ispeed = 100; + if (Ispeed == 2) _Ispeed = 50; + if (Ispeed == 3) _Ispeed = 25; + + if (Ibits == 0) maxbit = 15; + if (Ibits == 1) maxbit = 31; + if (Ibits == 2) maxbit = 63; + if (Ibits == 3) maxbit = 255; + + help = Ihelp; + + randomSeed(analogRead(5)); + number = random(0,maxbit); + + TV.clear_screen(); + + + //game init + TV.draw_line(0,0,0,68,1); + TV.draw_line(0,0,35,0,1); + TV.draw_line(35,68,0,68,1); + TV.draw_line(35,68,35,0,1); + if (Ihelp == 0) + { + TV.print_str(45,8,"Help:"); + } + TV.print_str(45,32,"Bonus X"); + TV.print_str(90,32,xx); + TV.print_str(45,56,"Score"); + TV.print_str(82,56,"0"); + + + + + while (!gameover) + { + if (millis() - previousMillis > _Ispeed) + { + previousMillis = millis(); + if (pas > limitebasse-2) + { + TV.clear_screen(); + TV.print_str(0,8," Game over"); + TV.print_str(0,32," Score :"); + //char charscore[4]; + itoa(score,charscore,10); + TV.print_str(60,60,charscore); + int truc = 1; + delay(3000); + score = 0; + pas = 1; + number = random(0,maxbit); + TV.clear_screen(); + gameover = true; + } + else + { + TV.draw_line(1,pas,34,pas,0); + pas++; + } + } + + itoa(number,charnum,10); + TV.print_str(10,pas,charnum); + + valeur = 0; + if (digitalRead(b1)==LOW) valeur = valeur+1; + if (digitalRead(b2)==HIGH) valeur = valeur+2; + if (digitalRead(b4)==HIGH) valeur = valeur+4; + if (digitalRead(b8)==HIGH) valeur = valeur+8; + if (digitalRead(b16)==HIGH) valeur = valeur+16; + if (digitalRead(b32)==HIGH) valeur = valeur+32; + if (digitalRead(b64)==HIGH) valeur = valeur+64; + if (digitalRead(b128)==HIGH) valeur = valeur+128; + + + + if (Ihelp == 0 && previousvaleur != valeur) + { + + itoa(valeur,charhelp,10); + if (valeur<10) + { + charhelp[2] = charhelp[0]; + charhelp[1] = '0'; + charhelp[0] = '0'; + } + if (valeur>9 && valeur<100) + { + charhelp[2] = charhelp[1]; + charhelp[1] = charhelp[0]; + charhelp[0] = '0'; + } + TV.print_str(75,8,charhelp); + previousvaleur = valeur; + } + + + + + if (score != previousscore) + { + itoa(score,charscore,10); + TV.print_str(82,56,charscore); + previousscore = score; + } + + if (valeur == number) + { + score = score + x; + number = random(0,maxbit); + + i = 0; + while (i < 8) + { + TV.draw_line(1,pas+i,34,pas+i,0); + i++; + } + TV.draw_line(35,68,0,68,1); + pas = 1; + } + } + } + + + void displaymenu(int a,int b,int c) + { + //a = _speed + //b = bits + //c = help + TV.clear_screen(); + TV.print_str(16,8, "Speed :"); + TV.print_str(16,16,"Nb bits:"); + TV.print_str(16,24,"Help :"); + TV.print_str(12,40,"Press PAP to start"); + + TV.print_str(65,8,_speed[a]); + TV.print_str(65,16,bits[b]); + TV.print_str(65,24,help[c]); + + x=0; + x = Ispeed + Ibits + Ihelp; + x = pow(2,x); + + itoa(x,xx,10); + TV.print_str(20,80,"Bonus : X"); + TV.print_str(80,80,xx); + + } + + void menu() + { + int i = 0; + boolean paplast = true; + displaymenu(Ispeed,Ibits,Ihelp); + + int lasthelp = 5; + int lastspeed = 5; + int lastbits = 5; + + while(i==0) + { + if (digitalRead(bhelp) == LOW) Ihelp = 0; + else Ihelp = 1; + + if ((Ihelp != lasthelp) || (Ibits != lastbits) || (Ispeed !=lastspeed)) + { + displaymenu(Ispeed,Ibits,Ihelp); + lasthelp = Ihelp; + lastspeed = Ispeed; + lastbits = Ibits; + } + + if (digitalRead(bbit1) == HIGH && digitalRead(bbit2) == HIGH) Ibits = 0; + if (digitalRead(bbit1) == HIGH && digitalRead(bbit2) == LOW) Ibits = 1; + if (digitalRead(bbit1) == LOW && digitalRead(bbit2) == HIGH) Ibits = 2; + if (digitalRead(bbit1) == LOW && digitalRead(bbit2) == LOW) Ibits = 3; + + if (digitalRead(bspeed1) == HIGH && digitalRead(bspeed2) == HIGH) Ispeed = 0; + if (digitalRead(bspeed1) == HIGH && digitalRead(bspeed2) == LOW) Ispeed = 1; + if (digitalRead(bspeed1) == LOW && digitalRead(bspeed2) == HIGH) Ispeed = 2; + if (digitalRead(bspeed1) == LOW && digitalRead(bspeed2) == LOW) Ispeed = 3; + + if (digitalRead(bhelp) == HIGH) Ihelp = 1; + else Ihelp = 0; + + if (digitalRead(bbutton) == LOW) i = 1; + } + }