mode tes — Arduino Nano simulation

tes program

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:
// - STANDBY: putar rotary langsung mengatur BRIGHTNESS
// - Klik 1x: masuk COLOR TEMP
// - COLOR TEMP: putar rotary memilih Kelvin
// - Klik 1x: SET warna + kembali STANDBY
// - Hold 1 detik: ON/OFF SEMUA SISTEM dari mode apa pun
//     OFF = LED putih mati + relay RGB mati
//     ON  = mode terakhir (putih / RGB) menyala kembali
// - Brightness: 0-100%
// - Color Temp: 3000-6500K
// - PWM 20 kHz
// - Anti-flicker
// - Soft Start
// - EEPROM
// - Buzzer: PUTAR / KLIK / ON-OFF
// - Buzzer D7
// - MENU TERSEMBUNYI: klik rotary 3x cepat dari STANDBY untuk setting suara
// =====================================================

#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

// Polaritas relay diatur di sini.
// Modul relay aktif-LOW: tukar nilainya (ON = LOW, OFF = HIGH).
#define RGB_RELAY_PIN A0
#define RGB_RELAY_ON  HIGH
#define RGB_RELAY_OFF LOW

#define LED_WARM 9
#define LED_COOL 10

// =====================================================
// 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_TEMP 1
#define MODE_SOUND_MENU 2

byte uiMode = MODE_STANDBY;

// Pilihan menu tersembunyi: 0 = Buzzer, 1 = RGB Relay
byte hiddenMenuItem = 0;

// Pilihan mode RGB (tersimpan di EEPROM).
// Relay fisik hanya menyala jika rgbRelayOn && lampOn.
bool rgbRelayOn = false;

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

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

// Nilai Kelvin sementara saat memilih warna.
int selectedColorTemp = 4500;

// =====================================================
// EEPROM
// RGB DIHAPUS SEPENUHNYA
// =====================================================

#define EEPROM_BRIGHTNESS 0
#define EEPROM_COLOR      2
#define EEPROM_LAMP       4
#define EEPROM_BUZZER     5
#define EEPROM_RGB_RELAY  7
#define EEPROM_MARKER     6

#define EEPROM_OK 124

bool settingsChanged = false;
unsigned long lastSettingChange = 0;
const unsigned long EEPROM_DELAY = 2000;

// =====================================================
// STANDBY / UI TIMEOUT
// ===============

More projects by aripaintco