9. led Studio v3.1.0 + RGB + Buzzer (128x64) — Arduino Nano simulation

Update minor penambahan mode buzzer dan menu buzzer untuk masuk menu klik 3x (efek lampu 5)

An interactive Arduino Nano circuit simulation you can run free in your browser on Velxio, by aripaintco.

Components

Sketch code

#include <Wire.h>
#include <EEPROM.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

// =====================================================
// ARISTUDIO - LED STUDIO CONTROLLER
// Arduino Nano + OLED 128x64 + Rotary Encoder
//
// OPERASI BARU:
// - STANDBY: putar rotary langsung mengatur BRIGHTNESS
// - Klik 1x: masuk menu COLOR TEMP
// - COLOR TEMP: putar rotary memilih Kelvin
// - Klik 1x: SET warna + kembali STANDBY
// - Hold 1 detik: ON/OFF lampu dari mode apa pun
// - Brightness: 0-100%
// - Color Temp: 3000-6500K
// - PWM 20 kHz
// - Anti-flicker
// - Soft Start
// - EEPROM
// - RGB: AUTO + PILIHAN EFEK + MANUAL PRESET WARNA
// - V3.1.0
// - BUZZER: PUTAR / KLIK / ON-OFF
// - Buzzer D7
// - MENU TERSEMBUNYI: klik rotary 3x cepat dari STANDBY untuk setting suara
// =====================================================


// =====================================================
// OLED
// =====================================================

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define OLED_ADDRESS 0x3C

Adafruit_SSD1306 display(
  SCREEN_WIDTH,
  SCREEN_HEIGHT,
  &Wire,
  OLED_RESET
);


// =====================================================
// PIN ARDUINO NANO
// =====================================================

#define ENCODER_CLK 2
#define ENCODER_DT  3
#define ENCODER_SW  4
#define BUZZER_PIN  7

#define LED_WARM 9
#define LED_COOL 10

// RGB LED - Arduino Nano PWM pins
#define LED_RED   5
#define LED_GREEN 6
#define LED_BLUE  11


// =====================================================
// PWM 20 kHz
// Arduino Nano ATmega328P
// Timer1 Phase Correct PWM, TOP = 400
// =====================================================

#define PWM_TOP 400


// =====================================================
// MODE UI
// =====================================================

#define MODE_STANDBY    0
#define MODE_COLOR_MENU 1
#define MODE_COLOR_TEMP 2
#define MODE_RGB_MENU   3
#define MODE_RGB_MANUAL 4  // RGB MIXER
#define MODE_RGB_AUTO   5
#define MODE_RGB_EFFECT 6
#define MODE_SOUND_MENU 7   // MENU TERSEMBUNYI BUZZER

byte uiMode = MODE_STANDBY;

#define COLOR_MODE_CT  0
#define COLOR_MODE_RGB 1

byte colorMode = COLOR_MODE_CT;
byte selectedColorMode = COLOR_MODE_CT;

int redValue = 255;
int greenValue = 255;
int blueValue = 255;
byte selectedRGB = 0;
byte rgbHue = 0;
byte savedRGBHue = 0;
byte selectedRGBColor = 0;
byte selectedRGBMenu = 0;   // 0=AUTO, 1=EFEK, 2=MANUAL
byte selectedEffect = 0;   // 0=RAINBOW, 1=FADE, 2=PARTY, 3=WIPE, 4=BREATH
byte activeEffect = 0;
unsigned long rgbEffectStart = 0;
bool rgbAuto = false;
bool rgbEffectActive = false;


// =====================================================
// SETTING
// =====================================================

int brightness = 5;
int colorTemp = 4500;
bool lampOn = true;
bool buzzerEnabled = true;

// Nilai Kelvin sementara saat memilih warna.
// Belum dianggap "set" sampai tombol diklik.
int selectedColorTemp = 4500;


More projects by aripaintco