Binary D2-20 LED Display
Basic five LED display that can show common die from D&D using two buttons, one as a randomiser, and one as a menu/roll state activator.
Components and supplies
1
5 mm LED: Green
1
Arduino UNO
1
Pushbutton switch 12mm
5
5 mm LED: Yellow
6
Resistor 330 ohm
Project description
Code
D20_Sketch
c_cpp
Base code for the project, upload to Arduino Uno
1int bin1 = 13; //pins 13 - 9 used for lights 1 - 16 2int bin2 = 12; 3int bin4 = 11; 4int bin8 = 10; 5int bin16 = 9; 6int menustate = 0; // 0 menustate will be standard d20 7int heightlimit = 21; // 21 heightlimit means roll cannot exceed 20 (exclusive maximum) 8int rollvalue = 0; // begin at 0 so lights do not initialise on, allows a baseline to start from 9int rollbutton = 3; // pins 2 and 3 used for detecting menu or roll press 10int menubutton = 2; 11int rollon = LOW; // on states are HIGH if digitalRead of menu/roll are high, allows if to function 12int menuon = LOW; 13int menuhasdisplayed = 0; // decaying variable ensures menu value is not constantly displayed and does not interrupt 14void setup() { 15pinMode(bin1, OUTPUT); 16pinMode(bin2, OUTPUT); 17pinMode(bin4, OUTPUT); 18pinMode(bin8, OUTPUT); 19pinMode(bin16, OUTPUT); 20pinMode(rollbutton, INPUT); 21pinMode(menubutton, INPUT); 22Serial.begin(9600); 23} 24 25void loop() { 26 Serial.println(menustate); 27rollon = digitalRead(rollbutton); 28menuon = digitalRead(menubutton); 29 30if(rollon == HIGH){ 31 rollvalue = random(1, heightlimit); 32 delay(5); 33} 34if(menuon == HIGH){ 35 menustate++; 36 menuhasdisplayed = 0; 37 delay(750); 38} 39if(menustate == 6){ 40 menustate = 0; 41} 42if(menustate == 0 && menuhasdisplayed == 0){ 43 heightlimit = 21; 44 digitalWrite(bin1, LOW); 45 digitalWrite(bin2, LOW); 46 digitalWrite(bin4, HIGH); 47 digitalWrite(bin8, LOW); 48 digitalWrite(bin16, HIGH); 49 delay(750); 50 menuhasdisplayed = 1; 51} 52if(menustate == 1 && menuhasdisplayed == 0){ 53 heightlimit = 3; 54 digitalWrite(bin1, LOW); 55 digitalWrite(bin2, HIGH); 56 digitalWrite(bin4, LOW); 57 digitalWrite(bin8, LOW); 58 digitalWrite(bin16, LOW); 59 delay(750); 60 menuhasdisplayed = 1; 61} 62if(menustate == 2 && menuhasdisplayed == 0){ 63 heightlimit = 5; 64 digitalWrite(bin1, LOW); 65 digitalWrite(bin2, LOW); 66 digitalWrite(bin4, HIGH); 67 digitalWrite(bin8, LOW); 68 digitalWrite(bin16, LOW); 69 delay(750); 70 menuhasdisplayed = 1; 71} 72if(menustate == 3 && menuhasdisplayed == 0){ 73 heightlimit = 9; 74 digitalWrite(bin1, LOW); 75 digitalWrite(bin2, LOW); 76 digitalWrite(bin4, LOW); 77 digitalWrite(bin8, HIGH); 78 digitalWrite(bin16, LOW); 79 delay(750); 80 menuhasdisplayed = 1; 81} 82if(menustate == 4 && menuhasdisplayed == 0){ 83 heightlimit = 11; 84 digitalWrite(bin1, LOW); 85 digitalWrite(bin2, HIGH); 86 digitalWrite(bin4, LOW); 87 digitalWrite(bin8, HIGH); 88 digitalWrite(bin16, LOW); 89 delay(750); 90 menuhasdisplayed = 1; 91} 92if(menustate == 5 && menuhasdisplayed == 0){ 93 heightlimit = 13; 94 digitalWrite(bin1, LOW); 95 digitalWrite(bin2, LOW); 96 digitalWrite(bin4, HIGH); 97 digitalWrite(bin8, HIGH); 98 digitalWrite(bin16, LOW); 99 delay(750); 100 menuhasdisplayed = 1; 101} 102 103// ledblock begin 104 105if(rollvalue == 0) { 106 digitalWrite(bin1, LOW); 107 digitalWrite(bin2, LOW); 108 digitalWrite(bin4, LOW); 109 digitalWrite(bin8, LOW); 110 digitalWrite(bin16, LOW); 111} 112if(rollvalue == 1) { 113 digitalWrite(bin1, HIGH); 114 digitalWrite(bin2, LOW); 115 digitalWrite(bin4, LOW); 116 digitalWrite(bin8, LOW); 117 digitalWrite(bin16, LOW); 118} 119if(rollvalue == 2) { 120 digitalWrite(bin1, LOW); 121 digitalWrite(bin2, HIGH); 122 digitalWrite(bin4, LOW); 123 digitalWrite(bin8, LOW); 124 digitalWrite(bin16, LOW); 125} 126if(rollvalue == 3) { 127 digitalWrite(bin1, HIGH); 128 digitalWrite(bin2, HIGH); 129 digitalWrite(bin4, LOW); 130 digitalWrite(bin8, LOW); 131 digitalWrite(bin16, LOW); 132} 133if(rollvalue == 4) { 134 digitalWrite(bin1, LOW); 135 digitalWrite(bin2, LOW); 136 digitalWrite(bin4, HIGH); 137 digitalWrite(bin8, LOW); 138 digitalWrite(bin16, LOW); 139} 140if(rollvalue == 5) { 141 digitalWrite(bin1, HIGH); 142 digitalWrite(bin2, LOW); 143 digitalWrite(bin4, HIGH); 144 digitalWrite(bin8, LOW); 145 digitalWrite(bin16, LOW); 146} 147if(rollvalue == 6) { 148 digitalWrite(bin1, LOW); 149 digitalWrite(bin2, HIGH); 150 digitalWrite(bin4, HIGH); 151 digitalWrite(bin8, LOW); 152 digitalWrite(bin16, LOW); 153} 154if(rollvalue == 7) { 155 digitalWrite(bin1, HIGH); 156 digitalWrite(bin2, HIGH); 157 digitalWrite(bin4, HIGH); 158 digitalWrite(bin8, LOW); 159 digitalWrite(bin16, LOW); 160} 161if(rollvalue == 8) { 162 digitalWrite(bin1, LOW); 163 digitalWrite(bin2, LOW); 164 digitalWrite(bin4, LOW); 165 digitalWrite(bin8, HIGH); 166 digitalWrite(bin16, LOW); 167} 168if(rollvalue == 9) { 169 digitalWrite(bin1, HIGH); 170 digitalWrite(bin2, LOW); 171 digitalWrite(bin4, LOW); 172 digitalWrite(bin8, HIGH); 173 digitalWrite(bin16, LOW); 174} 175if(rollvalue == 10) { 176 digitalWrite(bin1, LOW); 177 digitalWrite(bin2, HIGH); 178 digitalWrite(bin4, LOW); 179 digitalWrite(bin8, HIGH); 180 digitalWrite(bin16, LOW); 181} 182if(rollvalue == 11) { 183 digitalWrite(bin1, HIGH); 184 digitalWrite(bin2, HIGH); 185 digitalWrite(bin4, LOW); 186 digitalWrite(bin8, HIGH); 187 digitalWrite(bin16, LOW); 188} 189if(rollvalue == 12) { 190 digitalWrite(bin1, LOW); 191 digitalWrite(bin2, LOW); 192 digitalWrite(bin4, HIGH); 193 digitalWrite(bin8, HIGH); 194 digitalWrite(bin16, LOW); 195} 196if(rollvalue == 13) { 197 digitalWrite(bin1, HIGH); 198 digitalWrite(bin2, LOW); 199 digitalWrite(bin4, HIGH); 200 digitalWrite(bin8, HIGH); 201 digitalWrite(bin16, LOW); 202} 203if(rollvalue == 14) { 204 digitalWrite(bin1, LOW); 205 digitalWrite(bin2, HIGH); 206 digitalWrite(bin4, HIGH); 207 digitalWrite(bin8, HIGH); 208 digitalWrite(bin16, LOW); 209} 210if(rollvalue == 15) { 211 digitalWrite(bin1, HIGH); 212 digitalWrite(bin2, HIGH); 213 digitalWrite(bin4, HIGH); 214 digitalWrite(bin8, HIGH); 215 digitalWrite(bin16, LOW); 216} 217if(rollvalue == 16) { 218 digitalWrite(bin1, LOW); 219 digitalWrite(bin2, LOW); 220 digitalWrite(bin4, LOW); 221 digitalWrite(bin8, LOW); 222 digitalWrite(bin16, HIGH); 223} 224if(rollvalue == 17) { 225 digitalWrite(bin1, HIGH); 226 digitalWrite(bin2, LOW); 227 digitalWrite(bin4, LOW); 228 digitalWrite(bin8, LOW); 229 digitalWrite(bin16, HIGH); 230} 231if(rollvalue == 18) { 232 digitalWrite(bin1, LOW); 233 digitalWrite(bin2, HIGH); 234 digitalWrite(bin4, LOW); 235 digitalWrite(bin8, LOW); 236 digitalWrite(bin16, HIGH); 237} 238if(rollvalue == 19) { 239 digitalWrite(bin1, HIGH); 240 digitalWrite(bin2, HIGH); 241 digitalWrite(bin4, LOW); 242 digitalWrite(bin8, LOW); 243 digitalWrite(bin16, HIGH); 244} 245if(rollvalue == 20) { 246 digitalWrite(bin1, LOW); 247 digitalWrite(bin2, LOW); 248 digitalWrite(bin4, HIGH); 249 digitalWrite(bin8, LOW); 250 digitalWrite(bin16, HIGH); 251} 252delay(5); 253} 254
Comments
Only logged in users can leave comments