u32 additiveColorMix(u32 color1, u32 color2) { u8 r1, g1, b1, r2, g2, b2; colorPackedToScalar(&r1, &g1, &b1, color1); colorPackedToScalar(&r2, &g2, &b2, color2); r1 = colorChannelClampedAdd(r1, r2); g1 = colorChannelClampedAdd(g1, g2); b1 = colorChannelClampedAdd(b1, b2); u32 c = pixels.Color(r1, g1, b1); return c; }
void SparkButton::rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { // 1 cycle of all colors on wheel for(i=0; i< 12; i++) { uint8_t WheelPos = ((i * 256 / ring.numPixels()) + j) & 255; if(WheelPos < 85) { ring.setPixelColor(i,ring.Color(WheelPos * 3, 255 - WheelPos * 3, 0)); } else if(WheelPos < 170) { WheelPos -= 85; ring.setPixelColor(i,ring.Color(255 - WheelPos * 3, 0, WheelPos * 3)); } else { WheelPos -= 170; ring.setPixelColor(i,ring.Color(0, WheelPos * 3, 255 - WheelPos * 3)); } } ring.show(); delay(wait); } }
void lightUp() { if (++colorIndex == NUM_COLORS) { colorIndex = 0; } int red = colorList[colorIndex][0]; int green = colorList[colorIndex][1]; int blue = colorList[colorIndex][2]; // Bounds detection if (currentPixel == 0) { direction = 1; } else if (currentPixel == NUM_PIXELS) { direction = -1; } // Advancing the pixel currentPixel = currentPixel + (1 * direction); // now we will 'fade' it in 5 steps for (int x = 0; x < 5; x++) { int r = red * (x+1); r /= 5; int g = green * (x+1); g /= 5; int b = blue * (x+1); b /= 5; strip.setPixelColor(currentPixel, strip.Color(r, g, b)); strip.show(); delay(BLINK_DELAY); } // & fade out in 5 steps for (int x = 5; x >= 0; x--) { int r = red * x; r /= 5; int g = green * x; g /= 5; int b = blue * x; b /= 5; strip.setPixelColor(currentPixel, strip.Color(r, g, b)); strip.show(); delay(BLINK_DELAY); } }
void setLed(double temp) { char rgb[3]; rgb[1] = 0; if (temp <= MIN_TEMP || temp >= MAX_TEMP) warning_temp(temp); else { warning = 0; rgb[2] = 255 - (temp / MAX_TEMP * 255); rgb[0] = 255 * (temp / MAX_TEMP * 255); double nbr_led = (temp / MAX_TEMP) * NUM_LED; for(int j=0; j < NUM_LED; j++) { strip.setPixelColor(j, strip.Color(0, 0, 0)); } for(int i=0; i < nbr_led; i++) { strip.setPixelColor(i, strip.Color(rgb[0], rgb[1], rgb[2])); } strip.show(); } }
uint32_t Wheel(byte WheelPos) { if(WheelPos < 85) { return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); } else if(WheelPos < 170) { WheelPos -= 85; return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } else { WheelPos -= 170; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } }
void colorWipeLeft(uint32_t c, uint8_t wait) { uint32_t off = pixels.Color(0,0,0); uint8_t trailSize = 5; for(uint16_t i=0; i<pixels.numPixels(); i++) { pixels.setPixelColor(i, c); if((i-trailSize)>=0) pixels.setPixelColor(i-trailSize,off); pixels.show(); delay(wait); } }
void InternetButton::smoothLedOn(float i, uint8_t r, uint8_t g, uint8_t b){ //uint8_t intI = lrintf(i); //Serial.print("intI: "); //Serial.println(intI); //float differ = i-(float)intI + 0.5; //Serial.print("differ: "); //Serial.println(differ); float tempI; float differ = modff(i, &tempI); uint8_t intI = (uint8_t)tempI; // checks to see if it's reeeeally close to being an integer //if(abs(differ) < 0.01){ // intI-1 shifts the location from human readable to the right index for the LEDs // ring.setPixelColor(intI-1, ring.Color(r,g,b)); // Serial.println("tripped int check"); //} //else { // diff > 0 means that it's closer to the lower one float differ1 = 1.0-differ; //differ1 = logf(differ1); //differ = logf(differ); if(differ > 0.5){ differ1 /= 2; //ring.setPixelColor(intI-2, ring.Color((int)(differ1*r),(int)(differ1*g),(int)(differ1*b))); ring.setPixelColor(intI-1, ring.Color((int)(differ1*r),(int)(differ1*g),(int)(differ1*b))); ring.setPixelColor(intI, ring.Color((int)(differ*r),(int)(differ*g),(int)(differ*b))); } else { differ /= 2; //ring.setPixelColor(intI-2, ring.Color((int)(differ*r),(int)(differ*g),(int)(differ*b))); ring.setPixelColor(intI-1, ring.Color((int)(differ1*r),(int)(differ1*g),(int)(differ1*b))); ring.setPixelColor(intI, ring.Color((int)(differ*r),(int)(differ*g),(int)(differ*b))); } //} ring.show(); }
void colorWipeRight(uint32_t c, uint8_t wait) { uint32_t off = pixels.Color(0,0,0); uint16_t max_pixels = pixels.numPixels(); uint8_t trailSize = 5; for(uint16_t i=0; i<=max_pixels; i++) { pixels.setPixelColor(max_pixels-i, c); if(i>=trailSize)pixels.setPixelColor(max_pixels-i+trailSize,off); pixels.show(); delay(wait); } }
void warning_blink() { if (warning < 0 && blink >= CYCLE / 2) { for(int j=0; j < NUM_LED; j++) { strip.setPixelColor(j, strip.Color(0, 0, 255)); } } else if (warning > 0 && blink >= CYCLE / 2) { for(int j=0; j < NUM_LED; j++) { strip.setPixelColor(j, strip.Color(255, 0, 0)); } } else if (warning != 0 && blink < CYCLE / 2) { for(int j=0; j < NUM_LED; j++) { strip.setPixelColor(j, strip.Color(0, 0, 0)); } } blink = (blink == CYCLE) ? 0 : blink + 1; strip.show(); }
void sync_led(WiFiClient client) { int new_brightness = -1; while (client.available()) { String line = client.readStringUntil('\r'); int ix_magic_ld = line.indexOf("ld"); int ix_colon = line.indexOf(":"); if (ix_magic_ld != -1) { // Sync the LEDs int ix_led = line.substring(ix_magic_ld + 2, ix_colon).toInt(); // The RGB value are encoded in Base 10 (not base 16) with "zero" padding. // LD<LED_INDEX>: FFFFFF // | | | | // 0 2 C 2 String hexval = line.substring(ix_colon + 2); long value = strtol(hexval.c_str(), NULL, 16); int led_r = value >> 16; int led_g = value >> 8 & 0xFF; int led_b = value & 0xFF; pixels.setPixelColor(ix_led, pixels.Color(led_r, led_g, led_b)); pixels.show(); #if DEBUG Serial.print("LED#"); Serial.print(ix_led); Serial.print(" <rgb>:"); Serial.print(led_r); Serial.print(','); Serial.print(led_g); Serial.print(','); Serial.print(led_b); Serial.print('\n'); #endif } int ix_magic_br = line.indexOf("brightness"); if (ix_magic_br != -1) { // Update the Brightness Values new_brightness = line.substring(ix_colon + 2).toInt(); } }
void colorLookHere(uint32_t c, uint8_t wait){ uint32_t off = pixels.Color(0,0,0); uint16_t max_pixels = pixels.numPixels(); uint16_t half_max_pixels = max_pixels/2; uint8_t trailSize = 3; for(uint16_t i=0;i<=half_max_pixels;i++){ pixels.setPixelColor(half_max_pixels-i,c); pixels.setPixelColor(half_max_pixels+i,c); if((i-trailSize)>=0) pixels.setPixelColor(half_max_pixels+i-trailSize,off) ; if(i>=trailSize) pixels.setPixelColor(half_max_pixels-i+trailSize,off); pixels.show(); delay(wait); } }
void whiteOverRainbow(uint8_t wait, uint8_t whiteSpeed, uint8_t whiteLength ) { if(whiteLength >= strip.numPixels()) whiteLength = strip.numPixels() - 1; int head = whiteLength - 1; int tail = 0; int loops = 3; int loopNum = 0; static unsigned long lastTime = 0; while(true) { for(int j=0; j<256; j++) { for(uint16_t i=0; i<strip.numPixels(); i++) { if( (i >= tail && i <= head) || (tail > head && i >= tail) || (tail > head && i <= head) ) { strip.setPixelColor(i, strip.Color(0,0,0, 255 ) ); } else { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); } } if(millis() - lastTime > whiteSpeed) { head++; tail++; if(head == strip.numPixels()) { loopNum++; } lastTime = millis(); } if(loopNum == loops) return; head %= strip.numPixels(); tail %= strip.numPixels(); strip.show(); delay(wait); } } }
// Example for 7 pixels. // // X // X X // X X // X X // // pixel 3 is center and will be set to brightestVal. // There are 4 pixels on each side, sharing the center pixel // The values of the 4 pixels are assigned in such a way that an imagined 5th pixel on each side is 0. // So, for 4 pixels: // single step = 255 / 4 = 63 // steps for 7 pixels: 64, 127, 191, 255, 191, 127, 64 u32 calcTaperedSegmentPixel(u8 numSegmentPixels, u8 pos, u32 centerColor) { if (pos == 0 || pos == numSegmentPixels + 1) { return 0x000000; } u8 centerPos = numSegmentPixels / 2; u8 rCenter, gCenter, bCenter; colorPackedToScalar(&rCenter, &gCenter, &bCenter, centerColor); u8 rStep = rCenter / (centerPos + 1); u8 gStep = gCenter / (centerPos + 1); u8 bStep = bCenter / (centerPos + 1); u8 segmentIndex; if (pos <= centerPos) { segmentIndex = pos + 1; } else { segmentIndex = numSegmentPixels - pos; } return pixels.Color(rStep * segmentIndex, gStep * segmentIndex, bStep * segmentIndex); }
void update_pixel(int pixel, int r, int g, int b) { pixels.setPixelColor(pixel, pixels.Color(r, g, b)); pixels.show(); }
void fullWhite() { for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, strip.Color(0,0,0, 255 ) ); } strip.show(); }
void loop() { int runSec = 60; u16 numSegments; // Because I build the segment arrays in memory, I use both flash and sram for the segments and 5 is max for // what the ATtiny85 can handle with the current code. TODO: Try initializing the segments as const from literals. // That should cause them to stay in flash. const int maxSegments = 5; Segment segmentArr[maxSegments]; // Xmas pattern and twinkles. xmasRedGreenTwinkles(runSec); // Example of simple debugging of something that only breaks when running on the device. //#ifdef Arduino_h // debugMarker(); //#endif // Halloween 1 for (u8 i = 0; i < maxSegments; ++i) { segmentArr[i] = { 0xff6800, 30, 10 }; } smoothRunners(runSec, 10, segmentArr, maxSegments); clear(pixels.Color(0, 0, 0), 1000); // // Halloween 2 // for (u8 i = 0; i < maxSegments; ++i) { // segmentArr[i] = { 0xff6800, 30, 5 }; // } // smoothRunners(runSec, 10, segmentArr, maxSegments); // clear(pixels.Color(0, 0, 0), 1000); // Halloween 3 for (u8 i = 0; i < maxSegments; ++i) { segmentArr[i] = { 0xff6800, -60, 20 }; } smoothRunners(runSec, 10, segmentArr, maxSegments); clear(pixels.Color(0, 0, 0), 1000); // RGB, even, short segmentArr[0] = { 0xff0000, 60, 8 }; segmentArr[1] = { 0x00ff00, 60, 8 }; segmentArr[2] = { 0x0000ff, 60, 8 }; smoothRunners(runSec, 20, segmentArr, 3); clear(pixels.Color(0, 0, 0), 1000); // Took these out because I ran out of room on the ATtiny85. // // RGB, faster // segmentArr[0] = { 0xff0000, 120, 8 }; // segmentArr[1] = { 0x00ff00, 120, 8 }; // segmentArr[2] = { 0x0000ff, 120, 8 }; // smoothRunners(runSec, 20, segmentArr, 3); // clear(pixels.Color(0, 0, 0), 1000); // // Misc colors, many short segments, even spacing // segmentArr[0] = { 0xff0000, 120, 2 }; // segmentArr[1] = { 0x00ff00, 120, 2 }; // segmentArr[2] = { 0x0000ff, 120, 2 }; // segmentArr[3] = { 0xffff00, 120, 2 }; // segmentArr[4] = { 0x00ffff, 120, 2 }; // segmentArr[5] = { 0xff00ff, 120, 2 }; // segmentArr[6] = { 0xfff000, 120, 2 }; // segmentArr[7] = { 0x00fff0, 120, 2 }; // segmentArr[8] = { 0x000fff, 120, 2 }; // segmentArr[9] = { 0xfff000, 120, 2 }; // segmentArr[10] = { 0x0fff00, 120, 2 }; // segmentArr[11] = { 0x000fff, 120, 2 }; // smoothRunners(runSec, 20, segmentArr, 12); // clear(pixels.Color(0, 0, 0), 1000); // // Misc colors, many short segments, uneven spacing // segmentArr[0] = { 0xff0000, 261, 2 }; // segmentArr[1] = { 0x00ff00, 411, 2 }; // segmentArr[2] = { 0x0000ff, 111, 2 }; // segmentArr[3] = { 0xffff00, 125, 2 }; // segmentArr[4] = { 0x00ffff, 163, 2 }; // segmentArr[5] = { 0xff00ff, 188, 2 }; // segmentArr[6] = { 0xfff000, 199, 2 }; // segmentArr[7] = { 0x00fff0, 174, 2 }; // segmentArr[8] = { 0x000fff, 175, 2 }; // segmentArr[9] = { 0xfff000, 154, 2 }; // segmentArr[10] = { 0x0fff00, 123, 2 }; // segmentArr[11] = { 0x000fff, 100, 2 }; // smoothRunners(runSec, 20, segmentArr, 12); // clear(pixels.Color(0, 0, 0), 1000); // Randomly colored single dots going both directions. for (u8 i = 0; i < maxSegments; ++i) { segmentArr[i].color = random(0, 0xffffff); if (random(0, 1)) { segmentArr[i].speed = random(100, 200); } else { segmentArr[i].speed = random(-100, -200); } segmentArr[i].lengthPercent = 10; }; smoothRunners(runSec, 20, segmentArr, maxSegments); clear(pixels.Color(0, 0, 0), 1000); // even rainbow segmentArr[0] = { 0xff0000, 100, 100 }; segmentArr[1] = { 0x00ff00, 100, 100 }; segmentArr[2] = { 0x0000ff, 100, 100 }; smoothRunners(runSec, 20, segmentArr, 3); clear(pixels.Color(0, 0, 0), 1000); // uneven rainbow segmentArr[0] = { 0xff0000, -100, 100 }; segmentArr[1] = { 0x00ff00, -120, 100 }; segmentArr[2] = { 0x0000ff, -140, 100 }; smoothRunners(runSec, 20, segmentArr, 3); clear(pixels.Color(0, 0, 0), 1000); // darker rainbow segmentArr[0] = { 0xff0000, 60, 100 }; segmentArr[1] = { 0x00ff00, 70, 100 }; segmentArr[2] = { 0x0000ff, -80, 100 }; smoothRunners(runSec, 20, segmentArr, 3); clear(pixels.Color(0, 0, 0), 1000); // shimmer 1 segmentArr[0] = { 0xff0000, 123, 75 }; segmentArr[1] = { 0x00ff00, 456, 75 }; segmentArr[2] = { 0x0000ff, -789, 75 }; smoothRunners(runSec, 1, segmentArr, 3); clear(pixels.Color(0, 0, 0), 1000); // shimmer 2 segmentArr[0] = { 0xff0000, 1000, 75 }; segmentArr[1] = { 0x00ff00, 2000, 75 }; segmentArr[2] = { 0x0000ff, -1500, 75 }; smoothRunners(runSec, 1, segmentArr, 3); clear(pixels.Color(0, 0, 0), 1000); // // tweaked for 16 pixel grid. darker rainbow // segmentArr[0] = { 0xff0000, 60, 70 }; // segmentArr[1] = { 0x00ff00, 70, 70 }; // segmentArr[2] = { 0x0000ff, -80, 70 }; // smoothRunners(60*60, 20, segmentArr, 3); // clear(pixels.Color(0, 0, 0), 1000); // Show single colors clear(0xff0000, 3000); delay(1000); clear(0xffff00, 3000); delay(1000); clear(0x00ff00, 3000); delay(1000); clear(0x00ffff, 3000); delay(1000); clear(0x0000ff, 3000); delay(1000); clear(0xff00ff, 3000); delay(1000); clear(0xffffff, 3000); delay(1000); clear(0x000000, 3000); }
void setup(){ Serial.begin(B2_SERIAL0_BOUND); serial0Buffer = ""; Serial.println(""); // remove dust Serial.flush(); // read pcb type pinMode( PIN_B3_POWER_SENSOR, INPUT ); boolean power = digitalRead( PIN_B3_POWER_SENSOR ); if( power == LOW ){ Serial.println("-chyba 2"); }else{ Serial.println("-chyba 3"); } //pcb_type disableYZ(); if(pcb_type == 2 ){ // servos + magicled //pinMode(PIN_B2_SERVO_Y, INPUT+INPUT_PULLUP ); // nie pozwalaj na przypadkowe machanie na starcie //pinMode(PIN_B2_SERVO_Z, INPUT+INPUT_PULLUP ); // nie pozwalaj na przypadkowe machanie na starcie pinMode(PIN_B2_SELF_RESET, INPUT ); pinMode(PIN_B2_HALL_X, INPUT + INPUT_PULLUP ); pinMode(PIN_B2_HALL_Y, INPUT + INPUT_PULLUP ); pinMode(PIN_B2_WEIGHT, INPUT); }else if(pcb_type == 3 ){ // actuators + magicled if(YZ_INPUT_ON_DISABLE){ pinMode(PIN_B3_OUT_Y1, INPUT ); // stop Y pinMode(PIN_B3_OUT_Y2, INPUT ); // stop Y pinMode(PIN_B3_OUT_Z1, INPUT ); // stop Z pinMode(PIN_B3_OUT_Z2, INPUT ); // stop Z }else{ pinMode(PIN_B3_OUT_Y1, OUTPUT); pinMode(PIN_B3_OUT_Y2, OUTPUT); pinMode(PIN_B3_OUT_Z1, OUTPUT); pinMode(PIN_B3_OUT_Z2, OUTPUT); pinMode(PIN_B3_LIGHT, INPUT ); digitalWrite(PIN_B3_OUT_Y1, YZ_VALUE_ON_DISABLE); // stop Y digitalWrite(PIN_B3_OUT_Y2, YZ_VALUE_ON_DISABLE); digitalWrite(PIN_B3_OUT_Z1, YZ_VALUE_ON_DISABLE); // stop Z digitalWrite(PIN_B3_OUT_Z2, YZ_VALUE_ON_DISABLE); } //pinMode(PIN_B3_POWER_SENSOR, INPUT + INPUT_PULLUP ); pinMode(PIN_B3_POWER_SENSOR, INPUT ); } // blink led pinMode(PIN_B2_STEPPER_DIR, OUTPUT ); for(byte i =0; i<pcb_type;i++){ digitalWrite( PIN_B2_STEPPER_DIR, HIGH ); delay(100); digitalWrite( PIN_B2_STEPPER_DIR, LOW ); delay(200); } init_leds(); setupStepper(); unsigned long int color = bottom_panels.Color(0, 0, 20 ); set_all_leds(color); Serial.println(""); // remove dust Serial.flush(); Serial.println("BSTART"); if(pcb_type == 2 ){ // servos + magicled init_hallx(PIN_B2_HALL_X); }else if(pcb_type == 3 ){ init_hallx(PIN_B3_IN_X); } sendStats( true ); Serial.flush(); }
//********************** ORDER EACH PIN to set the requested value void go(int value1, int value2, int ctr, int ctg, int ctb, int flr, int flg, int flb, int frr, int frg, int frb, int blr, int blg, int blb, int brr, int brg, int brb){ /* Serial.println("**************************************"); Serial.print("CENTER : "); Serial.print(ctr); Serial.print(","); Serial.print(ctg); Serial.print(","); Serial.print(ctb); Serial.println(""); Serial.print("FRONT LEFT : "); Serial.print(flr); Serial.print(","); Serial.print(flg); Serial.print(","); Serial.print(flb); Serial.println(""); Serial.print("FRONT RIGHT : "); Serial.print(frr); Serial.print(","); Serial.print(frg); Serial.print(","); Serial.print(frb); Serial.println(""); Serial.print("BOT LEFT : "); Serial.print(blr); Serial.print(","); Serial.print(blg); Serial.print(","); Serial.print(blb); Serial.println(""); Serial.print("BOT RIGHT : "); Serial.print(brr); Serial.print(","); Serial.print(brg); Serial.print(","); Serial.println(brb); Serial.println("---------------------------------------"); */ if(value1<0) { digitalWrite(M1,LOW); analogWrite(E1, abs(value1)); } else{ digitalWrite(M1,HIGH); analogWrite(E1, abs(value1)); } if(value2<0) { digitalWrite(M2, LOW); analogWrite(E2, abs(value2)); } else{ digitalWrite(M2, HIGH); analogWrite(E2, abs(value2)); } //Invidual leds installed in the ears //analogWrite(RL1, ctr); //analogWrite(GL1, ctg); //analogWrite(BL1, ctb); //analogWrite(RL2, ctr); //analogWrite(GL2, ctg); //analogWrite(BL2, ctb); //Leds in series used in the ears ears.setPixelColor(0, pixels.Color(ctr,ctg,ctb)); ears.setPixelColor(1, pixels.Color(ctr,ctg,ctb)); ears.show(); int i; for (i=0; i<=3; i++) show_led_circle(i, frr,frg,frb); for (i=4; i<=9; i++) show_led_circle(i, brr,brg,brb); for (i=10; i<=15; i++) show_led_circle(i, blr,blg,blb); for (i=16; i<=20; i++) show_led_circle(i, flr,flg,flb); }
void SparkButton::allLedsOff(){ for(int i = 0; i<PIXEL_COUNT; i++){ ring.setPixelColor(i, ring.Color(0, 0, 0)); } ring.show(); }
void show_led_circle(int number, int r, int g, int b) { pixels.setPixelColor(number, pixels.Color(r,g,b)); pixels.show(); return; }
void showLed3AndHelloServo(int val){ Serial.println("led array was...."); Serial.println(val); Serial.println("ooooooooooooooooooo"); //strip.clear(); switch(val){ case 123://how colorWipe(strip.Color(255, 255, 255), 100); // white colorWipe(strip.Color(0, 0, 0), 100); // black colorWipe(strip.Color(255, 255, 255), 100); // white colorWipe(strip.Color(0, 0, 0), 100); // black colorWipe(strip.Color(255, 255, 255), 100); // white colorWipe(strip.Color(0, 0, 0), 100); // black //TODO Arduinoをリセット wdt_enable(WDTO_15MS); // turn on the WatchDog and don't stroke it. for(;;) { // do nothing and wait for the eventual... } break; case 1://サーボ準備 sv.attach(SERVO_PIN); Serial.println("servo attached...");//サーボの位置確認 break; case 2://サーボ回転 Serial.println(sv.read());//サーボの位置確認 moveServoShaft(0, 10); //delay(100);//TODO 不要 delay(1000); break; case 3://サーボ戻す Serial.println(sv.read());//サーボの位置確認 moveServoShaft(90, 10); //delay(100);//TODO 不要 delay(1000); break; case 4://サーボ終了 sv.detach(); break; case 0://クリア strip.clear(); break; case 555://白 case 5://白 colorWipe(strip.Color(255, 255, 255), 80); // white delay(3000); colorWipe(strip.Color(0, 0, 0), 100); // black break; case 666://紫 case 6://紫 colorWipe(strip.Color(105, 14, 102), 80); // purple delay(3000); colorWipe(strip.Color(0, 0, 0), 100); // black break; case 777://ピンク case 7://ピンク colorWipe(strip.Color(252, 18, 245), 80); // pink delay(3000); colorWipe(strip.Color(0, 0, 0), 100); // black break; case 888://レインボー? case 8://レインボー? rainbow(20); //rainbowCycle(80); break; case 999://黒 = 消す case 9://黒 = 消す colorWipe(strip.Color(0, 0, 0), 10); // black strip.clear(); break; case 100://予備 break; default: Serial.println("this is for servo"); colorWipe(strip.Color(0, 0, 0), 10); // black strip.clear(); break; } }
inline void init_leds(){ top_panels.begin(); bottom_panels.begin(); unsigned long int color = bottom_panels.Color(50, 0, 0 ); set_all_leds(color); }
void SparkButton::allLedsOn(uint8_t r, uint8_t g, uint8_t b){ for(int i = 0; i<PIXEL_COUNT; i++){ ring.setPixelColor(i, ring.Color(r, g, b)); } ring.show(); }
void loop() { mil = millis(); /* if( mil > when_next ){ // debug, mrygaj co 1 sek if( bitRead(sending, 0 ) ){ sendVal(0);} if( bitRead(sending, 1 ) ){ sendVal(1);} if( bitRead(sending, 2 ) ){ sendVal(2);} if( bitRead(sending, 3 ) ){ sendVal(3);} if( bitRead(sending, 4 ) ){ sendVal(4);} if( bitRead(sending, 5 ) ){ sendVal(5);} if( bitRead(sending, 6 ) ){ sendVal(6);} if( bitRead(sending, 7 ) ){ sendVal(7);} if( bitRead(sending, 8 ) ){ sendVal(8);} if(sending > 0){ Serial.println(); } when_next = mil + time; }*/ if( pcb_type == 3 && divider-- == 0 ){ boolean power = digitalRead( PIN_B3_POWER_SENSOR ); if( power == LOW ){ low_for_sure++; divider = PWR_SENSOR_DIV/2; // high speed checking if( low_for_sure > 90 ){ Serial.println("F0"); Serial.flush(); } }else{ low_for_sure = 0; divider = PWR_SENSOR_DIV; } } readHall(); step_servoY(); step_servoZ(); if(stepperIsReady){ sendStepperReady(); stepperIsReady = false; } /* if(pre--){ int16_t val1 = analogRead( PIN_B2_WEIGHT ); agv = (val1 + agv * 3)>>2; if( val1 - agv > 2 ){ byte r = abs(val1 - agv); bottom_panels.setPixelColor(0, r,0,0 ); bottom_panels.show(); }else if( val1 - agv < 2 ){ byte g = abs(val1 - agv); bottom_panels.setPixelColor(1, 0,g,0 ); bottom_panels.show(); } }*/ if( mil - last_android > MAX_TIME_WITHOUT_ANDROID ){ // no android last_android = mil; disableServosNow(); stepperX.disableOutputs(); // unsigned long int color = bottom_panels.Color(20, 0, 0 ); // set_all_leds(color); Serial.println("RRNOMASTER"); Serial.flush(); } if( servo_start_time != 0 ){ unsigned long period = millis() - servo_start_time; if( period > SERVO_MAX_TIME ){ // emergency stop disableServosNow(); servo_start_time = 0; unsigned long int color = bottom_panels.Color(255, 0, 0 ); set_all_leds(color); Serial.println("RRSERVOOFF"); Serial.flush(); } } if( mil - last_poke > POKE_ANDROID_TIME ){ // no android Serial.print("POKE "); Serial.println(String(mil)); Serial.flush(); last_poke = mil; } }