first commit
This commit is contained in:
commit
ae36a1a39a
105
README.md
Normal file
105
README.md
Normal file
@ -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
|
||||
|
403
binherov0_91.pde
Normal file
403
binherov0_91.pde
Normal file
@ -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 <TVout.h>
|
||||
// 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 <stdlib.h> //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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user