10. led Studio v3.2.0 + RGB + Buzzer (128x64) — Arduino Nano simulation

Final Projek led

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.2.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
#define RGB_EFFECT_COUNT 12

byte selectedEffect = 0;
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