A life-size 7-segment display visualizes the output of 2 artificial nueral networks
Key concepts/tech used: Arduino, p5.js, serial communication | In collaboration with: Mikian Musser
My friend, Mikian, created an artificial neural network to recognize hand-written digits from the MNIST dataset. We thought it would be cool to visualize what the neural network outputs on a real-life seven segment.
Visual representation of Mikian's neural network
The p5.js serialport library was used to communicate between p5 program and Arduino. It works as follows:
setInterval( function(){ console.log(numSent); serial.write((numSent)+""); } ,1000); }
incomingByte = Serial.read(); incomingByte = incomingByte - '0'; delay(100); if (incomingByte <= 9 && incomingByte>= 0) { setNum(incomingByte); }
Sending and recieving in p5.js and Arduino
int BCDToSS[16][7] = { {1,0,0,1,0,0,1}, // 0 {0,0,0,0,1,1,1}, // 1 {1,0,1,1,0,1,0}, // 2 {1,0,0,1,1,1,0}, // 3 {0,0,0,0,1,0,0}, // 4 {1,1,0,1,1,0,0}, // 5 {1,1,0,1,0,0,0}, // 6 {1,0,0,0,1,1,1}, // 7 {1,0,0,1,0,0,0}, // 8 {1,0,0,1,1,0,0}, // 9 {1,0,0,0,0,0,0}, // A {0,1,0,1,0,0,0}, // B {1,1,1,1,0,0,1}, // C {0,0,0,1,0,1,0}, // D {1,1,1,1,0,0,0}, // E {1,1,1,0,0,0,0} // F };
A basic decimal to binary-coded decimal encoder was used to translate the integer recieved by the Arduino into either on or off commands for each of the 7 servos. As a result, we could loop through 0-F.
We tested the final hardware on 2 different neural networks!