Advertisement
Guest User

Nixie Clock Code

a guest
Nov 27th, 2014
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.92 KB | None | 0 0
  1. #include <Event.h>
  2. #include <Timer.h>
  3.  
  4. Timer t;
  5.  
  6. // multiplier for time delay, to adjust
  7. int timeModifierNumerator = 1;
  8. int timeModifierDenominator = 1;
  9. // how often to count each minute
  10. int clockTick = 1000*timeModifierNumerator*60/timeModifierDenominator;
  11. // 24 or 12 hour time
  12. int timeType = 12;
  13. int started = 0;
  14.  
  15. // number for each tube + starting value for time setting
  16. int tubeA = 0;
  17. int tubeB = 0;
  18. int tubeC = 0;
  19. int tubeD = 0;
  20.  
  21. //pin names!
  22. // tens of hours, 0-2
  23. int oneA = 13;
  24. int twoA = 12;
  25. // units of hours, 0-9
  26. int oneB = 11;
  27. int twoB = 10;
  28. int fourB = 9;
  29. int eightB = 8;
  30. //tens of minutes, 0-6
  31. int oneC = 7;
  32. int twoC = 6;
  33. int fourC = 5;
  34. //units of minutes, 0-9
  35. int oneD = 4;
  36. int twoD = 3;
  37. int fourD = 2;
  38. int eightD = 1;
  39.  
  40.  
  41. // setup, output all the things!
  42. void setup(){
  43. Serial.begin(9600);
  44. Serial.print("Feed_Started");
  45. Serial.print('\n');
  46. pinMode(oneA, OUTPUT);
  47. pinMode(twoA, OUTPUT);
  48. pinMode(oneB, OUTPUT);
  49. pinMode(twoB, OUTPUT);
  50. pinMode(fourB, OUTPUT);
  51. pinMode(eightB, OUTPUT);
  52. pinMode(oneC, OUTPUT);
  53. pinMode(twoC, OUTPUT);
  54. pinMode(fourC, OUTPUT);
  55. pinMode(oneD, OUTPUT);
  56. pinMode(twoD, OUTPUT);
  57. pinMode(fourD, OUTPUT);
  58. pinMode(eightD, OUTPUT);
  59.  
  60. // call count according to timer
  61. t.every(clockTick, count);
  62.  
  63. }
  64.  
  65. void loop (){
  66. //update timer
  67. t.update();
  68.  
  69. }
  70.  
  71. // public loop for generating time
  72. void count(){
  73. Serial.print("minute Counted");
  74. Serial.print('\n');
  75. // increment minutes
  76. if (tubeD < 9) {
  77. tubeD = tubeD+1;
  78. }
  79. // increment tens of minutes
  80. else if (tubeD = 9, tubeC < 5){
  81. tubeD = 0;
  82. tubeC = tubeC+1;
  83. }
  84. // increment hours
  85.  
  86. // increment hours for first 9 hours
  87. else if (tubeD = 9, tubeC = 5, tubeB < 9, tubeA = 0){
  88. tubeD = 0;
  89. tubeC = 0;
  90. tubeB = tubeB +1;
  91. }
  92. // increment hours for 12 hour time from 10-12
  93. else if (tubeD =9, tubeC = 5, tubeA = 1, timeType = 12, tubeB < 2){
  94. tubeD = 0;
  95. tubeC = 0;
  96. tubeB = tubeB + 1;
  97. }
  98. // increment hours 10-19 if 24 hour time
  99. else if (tubeD =9, tubeC = 5, tubeA = 1, timeType = 24, tubeB < 9){
  100. tubeD = 0;
  101. tubeC = 0;
  102. tubeB = tubeB + 1;
  103. }
  104. // increment hours 20-24
  105. else if (tubeD =9, tubeC = 5, tubeA = 2, timeType = 24, tubeB < 4){
  106. tubeD = 0;
  107. tubeC = 0;
  108. tubeB = tubeB + 1;
  109. }
  110.  
  111. // increment tens of hours from 0
  112. else if (tubeD = 9, tubeC = 5, tubeB = 9, tubeA =0) {
  113. tubeD = 0;
  114. tubeC = 0;
  115. tubeB = 0;
  116. tubeA = 1;
  117. }
  118. // reset clock to 01:00 if twelve hour time
  119. else if (tubeD = 9, tubeC = 5, tubeB = 2, tubeA =1, timeType = 12) {
  120. tubeD = 0;
  121. tubeC = 0;
  122. tubeB = 1;
  123. tubeA = 0;
  124. }
  125. // increment tens of hours if twenty-four hour time
  126. else if (tubeD = 9, tubeC = 5, tubeB = 9, tubeA = 1, timeType = 24) {
  127. tubeD = 0;
  128. tubeC = 0;
  129. tubeB = 0;
  130. tubeA = 2;
  131. }
  132. // reset clock to 01:00 if twenty-four hour time
  133. else if (tubeD = 9, tubeC = 5, tubeB = 4, tubeA = 2) {
  134. tubeD = 1;
  135. tubeC = 0;
  136. tubeB = 0;
  137. tubeA = 0;
  138. }
  139. // cry moment
  140. else {
  141. Serial.print("something is broken");
  142. }
  143.  
  144. //update time on tubes
  145. displayA();
  146. displayB();
  147. displayC();
  148. displayD();
  149. // print current time on tubes for debugging
  150. Serial.print('\n');
  151. Serial.print(tubeA);
  152. Serial.print(tubeB);
  153. Serial.print(tubeC);
  154. Serial.print(tubeD);
  155. Serial.print('\n');
  156. }
  157. // outputs to driver for tube A
  158. void displayA() {
  159.  
  160.  
  161. if (tubeA = 0) {
  162. Serial.print("A0");
  163. digitalWrite(oneA, LOW);
  164. digitalWrite(twoA, LOW);
  165. }
  166. else if (tubeA = 1) {
  167. Serial.print("A1");
  168. digitalWrite(oneA, HIGH);
  169. digitalWrite(twoA, LOW);
  170. }
  171. else if (tubeA = 2) {
  172. Serial.print("A2");
  173. digitalWrite(oneA, LOW);
  174. digitalWrite(twoA, HIGH);
  175. }
  176.  
  177. }
  178.  
  179. // outputs to driver for tube B
  180. void displayB() {
  181.  
  182.  
  183. if (tubeB = 0) {
  184. Serial.print("B0");
  185. digitalWrite(oneB, LOW);
  186. digitalWrite(twoB, LOW);
  187. digitalWrite(fourB, LOW);
  188. digitalWrite(eightB, LOW);
  189. }
  190. else if (tubeB = 1) {
  191. Serial.print("B1");
  192. digitalWrite(oneB, HIGH);
  193. digitalWrite(twoB, LOW);
  194. digitalWrite(fourB, LOW);
  195. digitalWrite(eightB, LOW);
  196. }
  197. else if (tubeB = 2) {
  198. Serial.print("B2");
  199. digitalWrite(oneB, LOW);
  200. digitalWrite(twoB, HIGH);
  201. digitalWrite(fourB, LOW);
  202. digitalWrite(eightB, LOW);
  203. }
  204. else if (tubeB = 3) {
  205. Serial.print("B3");
  206. digitalWrite(oneB, HIGH);
  207. digitalWrite(twoB, HIGH);
  208. digitalWrite(fourB, LOW);
  209. digitalWrite(eightB, LOW);
  210. }
  211. else if (tubeB = 4) {
  212. Serial.print("B4");
  213. digitalWrite(oneB, LOW);
  214. digitalWrite(twoB, LOW);
  215. digitalWrite(fourB, HIGH);
  216. digitalWrite(eightB, LOW);
  217. }
  218. else if (tubeB = 5) {
  219. Serial.print("B5");
  220. digitalWrite(oneB, HIGH);
  221. digitalWrite(twoB, LOW);
  222. digitalWrite(fourB, HIGH);
  223. digitalWrite(eightB, LOW);
  224. }
  225. else if (tubeB = 6) {
  226. Serial.print("B6");
  227. digitalWrite(oneB, LOW);
  228. digitalWrite(twoB, HIGH);
  229. digitalWrite(fourB, HIGH);
  230. digitalWrite(eightB, LOW);
  231. }
  232. else if (tubeB = 7) {
  233. Serial.print("B7");
  234. digitalWrite(oneB, HIGH);
  235. digitalWrite(twoB, HIGH);
  236. digitalWrite(fourB, HIGH);
  237. digitalWrite(eightB, LOW);
  238. }
  239. else if (tubeB = 8) {
  240. Serial.print("B8");
  241. digitalWrite(oneB, LOW);
  242. digitalWrite(twoB, LOW);
  243. digitalWrite(fourB, LOW);
  244. digitalWrite(eightB, HIGH);
  245. }
  246. else if(tubeB = 9) {
  247. Serial.print("B9");
  248. digitalWrite(oneB, HIGH);
  249. digitalWrite(twoB, LOW);
  250. digitalWrite(fourB, LOW);
  251. digitalWrite(eightB, HIGH);
  252. }
  253.  
  254. }
  255.  
  256. // output to C
  257. void displayC(){
  258. if (tubeC = 0) {
  259. Serial.print("C0");
  260. digitalWrite(oneC, LOW);
  261. digitalWrite(twoC, LOW);
  262. digitalWrite(fourC, LOW);
  263. }
  264. else if (tubeC = 1) {
  265. Serial.print("C1");
  266. digitalWrite(oneC, HIGH);
  267. digitalWrite(twoC, LOW);
  268. digitalWrite(fourC, LOW);
  269. }
  270. else if (tubeC = 2) {
  271. Serial.print("C2");
  272. digitalWrite(oneC, LOW);
  273. digitalWrite(twoC, HIGH);
  274. digitalWrite(fourC, LOW);
  275. }
  276. else if (tubeC = 3) {
  277. Serial.print("C3");
  278. digitalWrite(oneC, HIGH);
  279. digitalWrite(twoC, HIGH);
  280. digitalWrite(fourC, LOW);
  281. }
  282. else if (tubeC = 4) {
  283. Serial.print("C4");
  284. digitalWrite(oneC, LOW);
  285. digitalWrite(twoC, LOW);
  286. digitalWrite(fourC, HIGH);
  287. }
  288. else if (tubeC = 5) {
  289. Serial.print("C5");
  290. digitalWrite(oneC, HIGH);
  291. digitalWrite(twoC, LOW);
  292. digitalWrite(fourC, HIGH);
  293. }
  294.  
  295. }
  296. // output to D
  297. void displayD() {
  298. if (tubeD = 0) {
  299. Serial.print("D0");
  300. digitalWrite(oneD, LOW);
  301. digitalWrite(twoD, LOW);
  302. digitalWrite(fourD, LOW);
  303. digitalWrite(eightD, LOW);
  304. }
  305. else if (tubeD = 1) {
  306. Serial.print("D1");
  307. digitalWrite(oneD, HIGH);
  308. digitalWrite(twoD, LOW);
  309. digitalWrite(fourD, LOW);
  310. digitalWrite(eightD, LOW);
  311. }
  312. else if (tubeD = 2) {
  313. Serial.print("D2");
  314. digitalWrite(oneD, LOW);
  315. digitalWrite(twoD, HIGH);
  316. digitalWrite(fourD, LOW);
  317. digitalWrite(eightD, LOW);
  318. }
  319. else if (tubeD = 3) {
  320. Serial.print("D3");
  321. digitalWrite(oneD, HIGH);
  322. digitalWrite(twoD, HIGH);
  323. digitalWrite(fourD, LOW);
  324. digitalWrite(eightD, LOW);
  325. }
  326. else if (tubeD = 4) {
  327. Serial.print("D4");
  328. digitalWrite(oneD, LOW);
  329. digitalWrite(twoD, LOW);
  330. digitalWrite(fourD, HIGH);
  331. digitalWrite(eightD, LOW);
  332. }
  333. else if (tubeD = 5) {
  334. Serial.print("D5");
  335. digitalWrite(oneD, HIGH);
  336. digitalWrite(twoD, LOW);
  337. digitalWrite(fourD, HIGH);
  338. digitalWrite(eightD, LOW);
  339. }
  340. else if (tubeD = 6) {
  341. Serial.print("D6");
  342. digitalWrite(oneD, LOW);
  343. digitalWrite(twoD, HIGH);
  344. digitalWrite(fourD, HIGH);
  345. digitalWrite(eightD, LOW);
  346. }
  347. else if (tubeD = 7) {
  348. Serial.print("D7");
  349. digitalWrite(oneD, HIGH);
  350. digitalWrite(twoD, HIGH);
  351. digitalWrite(fourD, HIGH);
  352. digitalWrite(eightD, LOW);
  353. }
  354. else if (tubeD = 8) {
  355. Serial.print("D8");
  356. digitalWrite(oneD, LOW);
  357. digitalWrite(twoD, LOW);
  358. digitalWrite(fourD, LOW);
  359. digitalWrite(eightD, HIGH);
  360. }
  361. else if (tubeD = 9) {
  362. Serial.print("D9");
  363. digitalWrite(oneD, HIGH);
  364. digitalWrite(twoD, LOW);
  365. digitalWrite(fourD, LOW);
  366. digitalWrite(eightD, HIGH);
  367. }
  368. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement