Felted BMO
It could be an easy one but I would recommend some basic knowledge.
Find a Foam
Find a form to be your base ready for felting. It has 2 parts, one is the front part which cut through the foam. The second one is just for the back side of the BMO.
Test Your Matrix LEDs 8 by 8
Then, try to test your Matrix 8 by 8 on your breadboard first.
5v/3v -> VCC (Number 8)
GND -> GND (Number 4)
PB0 -> DIN
PB1 -> CS
PB2 -> CLK
Thanks to this website for the ATtiny Diagram https://wiki.modellbahn-anlage.de/ATtiny13
#include <LedControl.h>
int DIN = 1; int CS = 2; int CLK = 3; int pin = 4;
bool isTouch;
long previousMillis = 0; long interval = 500;
int Step = 0; int Face = 0;
LedControl lc = LedControl(DIN, CLK, CS, 0);
void setup() { lc.shutdown(0, false); //The MAX72XX is in power-saving mode on startup // lc.setIntensity(0, 15); // Set the brightness to maximum value lc.clearDisplay(0); // and clear the display pinMode(pin, INPUT_PULLUP); }
void loop() {
unsigned long currentMillis = millis();
//TOUCH if (digitalRead(pin) == 0) { // isTouch = !isTouch; Face++; delay(500); }
if (currentMillis - previousMillis > interval) { // save the last time you blinked the LED previousMillis = currentMillis; Step++; }
if (Step > 2) { Step = 0; }
if (Face > 2) Face = 0;
byte Blank[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
byte Sleep0[8] = {0x00, 0x00, 0x00, 0xE7, 0x00, 0x24, 0x18, 0x00}; byte Sleep1[8] = {0x00, 0x00, 0x42, 0xA5, 0x00, 0x24, 0x18, 0x00}; byte Sleep2[8] = {0x00, 0x00, 0x00, 0xE7, 0x00, 0x24, 0x18, 0x00};
byte Awake0[8] = {0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00}; byte Awake1[8] = {0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00}; byte Awake2[8] = {0x00, 0x00, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x00};
if (Step == 0) { switch (Face) { case 0: printByte(Blank); break; case 1: printByte(Sleep0); break; case 2: printByte(Awake0); break; } } if (Step == 1) { switch (Face) { case 0: printByte(Blank); break; case 1: printByte(Sleep1); break; case 2: printByte(Awake1); break; } } if (Step == 2) { switch (Face) { case 0: printByte(Blank); break; case 1: printByte(Sleep2); break; case 2: printByte(Awake2); break; } }
}
void printByte(byte character []) { int i = 0; for (i = 0; i < 8; i++) { lc.setRow(0, i, character[i]); } }
Wiring
I use the conductive thread for this project. It quite weak so please be careful of the thread. I use a needle to put through the foam and tie with the legs around. you can make a bridge in case you need to jump to the other connection.
IMPORTANT
You also need to connect Power (VCC) and Ground (GND) to a coin cell battery in order to get it to work.
Soft Button
This is how to make a soft button
https://www.instructables.com/id/Soft-button/
I followed this one and it's really easy to make one by yourself!
Voila !
Have fun petting your BMO!