Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
projekte:2019:berlinbadge_rev1 [2019/12/30 22:31] max angelegt |
projekte:2019:berlinbadge_rev1 [2021/05/15 10:26] (aktuell) max [Pictures] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | {{: | ||
| + | |||
| ====== BerlinBadge rev1 ====== | ====== BerlinBadge rev1 ====== | ||
| + | |||
| + | Contact: [[user: | ||
| + | |||
| + | Projectstatus: | ||
| + | |||
| + | ===== Summary ===== | ||
| [[https:// | [[https:// | ||
| - | {{: | + | ===== Pictures ===== |
| - | {{: | + | |
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| ===== Hardware ===== | ===== Hardware ===== | ||
| Zeile 12: | Zeile 22: | ||
| ===== BOM ===== | ===== BOM ===== | ||
| ^ Label ^ Qty ^ Value ^ Footprint ^ Description ^ | ^ Label ^ Qty ^ Value ^ Footprint ^ Description ^ | ||
| - | | BT1 | 1 | - | JST PH 2.00mm 2-Pins Horizontal | | | + | | BT1 | 1 | Connector |
| | C1, C4, C7, C9, C10, C13, C14 | 7 | 100nF | 0805 C | | | | C1, C4, C7, C9, C10, C13, C14 | 7 | 100nF | 0805 C | | | ||
| | C2, C3, C5, C6, C8, C11 | 6 | 2.2uF | 0805 C | | | | C2, C3, C5, C6, C8, C11 | 6 | 2.2uF | 0805 C | | | ||
| Zeile 18: | Zeile 28: | ||
| | D1, D2, D3, D4, D5, D6, D7, D8 | 8 | WS2812B | 5050 LED P3.2mm | | | | D1, D2, D3, D4, D5, D6, D7, D8 | 8 | WS2812B | 5050 LED P3.2mm | | | ||
| | D9 | 1 | ca. 3V 10mA LED (Yellow) | 0805 LED | | | | D9 | 1 | ca. 3V 10mA LED (Yellow) | 0805 LED | | | ||
| - | | J1 | 1 | - | 2x3 Odd_Even Pinheader 2.54mm Vertical NOT MOUNTED | | | + | | J1 | 1 | Connector |
| - | | J2 | 1 | - | USB A Stewart SS52100-001 Horizontal | | | + | | J2 | 1 | USB A | USB A Stewart SS52100-001 Horizontal | | |
| | JP1 | 1 | - | nothing to mount | Solder to match the maximum voltage of the battery | | | | JP1 | 1 | - | nothing to mount | Solder to match the maximum voltage of the battery | | | ||
| - | | P1 | 1 | - | nothing to mount | AVR ISProgrammer, | + | | P1 | 1 | - | nothing to mount | AVR ISProgrammer, |
| | R1, R3 | 2 | 10K | 0805 R | | | | R1, R3 | 2 | 10K | 0805 R | | | ||
| | R2 | 1 | 1K | 0805 R | series resistor for D9, match current! | | | R2 | 1 | 1K | 0805 R | series resistor for D9, match current! | | ||
| - | | R4, R5, R6, R7, R8, R9 | OR | 0805 R | just for layouting reasons | | + | | R4, R5, R6, R7, R8, R9 | 6 | 0R | 0805 R | just for layouting reasons | |
| - | | SW1 | 1 | - | SPDT_PCM12 Example: [[https:// | + | | SW1 | 1 | Switch |
| | U1 | 1 | ATTiny85-20SU | SOIJ-8_5.3x5.3mm P1.27mm | [[https:// | | U1 | 1 | ATTiny85-20SU | SOIJ-8_5.3x5.3mm P1.27mm | [[https:// | ||
| | U2 | 1 | MAX1811 | SOIC-8_3.9x4.9mm P1.27 | | | | U2 | 1 | MAX1811 | SOIC-8_3.9x4.9mm P1.27 | | | ||
| + | ===== Software ===== | ||
| + | This is the arduino code running on rev1. You need to install the neopixel lib and compile for Attiny85 with **internal 16MHz**! | ||
| + | <code C> | ||
| + | #include < | ||
| + | #ifdef __AVR__ | ||
| + | # | ||
| + | #endif | ||
| + | |||
| + | |||
| + | #define LED_PIN | ||
| + | #define LED_COUNT | ||
| + | #define BRIGHTNESS 255 | ||
| + | |||
| + | Adafruit_NeoPixel strip(LED_COUNT, | ||
| + | |||
| + | #define PERCENT_SPAWN 6 | ||
| + | |||
| + | struct C{ | ||
| + | byte red; | ||
| + | byte green; | ||
| + | byte blue; | ||
| + | }; | ||
| + | |||
| + | #define NUM_COLORS 16 | ||
| + | C colors[] = { | ||
| + | {0,0,255}, | ||
| + | {0,255,0}, | ||
| + | {255,0,0}, | ||
| + | {0,255,0}, | ||
| + | {60,240,0}, | ||
| + | {255, | ||
| + | {10, | ||
| + | {70, | ||
| + | {140, | ||
| + | {12, | ||
| + | {200, | ||
| + | {200, | ||
| + | {80, | ||
| + | {0,0,255}, | ||
| + | }; | ||
| + | |||
| + | C leds[LED_COUNT]; | ||
| + | C ledsIst[LED_COUNT]; | ||
| + | int state[LED_COUNT]; | ||
| + | |||
| + | void setup() { | ||
| + | #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000) | ||
| + | clock_prescale_set(clock_div_1); | ||
| + | #endif | ||
| + | |||
| + | strip.begin(); | ||
| + | strip.show(); | ||
| + | strip.setBrightness(BRIGHTNESS); | ||
| + | |||
| + | for(int i=0; i< | ||
| + | leds[i].red = 0; | ||
| + | leds[i].blue = 0; | ||
| + | leds[i].green = 0; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void clearLED(int i){ | ||
| + | leds[i].red = 0; | ||
| + | leds[i].blue = 0; | ||
| + | leds[i].green = 0; | ||
| + | } | ||
| + | |||
| + | bool isOut(int i){ | ||
| + | return leds[i].red == 0 && leds[i].blue == 0 && leds[i].green == 0; | ||
| + | } | ||
| + | |||
| + | void setLED(int i, C c){ | ||
| + | leds[i].red = c.red; | ||
| + | leds[i].blue = c.blue; | ||
| + | leds[i].green = c.green; | ||
| + | state[i] = 1; | ||
| + | } | ||
| + | |||
| + | void dimLED(int i){ | ||
| + | if(state[i] == 0){ | ||
| + | ledsIst[i].red = 0; | ||
| + | ledsIst[i].green = 0; | ||
| + | ledsIst[i].blue = 0; | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | if(state[i] == 4){ | ||
| + | ledsIst[i].red = int(leds[i].red); | ||
| + | ledsIst[i].blue = int(leds[i].blue); | ||
| + | ledsIst[i].green = int(leds[i].green); | ||
| + | }else if(state[i] > 4){ | ||
| + | int f = ((state[i]-4)*2); | ||
| + | ledsIst[i].red = int(leds[i].red / f); | ||
| + | ledsIst[i].blue = int(leds[i].blue / f); | ||
| + | ledsIst[i].green = int(leds[i].green / f); | ||
| + | }else if(state[i] < 4){ | ||
| + | int f = ((4-state[i])*2); | ||
| + | ledsIst[i].red = int(leds[i].red / f); | ||
| + | ledsIst[i].blue = int(leds[i].blue / f); | ||
| + | ledsIst[i].green = int(leds[i].green / f); | ||
| + | } | ||
| + | |||
| + | state[i]++; | ||
| + | if(state[i] == 15){ | ||
| + | state[i] = 0; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | for(int i=0; i< | ||
| + | if( random(0, | ||
| + | C col = colors[random(0, | ||
| + | setLED(i, | ||
| + | } | ||
| + | dimLED(i); | ||
| + | } | ||
| + | |||
| + | for(int i=0; i< | ||
| + | C col = ledsIst[i]; | ||
| + | strip.setPixelColor(i, | ||
| + | } | ||
| + | strip.show(); | ||
| + | delay(70); | ||
| + | } | ||
| + | </ | ||