4. Gün – Todo – Düğme Millis Sıfırlanması –

Arduino hocam Abdulkadir ile yazdığım koda bir baktık. Hala çözemediğim birkaç sorun var.

ADD SPEC: Yukarı doğru zıplayan bir renkli palet.

En son bakalı 9 GÜN olmuş yazın zaman çabuk geçiyor, şunun başına her gün oturmayı alışkanlık haline getirsem daha iyi.

Bugün odaklanmak istediklerim

  1. Rainbow daki  flicker’ın nasıl üstesinden gelirim
  2. Potansı değiştirirken flicker in üstesinden nasıl gelirim
  3. Düğme ile Millis sıfırlamasını nasıl yaparım *
  4. Fastled ile Fade to black yerine fade to red nasıl yaparım

Fastled ile Fade to black yerine fade to red nasıl yaparım

Rainbow yerine kendi paletimi oluşturmam lazım.

CRGBPalette16 currentPalette;
CRGBPalette16 targetPalette;

Hiç beklemediğim bir anda Düğme ile Millis sıfırlamasını çözdüm:

//TGAN SIFIRLAMA DUGMESI
#DEFINE USE_GET_MILLISECOND_TIMER 1
//TGAN SIFIRLAMA DUGMESI

#INCLUDE "FASTLED.H" // FASTLED LIBRARY. PLEASE USE THE LATEST DEVELOPMENT VERSION.

#IF FASTLED_VERSION < 3001000
#ERROR "REQUIRES FASTLED 3.1 OR LATER; CHECK GITHUB FOR LATEST CODE."
#ENDIF

// FIXED DEFINITIONS CANNOT CHANGE ON THE FLY.
#DEFINE LED_DT 2 // DATA PIN TO CONNECT TO THE STRIP.
//#DEFINE LED_CK 11 // CLOCK PIN FOR WS2801 OR APA102.
#DEFINE COLOR_ORDER GRB // IT'S GRB FOR WS2812 AND GBR FOR APA102.
#DEFINE LED_TYPE WS2812B // USING APA102, WS2812, WS2801. DON'T FORGET TO CHANGE LEDS.ADDLEDS.
#DEFINE NUM_LEDS 300 // NUMBER OF LED'S.

// GLOBAL VARIABLES CAN BE CHANGED ON THE FLY.
UINT8_T MAX_BRIGHT = 128; // OVERALL BRIGHTNESS DEFINITION. IT CAN BE CHANGED ON THE FLY.

// TGAN POTENTIOMETER VALUE
INT POTPIN = A0;
INT POTVALUE = 0;
INT POTMAPPEDOUTPUTVALUE = 30;
// TGAN POTENTIOMETER

//TGAN SIFIRLAMA DUGMESI
CONST INT BUTTONPIN = 50;
INT BUTTONSTATE = 0;
//TGAN SIFIRLAMA DUGMESI

STRUCT CRGB LEDS[NUM_LEDS]; // INITIALIZE OUR LED ARRAY.

// COLOURS DEFINED FOR BELOW
LONG FIRSTVAL = 0XFF00FF;
CRGB RGBVAL(50,0,500);
CHSV HSVVAL(150,255,200);
UINT8_T STARTPOS = 0;

//TGAN SIFIRLAMA DUGMESI
UINT32_T RESETTIME;
//TGAN SIFIRLAMA DUGMESI

INT ENDPOS = NUM_LEDS-1;

UINT8_T THISHUE = 0;
UINT8_T DELTAHUE = 15;

VOID SETUP() {
//TGAN SIFIRLAMA DUGMESI
PINMODE(BUTTONPIN, INPUT);
//TGAN SIFIRLAMA DUGMESI

DELAY(1000); // POWER-UP SAFETY DELAY.
SERIAL.BEGIN(57600); // INITIALIZE SERIAL PORT FOR DEBUGGING.

LEDS.ADDLEDS<LED_TYPE, LED_DT, COLOR_ORDER>(LEDS, NUM_LEDS); // USE THIS FOR WS2812

FASTLED.SETBRIGHTNESS(MAX_BRIGHT);
SET_MAX_POWER_IN_VOLTS_AND_MILLIAMPS(5, 500); // FASTLED POWER MANAGEMENT SET AT 5V, 500MA.
} // SETUP()

////BPM CODE ////
//#DEFINE BPM 125
// TGAN POTENTIOMETER
//#DEFINE BPM OUTPUTVALUE
// TGAN POTENTIOMETER

#DEFINE DIMMEST 2
#DEFINE BRIGHTEST 255
///// BPM CODE END ////

UINT32_T GET_MILLISECOND_TIMER()
{
RETURN MILLIS()-RESETTIME ;
}
//TGAN SIFIRLAMA DUGMESI

VOID LOOP () { // SEVERAL DIFFERENT WAYS TO FILL THE STRAND WITH A SOLID COLOUR.
BUTTONSTATE = DIGITALREAD(BUTTONPIN);
IF (BUTTONSTATE == HIGH) {
RESETTIME = MILLIS() ;
} ;

POTVALUE = ANALOGREAD(POTPIN);
POTMAPPEDOUTPUTVALUE = MAP(POTVALUE, 0, 1023, 40, 145);

SERIAL.PRINTLN(POTVALUE);

////BPM CODE ////
// PUT SOMETHING VISIBLE ON THE LEDS
STATIC UINT16_T HUE16 = 0;
HUE16 += 9;
FILL_RAINBOW( LEDS, NUM_LEDS, HUE16 / 256, 3);

// SET THE BRIGHTNESS TO A SINE WAVE THAT MOVES WITH A BEAT
UINT8_T BRIGHT = BEATSIN8(POTMAPPEDOUTPUTVALUE, DIMMEST, BRIGHTEST);
FASTLED.SETBRIGHTNESS( BRIGHT );
FASTLED.SHOW();
///// BPM CODE END ////

SHOW_AT_MAX_BRIGHTNESS_FOR_POWER(); // POWER MANAGED DISPLAY

} // LOOP()

 

Leave a Reply