/* - Arduino & Chralieplexing - Driving 9 LEDs using only 4 I/O Pins - Tri-State Logic Implementation - Code written by Ganesh Ram - Modified from code by T.K.Hareendran - Tested at Department of Design */ #define LED_1 4 #define LED_2 5 #define LED_3 6 #define LED_4 7 #define buttonApin 11 #define buttonBpin 12 int i=0; char input; void setup() { pinMode(LED_1, INPUT); pinMode(LED_2, INPUT); pinMode(LED_3, INPUT); pinMode(LED_4, INPUT); pinMode(buttonApin, INPUT_PULLUP); pinMode(buttonBpin, INPUT_PULLUP); Serial.begin(9600); } void loop() { if (digitalRead(buttonApin) == LOW) { { for(i=0;i<=50;i++) I(); for(i=0;i<50;i++) alloff(); for(i=0;i<=50;i++) I(); for(i=0;i<50;i++) alloff(); for(i=0;i<=50;i++) T(); for(i=0;i<50;i++) alloff(); for(i=0;i<=50;i++) D(); for(i=0;i<50;i++) alloff(); } } if (digitalRead(buttonBpin) == LOW) { for(int n= 0; n<5; n++) { for(i=0;i<50;i++) allon(); for(i=0;i<50;i++) alloff(); } } if (Serial.available()) { input = Serial.read();//read the input if (input == 'a' || input == 'A') { for(i=0;i<=50;i++) { A(); } } if (input == 'b' || input == 'B') { for(i=0;i<=50;i++) { B(); } } if (input == 'c' || input == 'C') { for(i=0;i<=50;i++) { C(); } } if (input == 'd' || input == 'D') { for(i=0;i<=50;i++) { D(); } } if (input == 'e' || input == 'E') { for(i=0;i<=50;i++) { E(); } } if (input == 'f' || input == 'F') { for(i=0;i<=50;i++) { F1(); } } if (input == 'g' || input == 'G') { for(i=0;i<=50;i++) { G(); } } if (input == 'h' || input == 'H') { for(i=0;i<=50;i++) { H(); } } if (input == 'i' || input == 'I') { for(i=0;i<=50;i++) { I(); } } if (input == 'j' || input == 'J') { for(i=0;i<=50;i++) { J(); } } if (input == 'k' || input == 'K') { for(i=0;i<=50;i++) { K(); } } if (input == 'l' || input == 'L') { for(i=0;i<=50;i++) { L(); } } if (input == 'm' || input == 'M') { for(i=0;i<=50;i++) { M(); } } if (input == 'n' || input == 'N') { for(i=0;i<=50;i++) { N(); } } if (input == 'o' || input == 'O') { for(i=0;i<=50;i++) { O(); } } if (input == 'p' || input == 'P') { for(i=0;i<=50;i++) { P(); } } if (input == 'q' || input == 'Q') { for(i=0;i<=50;i++) { Q(); } } if (input == 'r' || input == 'R') { for(i=0;i<=50;i++) { R(); } } if (input == 's' || input == 'S') { for(i=0;i<=50;i++) { S(); } } if (input == 't' || input == 'T') { for(i=0;i<=50;i++) { T(); } } if (input == 'u' || input == 'U') { for(i=0;i<=50;i++) { U(); } } if (input == 'v' || input == 'V') { for(i=0;i<=50;i++) { V(); } } if (input == 'w' || input == 'W') { for(i=0;i<=50;i++) { W(); } } if (input == 'x' || input == 'X') { for(i=0;i<=50;i++) { X(); } } if (input == 'y' || input == 'Y') { for(i=0;i<=50;i++) { Y(); } } if (input == 'z' || input == 'Z') { for(i=0;i<=50;i++) { Z(); } } Serial.println (input);//print the latter saved in the input var } /* set_pins(LED_1, LED_2); //LED 1A delay(100); set_pins(LED_2, LED_1); //LED 1B delay(100); set_pins(LED_1, LED_4); //LED 1C delay(100); set_pins(LED_4, LED_1); //LED 2C delay(100); set_pins(LED_3, LED_2); //LED 2B delay(100); set_pins(LED_2, LED_3); //LED 2A delay(100); set_pins(LED_2, LED_4); //LED 3C delay(100); set_pins(LED_3, LED_4); //LED 3B delay(100); set_pins(LED_4, LED_3); //LED 3A delay(100); */ } void set_pins(int high_pin, int low_pin) { reset_pins(); pinMode(high_pin, OUTPUT); pinMode(low_pin, OUTPUT); digitalWrite(high_pin, HIGH); digitalWrite(low_pin,LOW); } void reset_pins() { pinMode(LED_1, INPUT); pinMode(LED_2, INPUT); pinMode(LED_3, INPUT); pinMode(LED_4, INPUT); digitalWrite(LED_1, LOW); digitalWrite(LED_2, LOW); digitalWrite(LED_3, LOW); digitalWrite(LED_4, LOW); } void A() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void B() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); // set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void C() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void D() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); // set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); // set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void E() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void F1() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); // set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void G() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); // set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void H() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void I() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); // set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void J() { //set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); // set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void K() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void L() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); // set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void M() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); // set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void N() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void O() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); //set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void P() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); // set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void Q() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); // set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); // set_pins(LED_4, LED_3); //LED 3A delay(2); } void R() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); // set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void S() { //set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); //set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); //set_pins(LED_2, LED_3); //LED 2A delay(2); //set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void T() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); //set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); //set_pins(LED_2, LED_3); //LED 2A delay(2); //set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); //set_pins(LED_4, LED_3); //LED 3A delay(2); } void U() { set_pins(LED_1, LED_2); //LED 1A delay(2); //set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); //set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void V() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); // set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); // set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); // set_pins(LED_4, LED_3); //LED 3A delay(2); } void W() { // set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void X() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); // set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); // set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void Y() { set_pins(LED_1, LED_2); //LED 1A delay(2); // set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); // set_pins(LED_2, LED_3); //LED 2A delay(2); // set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); // set_pins(LED_4, LED_3); //LED 3A delay(2); } void Z() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); // set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); // set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void allon() { set_pins(LED_1, LED_2); //LED 1A delay(2); set_pins(LED_2, LED_1); //LED 1B delay(2); set_pins(LED_1, LED_4); //LED 1C delay(2); set_pins(LED_4, LED_1); //LED 2C delay(2); set_pins(LED_3, LED_2); //LED 2B delay(2); set_pins(LED_2, LED_3); //LED 2A delay(2); set_pins(LED_2, LED_4); //LED 3C delay(2); set_pins(LED_3, LED_4); //LED 3B delay(2); set_pins(LED_4, LED_3); //LED 3A delay(2); } void alloff() { reset_pins(); delay(20); }