Day 2 – Beats, rainbow, smoothing

Rainbow BPM

Şurada bir Beats örneği verilmiş:

https://plus.google.com/112916219338292742137/posts/boFjiQNiMAz

BPM çok başarılı oldu rainbow ile:

#DEFINE BPM       60
#DEFINE DIMMEST   128
#DEFINE BRIGHTEST 255

VOID LOOP()
{
// 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( BPM, DIMMEST, BRIGHTEST);
FASTLED.SETBRIGHTNESS( BRIGHT );

FASTLED.SHOW();
}

 

Şimdi amaç BPM i bir düğme ile eşitlemek. Sorun şurada ki hem eşitlenmesi lazım hem de sıfırlanması. Aslında bir potansiyometre ile de ayarlayabilirim.

Önce potansiyometre ile deneyeceğim:

INT POTPIN = 7;
INT POTVALUE = 0;
INT OUTPUTVALUE = 0;

VOID SETUP() {
#DEFINE BPM OUTPUTVALUE

VOID LOOP() {
POTVALUE = ANALOGREAD(POTPIN);

 

Map de kullanmam gerekecek

map(value, fromLow, fromHigh, toLow, toHigh) *

OUTPUTVALUE = MAP(POTVALUE, 0, 1023, 60, 160);

 

Olmadı:

// TGAN POTENTIOMETER VALUE
INT POTPIN = 7;
INT POTVALUE = 0;
INT OUTPUTVALUE = 80;
// TGAN POTENTIOMETER

VOID SETUP() {
////BPM CODE ////
//#DEFINE BPM 125
// TGAN POTENTIOMETER
#DEFINE BPM OUTPUTVALUE
// TGAN POTENTIOMETER

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

VOID LOOP () { 
POTVALUE = ANALOGREAD(POTPIN);
OUTPUTVALUE = MAP(POTVALUE, 0, 1023, 60, 160);
UINT8_T BRIGHT = BEATSIN8( OUTPUTVALUE, DIMMEST, BRIGHTEST);
DELAY(2);

 

ne yaparsam yapayım output value da 60’da takılı kalıyor.

Potentiometreyi Analog pin e bağlamamışım. Duh. Şimdi çözüldü. Kod:

// TGAN POTENTIOMETER VALUE
INT POTPIN = A0;
INT POTVALUE = 0;
INT OUTPUTVALUE = 80;
// TGAN POTENTIOMETER

VOID SETUP() {
////BPM CODE ////
//#DEFINE BPM 125
// TGAN POTENTIOMETER
#DEFINE BPM OUTPUTVALUE
// TGAN POTENTIOMETER

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

VOID LOOP () { 
POTVALUE = ANALOGREAD(POTPIN);
OUTPUTVALUE = MAP(POTVALUE, 0, 1023, 60, 160);
UINT8_T BRIGHT = BEATSIN8( OUTPUTVALUE, DIMMEST, BRIGHTEST);
DELAY(2);

NOISE FILTERING

bir tek sorun potentiometre ile oynarken çarpıntı / flickr oluyor.

Bunu önce bir kapasitör ile çözmeyi deneyeceğim:

http://forum.arduino.cc/index.php?topic=213708.0

SMOOTHING

bir de şurada başka destekleyici bir çözüm var, bunu düğme ile BPM alırken de kullanabilirim:

https://www.arduino.cc/en/Tutorial/Smoothing

SIFIRLAMA DÜĞMESİ

Animasyondaki Sine Wave’i tepeden tekrar başlatacak bir düğmeye ihtiyacım var.

Pin:7 ye düğme bağladım
Düğmenin bir ayağına resistör
Resistörü 5V güce bağladım

INT INPIN = 7; // CHOOSE THE INPUT PIN (FOR A PUSHBUTTON)
INT VAL = 0; // VARIABLE FOR READING THE PIN STATUS

VOID SETUP() {
PINMODE(INPIN, INPUT); // DECLARE PUSHBUTTON AS INPUT

VOID LOOP(){
BUTTONVAL = DIGITALREAD(INPIN); // READ INPUT VALUE
IF (VAL == HIGH) { // CHECK IF THE INPUT IS HIGH (BUTTON RELEASED)
DIGITALWRITE(LEDPIN, LOW); // TURN LED OFF
} ELSE {
DIGITALWRITE(LEDPIN, HIGH); // TURN LED ON
}
}

 

….work in progress…

BEAT İLE DEĞİŞEN HUE

https://plus.googleapis.com/112916219338292742137/posts/boFjiQNiMAz

Leave a Reply