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); | ||
+ | } | ||
+ | </ | ||